Guest User

Untitled

a guest
Jul 22nd, 2018
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.09 KB | None | 0 0
  1. /*
  2. 100% Finished
  3. TODO: Should I add impossible AI?
  4. */
  5. #include "Game.h"
  6.  
  7. void Game::AIMove()
  8. {
  9.     int NoCheat = counter;
  10.  
  11.     if(__Level >= Medium)
  12.     {
  13.     //Polje 1
  14.     if((board[2] == 'O' && board[3] == 'O') && (!isalpha(board[1])))
  15.         DrawO(50, 50, 1);
  16.     else if((board[5] == 'O' && board[9] == 'O') && (!isalpha(board[1])))
  17.         DrawO(50, 50, 1);
  18.     else if((board[4] == 'O' && board[7] == 'O') && (!isalpha(board[1])))
  19.         DrawO(50, 50, 1);
  20.  
  21.     //Polje 2
  22.     else if((board[1] == 'O' && board[3] == 'O') && (!isalpha(board[2])))
  23.         DrawO(150, 50, 2);
  24.     else if((board[5] == 'O' && board[8] == 'O') && (!isalpha(board[2])))
  25.         DrawO(150, 50, 2);
  26.  
  27.     //Polje 3
  28.     else if((board[1] == 'O' && board[2] == 'O') && (!isalpha(board[3])))
  29.         DrawO(250, 50, 3);
  30.     else if((board[7] == 'O' && board[5] == 'O') && (!isalpha(board[3])))
  31.         DrawO(250, 50, 3);
  32.     else if((board[6] == 'O' && board[9] == 'O') && (!isalpha(board[3])))
  33.         DrawO(250, 50, 3);
  34.  
  35.     //Polje 4
  36.     else if((board[1] == 'O' && board[7] == 'O') && (!isalpha(board[4])))
  37.         DrawO(50, 150, 4);
  38.     else if((board[5] == 'O' && board[6] == 'O') && (!isalpha(board[4])))
  39.         DrawO(50, 150, 4);
  40.  
  41.     //Polje 5
  42.     else if((board[1] == 'O' && board[9] == 'O') && (!isalpha(board[5])))
  43.         DrawO(150, 150, 5);
  44.     else if((board[3] == 'O' && board[7] == 'O') && (!isalpha(board[5])))
  45.         DrawO(150, 150, 5);
  46.     else if((board[4] == 'O' && board[6] == 'O') && (!isalpha(board[5])))
  47.         DrawO(150, 150, 5);
  48.     else if((board[2] == 'O' && board[8] == 'O') && (!isalpha(board[5])))
  49.         DrawO(150, 150, 5);
  50.  
  51.     //Polje 6
  52.     else if((board[3] == 'O' && board[9] == 'O') && (!isalpha(board[6])))
  53.         DrawO(250, 150, 6);
  54.     else if((board[4] == 'O' && board[5] == 'O') && (!isalpha(board[6])))
  55.         DrawO(250, 150, 6);
  56.  
  57.     //Polje 7
  58.     else if((board[1] == 'O' && board[4] == 'O') && (!isalpha(board[7])))
  59.         DrawO(50, 250, 7);
  60.     else if((board[5] == 'O' && board[3] == 'O') && (!isalpha(board[7])))
  61.         DrawO(50, 250, 7);
  62.     else if((board[9] == 'O' && board[8] == 'O') && (!isalpha(board[7])))
  63.         DrawO(50, 250, 7);
  64.  
  65.     //Polje 8
  66.     else if((board[2] == 'O' && board[5] == 'O') && (!isalpha(board[8])))
  67.         DrawO(150, 250, 8);
  68.     else if((board[7] == 'O' && board[9] == 'O') && (!isalpha(board[8])))
  69.         DrawO(150, 250, 8);
  70.  
  71.     //Polje 9
  72.     else if((board[3] == 'O' && board[6] == 'O') && (!isalpha(board[9])))
  73.         DrawO(250, 250, 9);
  74.     else if((board[1] == 'O' && board[5] == 'O') && (!isalpha(board[9])))
  75.         DrawO(250, 250, 9);
  76.     else if((board[7] == 'O' && board[8] == 'O') && (!isalpha(board[9])))
  77.         DrawO(250, 250, 9);
  78.     }
  79.  
  80.     //Anticheat
  81.     if(counter>NoCheat)
  82.         return;
  83.  
  84.     if(__Level >= Medium)
  85.     {
  86.     //Polje 1
  87.     if((board[2] == 'X' && board[3] == 'X') && (!isalpha(board[1])))
  88.         DrawO(50, 50, 1);
  89.     else if((board[5] == 'X' && board[9] == 'X') && (!isalpha(board[1])))
  90.         DrawO(50, 50, 1);
  91.     else if((board[4] == 'X' && board[7] == 'X') && (!isalpha(board[1])))
  92.         DrawO(50, 50, 1);
  93.  
  94.     //Polje 2
  95.     else if((board[1] == 'X' && board[3] == 'X') && (!isalpha(board[2])))
  96.         DrawO(150, 50, 2);
  97.     else if((board[5] == 'X' && board[8] == 'X') && (!isalpha(board[2])))
  98.         DrawO(150, 50, 2);
  99.  
  100.     //Polje 3
  101.     else if((board[1] == 'X' && board[2] == 'X') && (!isalpha(board[3])))
  102.         DrawO(250, 50, 3);
  103.     else if((board[7] == 'X' && board[5] == 'X') && (!isalpha(board[3])))
  104.         DrawO(250, 50, 3);
  105.     else if((board[6] == 'X' && board[9] == 'X') && (!isalpha(board[3])))
  106.         DrawO(250, 50, 3);
  107.  
  108.     //Polje 4
  109.     else if((board[1] == 'X' && board[7] == 'X') && (!isalpha(board[4])))
  110.         DrawO(50, 150, 4);
  111.     else if((board[5] == 'X' && board[6] == 'X') && (!isalpha(board[4])))
  112.         DrawO(50, 150, 4);
  113.  
  114.     //Polje 5
  115.     else if((board[1] == 'X' && board[9] == 'X') && (!isalpha(board[5])))
  116.         DrawO(150, 150, 5);
  117.     else if((board[3] == 'X' && board[7] == 'X') && (!isalpha(board[5])))
  118.         DrawO(150, 150, 5);
  119.     else if((board[4] == 'X' && board[6] == 'X') && (!isalpha(board[5])))
  120.         DrawO(150, 150, 5);
  121.     else if((board[2] == 'X' && board[8] == 'X') && (!isalpha(board[5])))
  122.         DrawO(150, 150, 5);
  123.  
  124.     //Polje 6
  125.     else if((board[3] == 'X' && board[9] == 'X') && (!isalpha(board[6])))
  126.         DrawO(250, 150, 6);
  127.     else if((board[4] == 'X' && board[5] == 'X') && (!isalpha(board[6])))
  128.         DrawO(250, 150, 6);
  129.  
  130.     //Polje 7
  131.     else if((board[1] == 'X' && board[4] == 'X') && (!isalpha(board[7])))
  132.         DrawO(50, 250, 7);
  133.     else if((board[5] == 'X' && board[3] == 'X') && (!isalpha(board[7])))
  134.         DrawO(50, 250, 7);
  135.     else if((board[8] == 'X' && board[9] == 'X') && (!isalpha(board[7])))
  136.         DrawO(50, 250, 7);
  137.  
  138.     //Polje 8
  139.     else if((board[2] == 'X' && board[5] == 'X') && (!isalpha(board[8])))
  140.         DrawO(150, 250, 8);
  141.     else if((board[7] == 'X' && board[9] == 'X') && (!isalpha(board[8])))
  142.         DrawO(150, 250, 8);
  143.  
  144.     //Polje 9
  145.     else if((board[3] == 'X' && board[6] == 'X') && (!isalpha(board[9])))
  146.         DrawO(250, 250, 9);
  147.     else if((board[1] == 'X' && board[5] == 'X') && (!isalpha(board[9])))
  148.         DrawO(250, 250, 9);
  149.     else if((board[7] == 'X' && board[8] == 'X') && (!isalpha(board[9])))
  150.         DrawO(250, 250, 9);
  151.     }
  152.  
  153.     //Anticheat
  154.     if(counter>NoCheat)
  155.         return;
  156.  
  157.     if(__Level >= Hard)
  158.     {
  159.         if(board[5] == '0')
  160.             DrawO(150, 150, 5);
  161.         else if(board[5] == 'O' && board[1] == 'X' && board[9] == 'X')
  162.         {
  163.             switch(rand() % 4)
  164.             {
  165.             case 0:
  166.                 if(board[4] == '0')
  167.                 {
  168.                     DrawO(50, 150, 4);
  169.                     break;
  170.                 }
  171.             case 1:
  172.                 if(board[6] == '0')
  173.                 {
  174.                     DrawO(250, 150, 6);
  175.                     break;
  176.                 }
  177.             case 2:
  178.                 if(board[8] == '0')
  179.                 {
  180.                     DrawO(150, 250, 8);
  181.                     break;
  182.                 }
  183.             case 3:
  184.                 if(board[2] == '0')
  185.                 {
  186.                     DrawO(150, 50, 2);
  187.                     break;
  188.                 }
  189.             }
  190.         }
  191.     }
  192.  
  193.     //Anticheat
  194.     if(counter>NoCheat)
  195.         return;
  196.  
  197.     //Random move
  198.     int randAIMove;
  199.     while(true)
  200.     {
  201.         randAIMove = rand()%(9-1+1) + 1;
  202.         if(!isalpha(board[randAIMove])) break;
  203.     }
  204. }
Add Comment
Please, Sign In to add comment