#include "stdafx.h" #include #include #include // fill_n za popunjavanje niza using namespace std; // funkcija vraca prikaz polja 9x9 void prikaz(char polje[]) { for (int i = 0; i < 9; i++) { if ((i + 1) % 3 != 0) { cout << polje[i] << "\t"; } else { cout << polje[i] << endl; } } } // unos znaka a u trenutno polje void unos(char a, char polje[]) { cout << a << ": "; int b; cin >> b; for (int i = 0; i < 9; i++) { if (b == i + 1) { if (a == 'x') { polje[i] = 'x'; } if (a == 'o') { polje[i] = 'o'; } } } system("cls"); // clear screen prikaz(polje); // prikaz polja nakon unosa znaka a } // funkcija ispituje postoje li 3 ista znaka u bilo kojem redu, stupcu ili dijagonali bool test(char polje[]) { bool kraj; // dijagonale: int j = 4; for (int i = 0; i <= 2; i+=2) { if ((polje[i] == polje[i + j]) && (polje[i] == polje[i + 2 * j])) { if (polje[i] != '-') { kraj = true; return kraj; } } else { kraj = false; j = j - 2; } } //// redovi: for (int i = 0; i <= 2; i++) { if ((polje[i * 3] == polje[i * 3 + 1]) && (polje[i * 3] == polje[i * 3 + 2])) { if (polje[i] != '-') { kraj = true; return kraj; } } else { kraj = false; break; } } // stupci: for (int i = 0; i < 3; i++) { if ((polje[i] == polje[i + 3]) && (polje[i] == polje[i + 6])) { if (polje[i] != '-') { kraj = true; return kraj; } } else { kraj = false; break; } } return kraj; } int main() { bool ponovo = true; while (ponovo == true) { // petlja za ponavljanje igre char polje[9]; // polje fill_n(polje, 9, '-'); // popunjavanje s '-' char oznaka[2] = {'x', 'o'}; char odg; cout << "Tko igra prvi (x ili o)? "; cin >> odg; if (odg == 'o') { char temp = oznaka[0]; oznaka[0] = oznaka[1]; oznaka[1] = temp; } else if (odg == 'x') { char oznaka[2] = { 'x', 'o' }; } prikaz(polje); // prvi prikaz cistog polja bool prob; // varijabla koja poprima vrijednost funkcije test (T/F) int brojac = 0; // sluzi za prikaz izjednacene igre do { for (int i = 0; i < 2; i++) { unos(oznaka[i], polje); prob = test(polje); brojac++; if (prob == true) { cout << "pobjeda! " << oznaka[i] << endl; break; } if (brojac == 9) { cout << "nema pobjednika :(" << endl; goto theEnd; } } } while (prob == false); theEnd: cout << "Odigrati ponovo? "; cin >> ponovo; system("cls"); } system("pause"); return 0; }