Nisheeth

Tic-Tac-Toe 2- Plater

Jul 30th, 2011
1,087
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.47 KB | None | 0 0
  1. #include "default.h"
  2. #include <ctype.h>
  3.  
  4. using std::stringstream;
  5.  
  6. void DrawLine (string Char, int Len = 80)
  7. {
  8.     int x = 0;
  9.     cout << endl;
  10.  
  11.     for (int i = 0;i < Len ;i++)
  12.     {
  13.         cout << Char[x];
  14.         x++;
  15.         if (x == Char.size() )
  16.             x = 0;
  17.     }
  18.     if (Len < 80)  
  19.         cout << endl;
  20. }
  21.  
  22. void Swap (int &a, int &b)
  23. {
  24.     a = a+b;
  25.     b = a-b;
  26.     a = a-b;
  27. }
  28.  
  29. enum User_t { First, Second};
  30.  
  31. class Board_t
  32. {
  33. private:
  34.     char *VirtBoard;
  35. public:
  36.     Board_t ();
  37.     char board[9];
  38.     void PrintBoard();
  39.     void SetBoard();
  40.     void UpdateBoard();
  41.     void Move();
  42.  
  43.     ~Board_t ()
  44.     {
  45.         delete [] VirtBoard;
  46.     }
  47.  
  48. };
  49.  
  50. Board_t BRD;
  51. Board_t *Board = &BRD;
  52.  
  53. Board_t::Board_t ()
  54. {
  55.     VirtBoard = new char[9];
  56.    
  57.     *VirtBoard = *board;
  58. }
  59.  
  60. void Board_t::UpdateBoard ()
  61. {
  62.     *VirtBoard = *board;
  63. }
  64.  
  65. void Board_t::SetBoard()
  66. {
  67.     for (int i = 0; i < 9; i++)
  68.     {
  69.         board[i] = ' ';
  70.     }
  71. }
  72.  
  73. void Board_t::PrintBoard()
  74. {
  75.     cout << endl;
  76.     int x = 0;
  77.     cout << "\t  A B C\n";
  78.     for (int i = 0; i < 3; i++)
  79.     {
  80.         cout << "\t" << i+1 << " ";
  81.         for (int j = 0; j < 3; j++)
  82.         {
  83.             cout << board[x];
  84.             if (j != 2)
  85.                 cout << "|";
  86.             x++;
  87.         }
  88.         if ( i != 2)
  89.         {
  90.             cout << "\n\t  -|-|-";
  91.         }
  92.         cout << endl;
  93.     }
  94.     cout << endl;
  95. }
  96.  
  97. class Peg_t
  98. {
  99. public:
  100.     char Peg;
  101.     string UserName;
  102.     User_t UserNum;
  103.     bool VictoryStat();
  104.     Peg_t(char, User_t);
  105. };
  106.  
  107. Peg_t::Peg_t(char A, User_t B)
  108. {
  109.     Peg = A;
  110.     UserNum = B;
  111. }
  112.  
  113. bool Peg_t::VictoryStat()
  114. {
  115.     if
  116.         (
  117.             (
  118.             ((Board -> board[0] == Peg) && (Board -> board[1] == Peg) && (Board -> board[2] == Peg)) ||
  119.             ((Board -> board[3] == Peg) && (Board -> board[4] == Peg) && (Board -> board[5] == Peg)) ||
  120.             ((Board -> board[6] == Peg) && (Board -> board[7] == Peg) && (Board -> board[8] == Peg))
  121.             )||
  122.             (
  123.             ((Board -> board[0] == Peg) && (Board -> board[3] == Peg) && (Board -> board[6] == Peg)) ||
  124.             ((Board -> board[1] == Peg) && (Board -> board[4] == Peg) && (Board -> board[7] == Peg)) ||
  125.             ((Board -> board[2] == Peg) && (Board -> board[5] == Peg) && (Board -> board[8] == Peg))
  126.             )||
  127.             (
  128.             ((Board -> board[0] == Peg) && (Board -> board[4] == Peg) && (Board -> board[8] == Peg)) ||
  129.             ((Board -> board[2] == Peg) && (Board -> board[4] == Peg) && (Board -> board[6] == Peg))
  130.             )
  131.         )
  132.     {
  133.             return true;
  134.     }
  135.  
  136.     else
  137.     {
  138.         return false;
  139.     }
  140. }
  141.  
  142. int main ()
  143. {
  144.     int a = 0, b = 1;
  145.     string Move;
  146.     stringstream Col, Row;
  147.     char col;
  148.     int row;
  149.     char Peg;
  150.  
  151.     Peg_t User1 ('X', First);
  152.     Peg_t User2 ('O', Second);
  153.  
  154.     cout << "Name of Player 1: ";
  155.     getline (cin, User1.UserName);
  156.  
  157.     cout << "Name of Player 2: ";
  158.     getline (cin, User2.UserName);
  159.    
  160.     Board -> SetBoard();
  161.     for (int i = 0; i < 9; i++)
  162.     {
  163.         Board -> PrintBoard();
  164.        
  165.         if (User1.VictoryStat())
  166.         {
  167.             cout << "\n\nCongratulations " << User1.UserName << " You have won the Game.";
  168.             break;
  169.         }
  170.  
  171.         else if (User2.VictoryStat())
  172.         {
  173.             cout << "\n\nCongratulations " << User2.UserName << " You have won the Game.";
  174.             break;
  175.         }
  176.         cout << "Please enter your move Player ";
  177.         if (i%2 == 0)
  178.         {
  179.             cout << User1.UserNum+1;
  180.         }
  181.  
  182.         else
  183.         {
  184.             cout << User2.UserNum+1;
  185.         }
  186.         cout << ": ";
  187.         while (true)
  188.         {
  189.             getline (cin, Move);
  190.             if (Move.size() == 2)
  191.                 break;
  192.         }
  193.  
  194.         Col << Move[0];
  195.         Row << Move[1];
  196.        
  197.         col = Col.str()[0];
  198.         row = atoi((Row.str()).c_str());
  199.  
  200.         col = toupper (col);
  201.  
  202.         if (a == 0)
  203.             Peg = User1.Peg;
  204.         else if (a == 1)
  205.             Peg = User2.Peg;
  206.  
  207.         if (col == 'A')
  208.         {
  209.             if (row == 1  && Board ->board[0] == ' ')
  210.             {
  211.                 Board ->board[0] = Peg;
  212.             }
  213.  
  214.             else if (row == 2 && Board ->board[3] == ' ')
  215.             {
  216.                 Board ->board[3] = Peg;
  217.             }
  218.  
  219.             else if (row == 3  && Board ->board[6] == ' ')
  220.             {
  221.                 Board ->board[6] = Peg;
  222.             }      
  223.         }
  224.  
  225.         if (col == 'B')
  226.         {
  227.             if (row == 1  && Board ->board[1] == ' ')
  228.             {
  229.                 Board ->board[1] = Peg;
  230.             }
  231.  
  232.             else if (row == 2  && Board ->board[4] == ' ')
  233.             {
  234.                 Board ->board[4] = Peg;
  235.             }
  236.  
  237.             else if (row == 3  && Board ->board[7] == ' ')
  238.             {
  239.                 Board ->board[7] = Peg;
  240.             }      
  241.         }
  242.        
  243.         if (col == 'C')
  244.         {
  245.             if (row == 1  && Board ->board[2] == ' ')
  246.             {
  247.                 Board ->board[2] = Peg;
  248.             }
  249.  
  250.             else if (row == 2 && Board ->board[5] == ' ')
  251.             {
  252.                 Board ->board[5] = Peg;
  253.             }
  254.  
  255.             else if (row == 3 && Board ->board[8] == ' ')
  256.             {
  257.                 Board ->board[8] = Peg;
  258.             }      
  259.         }
  260.         DrawLine ("-");
  261.         Board -> UpdateBoard();
  262.        
  263.         Col.str("");
  264.         Row.str("");
  265.         Swap (a,b);
  266.     }
  267.  
  268.     ;cout << "\nPress ENTER to exit . . .";
  269.     cin.sync();
  270.     cin.get();
  271.     return 0;
  272. }
Advertisement
Add Comment
Please, Sign In to add comment