Commit 38501062 by Patryk Czarnik

Kółko i krzyżyk - werja na koniec zajęć

parent 3d2827b3
......@@ -8,27 +8,124 @@ using namespace std;
// W planszy pamiętamy znak ' ', jeśli pole jest wolne,
// a znaki 'O' lub 'X' jako kółko i krzyżyk
char plansza[3][3];
string imie[2];
char znak[2] = {'O', 'X'};
enum StanGry {
GRA_TRWA, REMIS, WYGRAL_O, WYGRAL_X
};
StanGry stan = GRA_TRWA;
void inicjuj_plansze() {
for(int i=0; i<3; i++) {
for(int j=0; j<3; j++) {
plansza[i][j] = 'X';
plansza[i][j] = ' ';
}
}
}
void wypisz_plansze() {
for(int i=0; i<3; i++) {
if(i > 0) {
cout << "---+---+---\n";
}
for(int j=0; j<3; j++) {
cout << plansza[i][j];
if(j > 0) {
cout << " |";
}
cout << " " << plansza[i][j];
}
cout << "\n";
cout << " \n";
}
}
bool ustaw_pole(char ruch, char co_ustawic) {
int x, y;
switch(ruch) {
case 'q': x=0; y=0; break;
case 'w': x=0; y=1; break;
case 'e': x=0; y=2; break;
case 'a': x=1; y=0; break;
case 's': x=1; y=1; break;
case 'd': x=1; y=2; break;
case 'z': x=2; y=0; break;
case 'x': x=2; y=1; break;
case 'c': x=2; y=2; break;
default:
cout << "Nieznany ruch\n";
return false;
}
if(plansza[x][y] != ' ') {
cout << "Pole zajęte\n";
return false;
}
plansza[x][y] = co_ustawic;
return true;
}
StanGry sprawdz_sytuacje() {
if( plansza[0][0] == 'O' && plansza[0][1] == 'O' && plansza[0][2] == 'O'
|| plansza[1][0] == 'O' && plansza[1][1] == 'O' && plansza[1][2] == 'O'
|| plansza[2][0] == 'O' && plansza[2][1] == 'O' && plansza[2][2] == 'O'
|| plansza[0][0] == 'O' && plansza[1][0] == 'O' && plansza[2][0] == 'O'
|| plansza[0][1] == 'O' && plansza[1][1] == 'O' && plansza[2][1] == 'O'
|| plansza[0][2] == 'O' && plansza[1][2] == 'O' && plansza[2][2] == 'O'
|| plansza[0][0] == 'O' && plansza[1][1] == 'O' && plansza[2][2] == 'O'
|| plansza[0][2] == 'O' && plansza[1][1] == 'O' && plansza[2][0] == 'O'
) {
return WYGRAL_O;
}
if( plansza[0][0] == 'X' && plansza[0][1] == 'X' && plansza[0][2] == 'X'
|| plansza[1][0] == 'X' && plansza[1][1] == 'X' && plansza[1][2] == 'X'
|| plansza[2][0] == 'X' && plansza[2][1] == 'X' && plansza[2][2] == 'X'
|| plansza[0][0] == 'X' && plansza[1][0] == 'X' && plansza[2][0] == 'X'
|| plansza[0][1] == 'X' && plansza[1][1] == 'X' && plansza[2][1] == 'X'
|| plansza[0][2] == 'X' && plansza[1][2] == 'X' && plansza[2][2] == 'X'
|| plansza[0][0] == 'X' && plansza[1][1] == 'X' && plansza[2][2] == 'X'
|| plansza[0][2] == 'X' && plansza[1][1] == 'X' && plansza[2][0] == 'X'
) {
return WYGRAL_X;
}
if( plansza[0][0] != ' ' && plansza[0][1] != ' ' && plansza[0][2] != ' '
&& plansza[1][0] != ' ' && plansza[1][1] != ' ' && plansza[1][2] != ' '
&& plansza[2][0] != ' ' && plansza[2][1] != ' ' && plansza[2][2] != ' ') {
return REMIS;
}
return GRA_TRWA;
}
int main() {
cout << "Podaj imię pierwszego gracza: " << flush;
cin >> imie[0];
cout << "Podaj imię drugiego gracza: " << flush;
cin >> imie[1];
inicjuj_plansze();
wypisz_plansze();
int kto = 0;
char ruch;
do {
cout << imie[kto] << ", podaj swój ruch: " << flush;
cin >> ruch;
if(!ustaw_pole(ruch, znak[kto])) {
continue;
}
wypisz_plansze();
stan = sprawdz_sytuacje();
kto = (kto+1)%2; // to naprzemiennie zmienia wartość zmiennej między 0 a 1
} while(stan == GRA_TRWA);
switch(stan) {
case WYGRAL_O:
cout << "Wygrało kółko, czyli " << imie[0] << "!\n";
break;
case WYGRAL_X:
cout << "Wygrał krzyżyk, czyli " << imie[1] << "!\n";
break;
case REMIS:
cout << "Remis\n";
break;
}
return 0;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment