Patasuss

TicTacToe

Mar 15th, 2014
263
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.14 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. #define PLY_ONE 1
  6. #define PLY_TWO 2
  7. #define NO_PLY 0
  8.  
  9. int field[3*3];
  10.  
  11. int sign(int val)
  12. {
  13.     if(val>0)
  14.     {
  15.     return 1;
  16.     }
  17.     else
  18.     {
  19.     return 0;
  20.     }
  21. }
  22.  
  23. void clearField()
  24. {
  25.     for(int i=0; i<9;i++)
  26.     {
  27.         field[i] = NO_PLY;
  28.     }
  29. }
  30.  
  31. void print_field()
  32. {
  33.     for(int y=0;y<3;y++)
  34.     {
  35.         for(int x=0;x<3;x++)
  36.         {
  37.             switch (field[x + y*3])
  38.             {
  39.                 case NO_PLY:
  40.                     cout <<" ";
  41.                 break;
  42.                 case PLY_ONE:
  43.                     cout <<"X";
  44.                 break;
  45.                 case PLY_TWO:
  46.                     cout <<"O";
  47.                 break;
  48.             }
  49.            
  50.             if(x!=2)
  51.             {
  52.                 cout <<" | ";
  53.             }
  54.         }
  55.         cout <<"\n";
  56.     }
  57. }
  58.  
  59. int check_field()
  60. {
  61.     int sum = 0;
  62.     int sum2 = 0;
  63.     sum = field[0]+field[1]+field[2];
  64.     sum2 = sign(field[0])+sign(field[1])+sign(field[2]);
  65.     if((sum==3 || sum==6) && sum2==3)
  66.     {
  67.         return field[0];
  68.     }
  69.    
  70.     sum = field[3]+field[4]+field[5];
  71.     sum2 = sign(field[3])+sign(field[4])+sign(field[5]);
  72.     if((sum==3 || sum==6) && sum2==3)
  73.     {
  74.         return field[3];
  75.     }
  76.    
  77.     sum = field[6]+field[7]+field[8];
  78.     sum2 = sign(field[6])+sign(field[7])+sign(field[8]);
  79.     if((sum==3 || sum==6) && sum2==3)
  80.     {
  81.         return field[6];
  82.     }
  83.    
  84.     sum = field[0]+field[3]+field[6];
  85.     sum2 = sign(field[0])+sign(field[3])+sign(field[6]);
  86.     if((sum==3 || sum==6) && sum2==3)
  87.     {
  88.         return field[3];
  89.     }
  90.    
  91.     sum = field[1]+field[4]+field[7];
  92.     sum2 = sign(field[1])+sign(field[4])+sign(field[7]);
  93.     if((sum==3 || sum==6) && sum2==3)
  94.     {
  95.         return field[1];
  96.     }
  97.    
  98.     sum = field[2]+field[5]+field[8];
  99.     sum2 = sign(field[2])+sign(field[5])+sign(field[8]);
  100.     if((sum==3 || sum==6) && sum2==3)
  101.     {
  102.         return field[2];
  103.     }
  104.    
  105.     sum = field[0]+field[4]+field[8];
  106.     sum2 = sign(field[0])+sign(field[4])+sign(field[8]);
  107.     if((sum==3 || sum==6) && sum2==3)
  108.     {
  109.         return field[0];
  110.     }
  111.    
  112.     sum = field[2]+field[4]+field[6];
  113.     sum2 = sign(field[2])+sign(field[4])+sign(field[6]);
  114.     if((sum==3 || sum==6) && sum2==3)
  115.     {
  116.         return field[2];
  117.     }
  118.    
  119.     return NO_PLY;
  120. }
  121.  
  122. int main(int argc, char *argv[])
  123. {
  124.     int turn = PLY_ONE;
  125.     bool playing = true;
  126.     int chosen_field = 1;
  127.     bool valid_field=false;
  128.    
  129.     clearField();
  130.    
  131.     cout <<"Wilkommen im Kommandozeilen TicTacToe!\n";
  132.     cout <<"Das Spielfeld:\n\t1 | 2 | 3\n\t4 | 5 | 6\n\t7 | 8 | 9\n";
  133.     cout <<"Zeichen von Spieler 1: X\nZeichen von Spieler 2: O\n\n";
  134.    
  135.     while(playing)
  136.     {
  137.         if(turn==NO_PLY)
  138.             turn=PLY_ONE;
  139.        
  140.        
  141.         cout <<"Spieler "<<turn<<" ist am Zug.\n";
  142.        
  143.         valid_field = false;
  144.        
  145.         while(!valid_field)
  146.         {
  147.             cout <<"Feld: ";
  148.             cin >> chosen_field;
  149.             if(chosen_field<1 || chosen_field>9)
  150.             {
  151.                 cout <<"Feld "<<chosen_field<<" exisitiert nicht!\n\n";
  152.                 continue;
  153.             }
  154.            
  155.             chosen_field--;
  156.             if(field[chosen_field]!=NO_PLY)
  157.             {
  158.                 cout <<"Feld "<<chosen_field+1<<" ist schon belegt!\n\n";
  159.                 continue;
  160.             }
  161.             field[chosen_field] = turn;
  162.             valid_field = true;
  163.             cout <<"\n";
  164.         }
  165.        
  166.         if(turn==PLY_ONE)
  167.         {
  168.             turn=PLY_TWO;
  169.         }
  170.         else
  171.         {
  172.             turn=PLY_ONE;
  173.         }
  174.        
  175.         print_field();
  176.        
  177.         int winningPlayer = NO_PLY;
  178.         winningPlayer = check_field();
  179.         if(winningPlayer!=NO_PLY)
  180.         {
  181.             cout <<"Spieler "<<winningPlayer<<" hat gewonnen!";
  182.             playing = false;
  183.         }      
  184.        
  185.     }
  186.    
  187.     return 0;
  188. }
Advertisement
Add Comment
Please, Sign In to add comment