P011 - Gra w Kółko i Krzyżyk dla dwóch graczy |
---|
Program uruchomiono w środowisku Bloodshed Dev-C++ 4.9.9.2 |
// I Liceum Ogólnokształcące // im. K. Brodzińskiego // w Tarnowie //-------------------------- // Koło informatyczne 2006/7 //-------------------------- // Program: P011 //-------------------------- #include <iostream> using namespace std; // Funkcja rysuje planszę gry w kółko i krzyżyk //--------------------------------------------- void plansza(char t[]) { for(int i = 1; i <= 9; i++) { cout << " " << t[i] << " "; if(i % 3) cout << "|"; else if(i != 9) cout << "\n---+---+---\n"; else cout << endl; } } // Funkcja zwraca true, jeśli nastąpiła // wygrana danego zawodnika //------------------------------------- bool wygrana(char t[], char g) { bool test; int i; test = false; for(i = 1; i <= 7; i += 3) test |= ((t[i] == g) && (t[i+1] == g) && (t[i+2] == g)); for(i = 1; i <= 3; i++) test |= ((t[i] == g) && (t[i+3] == g) && (t[i+6] == g)); test |= ((t[1] == g) && (t[5] == g) && (t[9] == g)); test |= ((t[3] == g) && (t[5] == g) && (t[7] == g)); if(test) { plansza(t); cout << "\nGRACZ " << g << " WYGRYWA!!!\n\n"; return true; } return false; } // Funkcja zwraca true, jeśli na planszy nie ma już // żadnego wolnego pola na ruch. //------------------------------------------------- bool remis(char t[]) { for(int i = 1; i <= 9; i++) if(t[i] == ' ') return false; plansza(t); cout << "\nREMIS !!!\n\n"; return true; } // Funkcja umożliwia ruch gracza // Po ruchu następuje zamiana gracza //------------------------------------ void ruch(char t[], char &gracz) { int r; plansza(t); cout << "\nGRACZ " << gracz << " : Twoj ruch : "; cin >> r; cout << "-----------------------\n\n"; if((r >= 1) && (r <= 9) && (t[r] == ' ')) t[r] = gracz; gracz = (gracz == 'O') ? 'X' : 'O'; } main() { char p[10],g,w; do { cout << "Gra w Kolko i Krzyzyk dla dwoch graczy\n" "======================================\n\n"; for(int i = 1; i <= 9; i++) p[i] = ' '; g = 'O'; while(!wygrana(p,'X') && !wygrana(p,'O') && !remis(p)) ruch(p,g); cout << "Jeszcze raz ? (T = TAK) : "; cin >> w; cout << "\n\n\n"; } while((w == 'T') || (w == 't')); } |
Widok okienka konsoli w uruchomionym programie |
---|
Gra w Kolko i Krzyzyk dla dwoch graczy ====================================== | | ---+---+--- | | ---+---+--- | | GRACZ O : Twoj ruch : 5 ----------------------- | | ---+---+--- | O | ---+---+--- | | GRACZ X : Twoj ruch : 1 ----------------------- X | | ---+---+--- | O | ---+---+--- | | GRACZ O : Twoj ruch : |
Ten program stanowi dalsze ćwiczenie poznanych elementów programowania w języku C++. Tutaj ćwiczymy przekazywanie parametrów do funkcji poprzez wartość i poprzez referencję - zwróć uwagę, iż tablice są standardowo przekazywane przez referencję. Dodatkowo uczymy się pracować z typem logicznym.
Otrzymany program posłuży nam jako punkt startowy do implementacji algorytmu MiniMax.
I Liceum Ogólnokształcące |
Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl
W artykułach serwisu są używane cookies. Jeśli nie chcesz ich otrzymywać,
zablokuj je w swojej przeglądarce.
Informacje dodatkowe