Imię i Nazwisko | Łukasz Bajek | Grupa | 15 |
Prowadzący | mgr inż. Bartłomiej Fajdek |
Tematem projektu jest napisanie gry w kółko i krzyżyk. Program umożliwia grę w kółko i krzyżyk dla dwóch osób oraz komputera na planszy o zadanym rozmiarze. Liczba znaków, jakie trzeba mieć w linii, aby wygrać, zależy od rozmiaru planszy: trzy znaki w rzędzie dla planszy małej( 3x3) i pięć znaków w rzędzie dla planszy dużej (większej lub równej 5x5). Istnieje możliwość zapisania wyświetlenia rankingu oraz statystyk graczy.
struct Gracz
{
string nazwa;
char znak;
bool wygrana;
};
struct Osoba_ranking
{
string nazwa;
int ilewygral;
int ileprzegral;
int ileremis;
};
Algorytm przeprowadzenia gry dla dwóch graczy.
Pliki nagłówkowe:
Interfejs.h - zawiera deklaracje funkcji wyświetlających informacje na konsoli dla użytkownika oraz umożliwiające mu wprowadzania danych
Operacje plikowe.h – zawiera deklaracje funkcji zarządzającymi operacjami na plikach
Plansza.h –zawiera deklaracje funkcji zarządzającymi planszą do gry
Rozgrywka.h –zawiera deklaracje funkcji odpowiadających za ruchy graczy oraz komputera i przeprowadzające rozgrywkę.
Szczegółowe omówienie funkcji w punkcie poniżej.
Pliki źródłowe:
Interfejs –zawiera definicje funkcji:
int menu (); wyświetla menu początkowe i pozwala wybrać w nim opcje
string powtórz(); - wyświetla zapytanie o powtórzenie pracy programu, odbiera i przekazuje odpowiedź
void blad_pliku (int licznk); - wyświetla informacje o wystąpieniu błędu przy otwieraniu pliku i wyświetla ilość tych błędów.
void wyczyszczono (); wyświetla komunikat o pomyślnym wywczyszczeniu zawartości pliku
void zly_wiersz();-wyświetla komunikat o wprowadzeniu złego indeksu wiersza;
void zla_kolumna (); -wyświetla komunikat o wprowadzeniu złego indeksu kolumny;
void zajęte_pole ();-wyświetla komunikat o tym, że pole, do którego się chce wstawić znak jest już zajęte;
void podaj wiersz ();- wyświetla komunikat proszący o podanie odpowiedniego numeru wiersza do wstawienia znaku
void podaj koluumne (); -wyświetla komunikat proszący o podanie odpowiedniego numeru kolumny do wstawienia znaku
string podaj_nazwe (); - odpowiada za wprowadzenie nazwy gracza
void nowa_linijka (); opuszcza linijkę przy wyświetlaniu na konsoli
void kto_jest_kto (string nazwa1, char znak1, string nazwa2, char znak 2);- podaje wyniki po losowaniu który gracz zaczyna i któremu został przyorządkowany jaki znak
int male_menu() – wyświetla menu wyboru wielkości planszy i przekazuje odpowiedź użytkownika
void zla_liczba_wierszy(); - wyświetla komunikat o wprowadzeniu złej liczby wierszy przy tworzeniu dużej planszy
void zla_liczba_kolumn(); -wyświetla komunikat o wprowadzeniu złej liczby kolumn przy tworzeniu dużej planszy
void ruch_gracza (string nazwa); - informuje, któremu graczowi obecnie przysługuje ruch
void remis(); - informuje o zremisowaniu partii przez graczy.
void wygrana(string nazwa); - informuje o tym, który gracz wygrał daną partię
string czy_zapisać (); - wyświetla zapytanie o to czy zapisać informacje o partii i przechowuje odpowiedź
int podaj_liczbe _wierszy();- wyświetla zapytanie o liczbę wierszy przy tworzeniu dużej planszy i przechowuje wynik
int podaj_liczbe _kolumn(); -wyświetla zapytanie o liczbę kolumn przy tworzeniu dużej planszy i przechowuje wynik
Operacje plikowe.h .cpp –zawiera definicje funkcji:
void zapisz_historie (Gracz a, Gracz b); - pozwala zapisać do pliku „Historia.txt” informacje o ostatniej rozgrywce czyli: kto z kim grał, kiedy i kto wygrał.
void zapisz_ranking (Gracz a, Gracz b); – pozwala zapisać do pliku „Ranking.txt” informacje o tym, ile razy dany gracz wygrał, przegrał, zremisował.
void wyswietl_historie (); - wyświetla zawartość pliku „Historia.txt”.
void wyświetl_ranking (); - wyświetla zawartość pliku „Ranking.txt”.
void usun_histori (); - usuwa zawartość pliku „Historia.txt”.
void usun_ranking (); - usuwa zawartość pliku „Ranking.txt”.
Ponadto obecny plik źródłowy zawiera definicje struktur opisanych w punkcie 4.
Plansza.cpp–zawiera definicje funkcji:
char **tworz_plansze (int w, int k); – tworzy tablice dynamiczną dwuwymiarową znaków na której odbywa się gra
void usun_plansze (char **tab, int w);– usuwa plansze storzona w funkcji tworz plansze
void rysuj (int w, int k, char **tab) – rysuje plansze na konsoli.
bool spr_czy koniec_duza (int w, int k, char **tab); - sprawdza na planszy o wielkości, co najmniej 5x5 jest pięć identycznych znaków w rzędzie ( pion, poziom i oba skosy) i zwraca odpowiednią wartość logiczną.
bool spr_czy_koniec_mala (char **tab) – sprawdza czy na planszy o wielkości 3x3 są trzy identyczne znaki w rzędzie (pion, poziomi oba skosy) i zwraca odpowiednią wartość logiczną.
Rozgrywka.cpp–zawiera definicje funkcji:
void ruch_czlowieka (char **tab, int w, int k, char znak); - wstawia znak przypisany graczowi do miejsca w tablicy, które on wskazał.
void ruch_komputera (char **tab, char znak, int licznik); - komputer oblicza gdzie na planszy jest dla niego najkorzystniejszy ruch na planszy 3x3 i wstawia tam znak.
void gra_z_czlowiekiem (); - przeprowadza rozgrywkę dla dwóch graczy
void gra_z_komputerem (); - przeprowadza rozgrywkę dla gracza i komputera
void komputer_duzy (char **tab, int w, int k, char znak1, char znak2); - pozwala komputerowi wykonać ruch na planszy 5x5 i większej.