Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- 100% Finished
- TODO: Should I add impossible AI?
- */
- #include "Game.h"
- void Game::AIMove()
- {
- int NoCheat = counter;
- if(__Level >= Medium)
- {
- //Polje 1
- if((board[2] == 'O' && board[3] == 'O') && (!isalpha(board[1])))
- DrawO(50, 50, 1);
- else if((board[5] == 'O' && board[9] == 'O') && (!isalpha(board[1])))
- DrawO(50, 50, 1);
- else if((board[4] == 'O' && board[7] == 'O') && (!isalpha(board[1])))
- DrawO(50, 50, 1);
- //Polje 2
- else if((board[1] == 'O' && board[3] == 'O') && (!isalpha(board[2])))
- DrawO(150, 50, 2);
- else if((board[5] == 'O' && board[8] == 'O') && (!isalpha(board[2])))
- DrawO(150, 50, 2);
- //Polje 3
- else if((board[1] == 'O' && board[2] == 'O') && (!isalpha(board[3])))
- DrawO(250, 50, 3);
- else if((board[7] == 'O' && board[5] == 'O') && (!isalpha(board[3])))
- DrawO(250, 50, 3);
- else if((board[6] == 'O' && board[9] == 'O') && (!isalpha(board[3])))
- DrawO(250, 50, 3);
- //Polje 4
- else if((board[1] == 'O' && board[7] == 'O') && (!isalpha(board[4])))
- DrawO(50, 150, 4);
- else if((board[5] == 'O' && board[6] == 'O') && (!isalpha(board[4])))
- DrawO(50, 150, 4);
- //Polje 5
- else if((board[1] == 'O' && board[9] == 'O') && (!isalpha(board[5])))
- DrawO(150, 150, 5);
- else if((board[3] == 'O' && board[7] == 'O') && (!isalpha(board[5])))
- DrawO(150, 150, 5);
- else if((board[4] == 'O' && board[6] == 'O') && (!isalpha(board[5])))
- DrawO(150, 150, 5);
- else if((board[2] == 'O' && board[8] == 'O') && (!isalpha(board[5])))
- DrawO(150, 150, 5);
- //Polje 6
- else if((board[3] == 'O' && board[9] == 'O') && (!isalpha(board[6])))
- DrawO(250, 150, 6);
- else if((board[4] == 'O' && board[5] == 'O') && (!isalpha(board[6])))
- DrawO(250, 150, 6);
- //Polje 7
- else if((board[1] == 'O' && board[4] == 'O') && (!isalpha(board[7])))
- DrawO(50, 250, 7);
- else if((board[5] == 'O' && board[3] == 'O') && (!isalpha(board[7])))
- DrawO(50, 250, 7);
- else if((board[9] == 'O' && board[8] == 'O') && (!isalpha(board[7])))
- DrawO(50, 250, 7);
- //Polje 8
- else if((board[2] == 'O' && board[5] == 'O') && (!isalpha(board[8])))
- DrawO(150, 250, 8);
- else if((board[7] == 'O' && board[9] == 'O') && (!isalpha(board[8])))
- DrawO(150, 250, 8);
- //Polje 9
- else if((board[3] == 'O' && board[6] == 'O') && (!isalpha(board[9])))
- DrawO(250, 250, 9);
- else if((board[1] == 'O' && board[5] == 'O') && (!isalpha(board[9])))
- DrawO(250, 250, 9);
- else if((board[7] == 'O' && board[8] == 'O') && (!isalpha(board[9])))
- DrawO(250, 250, 9);
- }
- //Anticheat
- if(counter>NoCheat)
- return;
- if(__Level >= Medium)
- {
- //Polje 1
- if((board[2] == 'X' && board[3] == 'X') && (!isalpha(board[1])))
- DrawO(50, 50, 1);
- else if((board[5] == 'X' && board[9] == 'X') && (!isalpha(board[1])))
- DrawO(50, 50, 1);
- else if((board[4] == 'X' && board[7] == 'X') && (!isalpha(board[1])))
- DrawO(50, 50, 1);
- //Polje 2
- else if((board[1] == 'X' && board[3] == 'X') && (!isalpha(board[2])))
- DrawO(150, 50, 2);
- else if((board[5] == 'X' && board[8] == 'X') && (!isalpha(board[2])))
- DrawO(150, 50, 2);
- //Polje 3
- else if((board[1] == 'X' && board[2] == 'X') && (!isalpha(board[3])))
- DrawO(250, 50, 3);
- else if((board[7] == 'X' && board[5] == 'X') && (!isalpha(board[3])))
- DrawO(250, 50, 3);
- else if((board[6] == 'X' && board[9] == 'X') && (!isalpha(board[3])))
- DrawO(250, 50, 3);
- //Polje 4
- else if((board[1] == 'X' && board[7] == 'X') && (!isalpha(board[4])))
- DrawO(50, 150, 4);
- else if((board[5] == 'X' && board[6] == 'X') && (!isalpha(board[4])))
- DrawO(50, 150, 4);
- //Polje 5
- else if((board[1] == 'X' && board[9] == 'X') && (!isalpha(board[5])))
- DrawO(150, 150, 5);
- else if((board[3] == 'X' && board[7] == 'X') && (!isalpha(board[5])))
- DrawO(150, 150, 5);
- else if((board[4] == 'X' && board[6] == 'X') && (!isalpha(board[5])))
- DrawO(150, 150, 5);
- else if((board[2] == 'X' && board[8] == 'X') && (!isalpha(board[5])))
- DrawO(150, 150, 5);
- //Polje 6
- else if((board[3] == 'X' && board[9] == 'X') && (!isalpha(board[6])))
- DrawO(250, 150, 6);
- else if((board[4] == 'X' && board[5] == 'X') && (!isalpha(board[6])))
- DrawO(250, 150, 6);
- //Polje 7
- else if((board[1] == 'X' && board[4] == 'X') && (!isalpha(board[7])))
- DrawO(50, 250, 7);
- else if((board[5] == 'X' && board[3] == 'X') && (!isalpha(board[7])))
- DrawO(50, 250, 7);
- else if((board[8] == 'X' && board[9] == 'X') && (!isalpha(board[7])))
- DrawO(50, 250, 7);
- //Polje 8
- else if((board[2] == 'X' && board[5] == 'X') && (!isalpha(board[8])))
- DrawO(150, 250, 8);
- else if((board[7] == 'X' && board[9] == 'X') && (!isalpha(board[8])))
- DrawO(150, 250, 8);
- //Polje 9
- else if((board[3] == 'X' && board[6] == 'X') && (!isalpha(board[9])))
- DrawO(250, 250, 9);
- else if((board[1] == 'X' && board[5] == 'X') && (!isalpha(board[9])))
- DrawO(250, 250, 9);
- else if((board[7] == 'X' && board[8] == 'X') && (!isalpha(board[9])))
- DrawO(250, 250, 9);
- }
- //Anticheat
- if(counter>NoCheat)
- return;
- if(__Level >= Hard)
- {
- if(board[5] == '0')
- DrawO(150, 150, 5);
- else if(board[5] == 'O' && board[1] == 'X' && board[9] == 'X')
- {
- switch(rand() % 4)
- {
- case 0:
- if(board[4] == '0')
- {
- DrawO(50, 150, 4);
- break;
- }
- case 1:
- if(board[6] == '0')
- {
- DrawO(250, 150, 6);
- break;
- }
- case 2:
- if(board[8] == '0')
- {
- DrawO(150, 250, 8);
- break;
- }
- case 3:
- if(board[2] == '0')
- {
- DrawO(150, 50, 2);
- break;
- }
- }
- }
- }
- //Anticheat
- if(counter>NoCheat)
- return;
- //Random move
- int randAIMove;
- while(true)
- {
- randAIMove = rand()%(9-1+1) + 1;
- if(!isalpha(board[randAIMove])) break;
- }
- }
Add Comment
Please, Sign In to add comment