Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Krizic Kruzic 4.0 by Krofna
- 100% Zavrseno, radi
- */
- #include <iostream>
- #include <cctype>
- #include <time.h>
- #include <cstdlib>
- using namespace std;
- void PrintBoard(char board[]);
- void Reset(char board[], bool *isover, int *counter);
- void CheckWinCondition(char board[], bool *isover, int *counter);
- void moveSP(char board[], int *counter, int *input, bool *forever);
- void moveMP(char board[], int *counter, int *input, bool *forever, int *potez);
- void AI(char board[], int *counter, int *input, bool *forever);
- int main()
- {
- srand(time(NULL));
- char board[11];
- bool isover;
- bool forever = false; //Samo za kontroliranje while loopa
- int input;
- int counter;
- int potez = 1;
- int opcija;
- // Dodati do while dok ne upises 1-3
- cout << "Dobrodosao u Krizic Kruzic v3.3 by Krofna" << endl;
- cout << "Izaberi jednu od opcija: " << endl;
- cout << "1. Multiplayer " << endl;
- cout << "2. Singleplayer " << endl;
- cout << "3. Izlaz " << endl;
- cin >> opcija;
- switch(opcija){
- case 1:
- while(!forever)
- {
- Reset(board, &isover, &counter);
- for(potez=1; ;potez++)
- {
- PrintBoard(board);
- moveMP(board, &counter, &input, &forever, &potez);
- CheckWinCondition(board, &isover, &counter);
- if(isover) break;
- }
- cout << "Zelis li opet igrati?(1=da/0=ne)" << endl;
- cin >> forever;
- if(forever){
- forever = false;
- continue;
- }
- else return 0;
- }
- break;
- case 2:
- while(!forever)
- {
- Reset(board, &isover, &counter);
- while(!forever)
- {
- //Potez igraca
- PrintBoard(board);
- moveSP(board, &counter, &input, &forever);
- counter++;
- CheckWinCondition(board, &isover, &counter);
- if(isover) break;
- //Potez racunala
- PrintBoard(board);
- AI(board, &counter, &input, &forever);
- counter++;
- board[input] = 'O';
- CheckWinCondition(board, &isover, &counter);
- if(isover) break;
- }
- cout << "Zelis li opet igrati?(1=da/0=ne)" << endl;
- cin >> forever;
- if(forever){
- forever = false;
- continue;
- }
- else return 0;
- }
- break;
- case 3:
- return 0;
- break;
- }
- return 0;
- }
- void Reset(char board[], bool *isover, int *counter)
- {
- strcpy(board, "0123456789");
- *isover = false;
- *counter = 0;
- }
- void PrintBoard(char board[])
- {
- system("cls");
- cout << " " << board[1] << " | " << board[2] << " | " << board[3] << endl;
- cout << "---" << "+" << "---" << "+" << "---" << endl;
- cout << " " << board[4] << " | " << board[5] << " | " << board[6] << endl;
- cout << "---" << "+" << "---" << "+" << "---" << endl;
- cout << " " << board[7] << " | " << board[8] << " | " << board[9] << endl;
- }
- void moveSP(char board[], int *counter, int *input, bool *forever)
- {
- forever = false;
- while(!forever)
- {
- cin >> *input;
- if(!isalpha(board[*input])) break;
- }
- board[*input] = 'X';
- }
- void moveMP(char board[], int *counter, int *input, bool *forever, int *potez)
- {
- forever = false;
- while(!forever)
- {
- cin >> *input;
- if(!isalpha(board[*input])) break;
- }
- if(*potez % 2)
- board[*input] = 'X';
- else
- board[*input] = 'O';
- *counter += 1;
- }
- void CheckWinCondition(char board[], bool *isover, int *counter)
- {
- // ---
- // ---
- // ---
- if((board[1] == 'X' && board[2] == 'X' && board[3] == 'X') || (board[1] == 'O' && board[2] == 'O' && board[3] == 'O'))
- {
- PrintBoard(board);
- cout << board[1] << " je pobjedio!" << endl;
- *isover = true;
- }
- else if((board[4] == 'X' && board[5] == 'X' && board[6] == 'X') || (board[4] == 'O' && board[5] == 'O' && board[6] == 'O'))
- {
- PrintBoard(board);
- cout << board[4] << " je pobjedio!" << endl;
- *isover = true;
- }
- else if((board[7] == 'X' && board[8] == 'X' && board[9] == 'X') || (board[7] == 'O' && board[8] == 'O' && board[9] == 'O'))
- {
- PrintBoard(board);
- cout << board[7] << " je pobjedio!" << endl;
- *isover = true;
- }
- // |||
- // |||
- // |||
- else if((board[1] == 'X' && board[4] == 'X' && board[7] == 'X') || (board[1] == 'O' && board[4] == 'O' && board[7] == 'O'))
- {
- PrintBoard(board);
- cout << board[1] << " je pobjedio!" << endl;
- *isover = true;
- }
- else if((board[2] == 'X' && board[5] == 'X' && board[8] == 'X') || (board[2] == 'O' && board[5] == 'O' && board[8] == 'O'))
- {
- PrintBoard(board);
- cout << board[2] << " je pobjedio!" << endl;
- *isover = true;
- }
- else if((board[3] == 'X' && board[6] == 'X' && board[9] == 'X') || (board[3] == 'O' && board[6] == 'O' && board[9] == 'O'))
- {
- PrintBoard(board);
- cout << board[3] << " je pobjedio!" << endl;
- *isover = true;
- }
- // \ /
- // X
- // / \
- else if((board[1] == 'X' && board[5] == 'X' && board[9] == 'X') || (board[1] == 'O' && board[5] == 'O' && board[9] == 'O'))
- {
- PrintBoard(board);
- cout << board[1] << " je pobjedio!" << endl;
- *isover = true;
- }
- else if((board[3] == 'X' && board[5] == 'X' && board[7] == 'X') || (board[3] == 'O' && board[5] == 'O' && board[7] == 'O'))
- {
- PrintBoard(board);
- cout << board[3] << " je pobjedio!" << endl;
- *isover = true;
- }
- //9 poteza, a niko nije pobjedio
- else if(*counter == 9)
- {
- PrintBoard(board);
- cout << "Niko nije pobjedio..." << endl;
- *isover = true;
- }
- }
- void AI(char board[], int *counter, int *input, bool *forever)
- {
- forever = false;
- //Polje 1
- if(((board[2] == 'X' && board[3] == 'X') || (board[2] == 'O' && board[3] == 'O')) && (!isalpha(board[1])))
- {
- *input = 1;
- return;
- }
- else if(((board[5] == 'X' && board[9] == 'X') || (board[5] == 'O' && board[9] == 'O')) && (!isalpha(board[1])))
- {
- *input = 1;
- return;
- }
- else if(((board[4] == 'X' && board[7] == 'X') || (board[4] == 'O' && board[7] == 'O')) && (!isalpha(board[1])))
- {
- *input = 1;
- return;
- }
- //Polje 2
- else if(((board[1] == 'X' && board[3] == 'X') || (board[1] == 'O' && board[3] == 'O')) && (!isalpha(board[2])))
- {
- *input = 2;
- return;
- }
- else if(((board[5] == 'X' && board[8] == 'X') || (board[5] == 'O' && board[8] == 'O')) && (!isalpha(board[2])))
- {
- *input = 2;
- return;
- }
- //Polje 3
- else if(((board[1] == 'X' && board[2] == 'X') || (board[1] == 'O' && board[2] == 'O')) && (!isalpha(board[3])))
- {
- *input = 3;
- return;
- }
- else if(((board[7] == 'X' && board[5] == 'X') || (board[7] == 'O' && board[5] == 'O')) && (!isalpha(board[3])))
- {
- *input = 3;
- return;
- }
- else if(((board[6] == 'X' && board[9] == 'X') || (board[6] == 'O' && board[9] == 'O')) && (!isalpha(board[3])))
- {
- *input = 3;
- return;
- }
- //Polje 4
- else if(((board[1] == 'X' && board[7] == 'X') || (board[1] == 'O' && board[7] == 'O')) && (!isalpha(board[4])))
- {
- *input = 4;
- return;
- }
- else if(((board[5] == 'X' && board[6] == 'X') || (board[5] == 'O' && board[6] == 'O')) && (!isalpha(board[4])))
- {
- *input = 4;
- return;
- }
- //Polje 5
- else if(((board[1] == 'X' && board[9] == 'X') || (board[1] == 'O' && board[9] == 'O')) && (!isalpha(board[5])))
- {
- *input = 5;
- return;
- }
- else if(((board[3] == 'X' && board[7] == 'X') || (board[3] == 'O' && board[7] == 'O')) && (!isalpha(board[5])))
- {
- *input = 5;
- return;
- }
- else if(((board[4] == 'X' && board[6] == 'X') || (board[4] == 'O' && board[6] == 'O')) && (!isalpha(board[5])))
- {
- *input = 5;
- return;
- }
- else if(((board[2] == 'X' && board[8] == 'X') || (board[2] == 'O' && board[8] == 'O')) && (!isalpha(board[5])))
- {
- *input = 5;
- return;
- }
- //Polje 6
- else if(((board[3] == 'X' && board[9] == 'X') || (board[3] == 'O' && board[9] == 'O')) && (!isalpha(board[6])))
- {
- *input = 6;
- return;
- }
- else if(((board[4] == 'X' && board[5] == 'X') || (board[4] == 'O' && board[5] == 'O')) && (!isalpha(board[6])))
- {
- *input = 6;
- return;
- }
- //Polje 7
- else if(((board[1] == 'X' && board[4] == 'X') || (board[1] == 'O' && board[4] == 'O')) && (!isalpha(board[7])))
- {
- *input = 7;
- return;
- }
- else if(((board[5] == 'X' && board[3] == 'X') || (board[5] == 'O' && board[3] == 'O')) && (!isalpha(board[7])))
- {
- *input = 7;
- return;
- }
- else if(((board[8] == 'X' && board[9] == 'X') || (board[2] == 'O' && board[8] == 'O')) && (!isalpha(board[7])))
- {
- *input = 7;
- return;
- }
- //Polje 8
- else if(((board[2] == 'X' && board[5] == 'X') || (board[2] == 'O' && board[5] == 'O')) && (!isalpha(board[8])))
- {
- *input = 8;
- return;
- }
- else if(((board[7] == 'X' && board[9] == 'X') || (board[7] == 'O' && board[9] == 'O')) && (!isalpha(board[8])))
- {
- *input = 8;
- return;
- }
- //Polje 9
- else if(((board[3] == 'X' && board[6] == 'X') || (board[3] == 'O' && board[6] == 'O')) && (!isalpha(board[9])))
- {
- *input = 9;
- return;
- }
- else if(((board[1] == 'X' && board[5] == 'X') || (board[1] == 'O' && board[5] == 'O')) && (!isalpha(board[9])))
- {
- *input = 9;
- return;
- }
- else if(((board[7] == 'X' && board[8] == 'X') || (board[7] == 'O' && board[8] == 'O')) && (!isalpha(board[9])))
- {
- *input = 9;
- return;
- }
- //Nasumicni potez
- else{
- while(!forever)
- {
- *input = rand() % 10;
- if(!isalpha(board[*input])) break;
- }
- }
- }
Add Comment
Please, Sign In to add comment