Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <sstream>
- #include <cstring>
- #include <cmath>
- #include <iomanip>
- #include <exception>
- #include <vector>
- #include <time.h>
- #include <cstdlib>
- using std::cout;
- using std::cin;
- using std::string;
- using std::endl;
- using std::vector;
- string Name;
- bool LoopCheck = true;
- bool Skip = false;
- void DrawLine (string Lin, int Length = 80)
- {
- int j;
- j = 0;
- cout << endl;
- for(int i = 0; i < Length && i < 80; i++)
- {
- cout << Lin[j];
- j++;
- if (j == Lin.size())
- {j = 0;}
- }
- cout << endl;
- }
- class Board_t
- {
- public:
- char board[9];
- void SetBoard();
- void PrintBoard();
- };
- Board_t Board;
- void Board_t::SetBoard()
- {
- for( int i = 0;i < 9; i++)
- {
- board[i] = ' ';
- }
- }
- void Board_t::PrintBoard()
- {
- cout << endl << endl;
- cout << "\t 1 2 3\n";
- cout << "\t1 " << board[0] << "|" << board[1] << "|" << board[2];
- cout << "\n\t -|-|-\n";
- cout << "\t2 " << board[3] << "|" << board[4] << "|" << board[5];
- cout << "\n\t -|-|-\n";
- cout << "\t3 " << board[6] << "|" << board[7] << "|" << board[8];
- cout << endl << endl;
- }
- class Peg_t
- {
- bool UserControl;
- public:
- Peg_t (bool UserController);
- char Peg;
- void VictoryCheck();
- void DefeatCheck();
- void Move();
- void CompMove();
- };
- Peg_t User (false);
- Peg_t Comp (true);
- Peg_t::Peg_t (bool UserController)
- {
- UserControl = UserController;
- }
- void Peg_t::VictoryCheck()
- {
- //-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
- //User Victory Check
- //-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
- if (
- ((Board.board[0] == User.Peg) && (Board.board[1] == User.Peg) && (Board.board[2] == User.Peg)) ||
- ((Board.board[3] == User.Peg) && (Board.board[4] == User.Peg) && (Board.board[5] == User.Peg)) ||
- ((Board.board[6] == User.Peg) && (Board.board[7] == User.Peg) && (Board.board[8] == User.Peg))
- )
- {
- LoopCheck = false;
- cout << "Congratulations " << Name << ". You have won the Game!!!";
- }
- else if (
- ((Board.board[0] == User.Peg) && (Board.board[3] == User.Peg) && (Board.board[6] == User.Peg)) ||
- ((Board.board[1] == User.Peg) && (Board.board[4] == User.Peg) && (Board.board[7] == User.Peg)) ||
- ((Board.board[2] == User.Peg) && (Board.board[5] == User.Peg) && (Board.board[8] == User.Peg))
- )
- {
- LoopCheck = false;
- cout << "Congratulations " << Name << ". You have won the Game!!!";
- }
- else if (
- ((Board.board[0] == User.Peg) && (Board.board[4] == User.Peg) && (Board.board[8] == User.Peg)) ||
- ((Board.board[2] == User.Peg) && (Board.board[4] == User.Peg) && (Board.board[6] == User.Peg))
- )
- {
- LoopCheck = false;
- cout << "Congratulations " << Name << ". You have won the Game!!!";
- }
- }
- void Peg_t::DefeatCheck()
- {
- //-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
- //User Defeat Check
- //-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
- if (
- (Board.board[0] == Comp.Peg && Board.board[1] == Comp.Peg && Board.board[2] == Comp.Peg) ||
- (Board.board[3] == Comp.Peg && Board.board[4] == Comp.Peg && Board.board[5] == Comp.Peg) ||
- (Board.board[6] == Comp.Peg && Board.board[7] == Comp.Peg && Board.board[8] == Comp.Peg)
- )
- {
- LoopCheck = false;
- cout << "You have Lost the game!!!";
- }
- else if (
- (Board.board[0] == Comp.Peg && Board.board[3] == Comp.Peg && Board.board[6] == Comp.Peg) ||
- (Board.board[1] == Comp.Peg && Board.board[4] == Comp.Peg && Board.board[7] == Comp.Peg) ||
- (Board.board[2] == Comp.Peg && Board.board[5] == Comp.Peg && Board.board[8] == Comp.Peg)
- )
- {
- LoopCheck = false;
- cout << "You have Lost the game!!!";
- }
- else if (
- (Board.board[0] == Comp.Peg && Board.board[4] == Comp.Peg && Board.board[8] == Comp.Peg) ||
- (Board.board[2] == Comp.Peg && Board.board[4] == Comp.Peg && Board.board[6] == Comp.Peg)
- )
- {
- LoopCheck = false;
- cout << "You have Lost the game!!!";
- }
- }
- void Peg_t::Move()
- {
- int Loc;
- cout << "\nPlease enter the position of the Place you want to move: ";
- cin >> Loc;
- cin.sync();
- switch(Loc)
- {
- //
- //Row 1:
- //
- case 11:
- if (Board.board[0] == ' ')
- {
- Board.board[0] = User.Peg;
- }
- else
- {
- cout << "You made an illegal move! Turn Skipped";
- Skip = true;
- }
- break;
- case 12:
- if (Board.board[1] == ' ')
- {
- Board.board[1] = User.Peg;
- }
- else
- {
- cout << "You made an illegal move! Turn Skipped";
- Skip = true;
- }
- break;
- case 13:
- if (Board.board[2] == ' ')
- {
- Board.board[2] = User.Peg;
- }
- else
- {
- cout << "You made an illegal move! Turn Skipped";
- Skip = true;
- }
- break;
- //
- //Row 2:
- //
- case 21:
- if (Board.board[3] == ' ')
- {
- Board.board[3] = User.Peg;
- }
- else
- {
- cout << "You made an illegal move! Turn Skipped";
- Skip = true;
- }
- break;
- case 22:
- if (Board.board[4] == ' ')
- {
- Board.board[4] = User.Peg;
- }
- else
- {
- cout << "You made an illegal move! Turn Skipped";
- Skip = true;
- }
- break;
- case 23:
- if (Board.board[5] == ' ')
- {
- Board.board[5] = User.Peg;
- }
- else
- {
- cout << "You made an illegal move! Turn Skipped";
- Skip = true;
- }
- break;
- //
- //Row 3:
- //
- case 31:
- if (Board.board[6] == ' ')
- {
- Board.board[6] = User.Peg;
- }
- else
- {
- cout << "You made an illegal move! Turn Skipped";
- Skip = true;
- }
- break;
- case 32:
- if (Board.board[7] == ' ')
- {
- Board.board[7] = User.Peg;
- }
- else
- {
- cout << "You made an illegal move! Turn Skipped";
- Skip = true;
- }
- break;
- case 33:
- if (Board.board[8] == ' ')
- {
- Board.board[8] = User.Peg;
- }
- else
- {
- cout << "You made an illegal move! Turn Skipped";
- Skip = true;
- }
- break;
- default:
- cout << "Illegal Move! Turn Skipped";
- Skip = true;
- }
- }
- void Peg_t::CompMove()
- {
- {
- //
- //Winning Move Check:
- //
- //
- //Rows
- //Row 1
- if (Board.board[0] == Comp.Peg && Board.board[1] == Comp.Peg && Board.board[2] == ' ')
- {
- Board.board[2] = Comp.Peg;
- }
- else if (Board.board[0] == Comp.Peg && Board.board[2] == Comp.Peg && Board.board[1] == ' ')
- {
- Board.board[1] = Comp.Peg;
- }
- else if (Board.board[1] == Comp.Peg && Board.board[2] == Comp.Peg && Board.board[0] == ' ')
- {
- Board.board[0] = Comp.Peg;
- }
- //Row 2:
- else if (Board.board[3] == Comp.Peg && Board.board[4] == Comp.Peg && Board.board[5] == ' ')
- {
- Board.board[5] = Comp.Peg;
- }
- else if (Board.board[3] == Comp.Peg && Board.board[5] == Comp.Peg && Board.board[4] == ' ')
- {
- Board.board[4] = Comp.Peg;
- }
- else if (Board.board[4] == Comp.Peg && Board.board[5] == Comp.Peg && Board.board[3] == ' ')
- {
- Board.board[3] = Comp.Peg;
- }
- //Row 3:
- else if (Board.board[6] == Comp.Peg && Board.board[7] == Comp.Peg && Board.board[8] == ' ')
- {
- Board.board[8] = Comp.Peg;
- }
- else if (Board.board[6] == Comp.Peg && Board.board[8] == Comp.Peg && Board.board[7] == ' ')
- {
- Board.board[7] = Comp.Peg;
- }
- else if (Board.board[7] == Comp.Peg && Board.board[8] == Comp.Peg && Board.board[6] == ' ')
- {
- Board.board[6] = Comp.Peg;
- }
- //
- //Columns
- //
- //Column 1:
- else if (Board.board[0] == Comp.Peg && Board.board[3] == Comp.Peg && Board.board[6] == ' ')
- {
- Board.board[6] = Comp.Peg;
- }
- else if (Board.board[0] == Comp.Peg && Board.board[6] == Comp.Peg && Board.board[3] == ' ')
- {
- Board.board[3] = Comp.Peg;
- }
- else if (Board.board[3] == Comp.Peg && Board.board[6] == Comp.Peg && Board.board[0] == ' ')
- {
- Board.board[0] = Comp.Peg;
- }
- //Column 2:
- else if (Board.board[1] == Comp.Peg && Board.board[4] == Comp.Peg && Board.board[7] == ' ')
- {
- Board.board[7] = Comp.Peg;
- }
- else if (Board.board[1] == Comp.Peg && Board.board[7] == Comp.Peg && Board.board[4] == ' ')
- {
- Board.board[4] = Comp.Peg;
- }
- else if (Board.board[4] == Comp.Peg && Board.board[7] == Comp.Peg && Board.board[1] == ' ')
- {
- Board.board[1] = Comp.Peg;
- }
- //Column 3:
- else if (Board.board[2] == Comp.Peg && Board.board[5] == Comp.Peg && Board.board[8] == ' ')
- {
- Board.board[8] = Comp.Peg;
- }
- else if (Board.board[2] == Comp.Peg && Board.board[8] == Comp.Peg && Board.board[5] == ' ')
- {
- Board.board[5] = Comp.Peg;
- }
- else if (Board.board[5] == Comp.Peg && Board.board[8] == Comp.Peg && Board.board[2] == ' ')
- {
- Board.board[2] = Comp.Peg;
- }
- //
- //Diagonals:
- //
- //Diagonal 1:
- else if (Board.board[0] == Comp.Peg && Board.board[4] == Comp.Peg && Board.board[8] == ' ')
- {
- Board.board[8] = Comp.Peg;
- }
- else if (Board.board[0] == Comp.Peg && Board.board[8] == Comp.Peg && Board.board[4] == ' ')
- {
- Board.board[4] = Comp.Peg;
- }
- else if (Board.board[4] == Comp.Peg && Board.board[8] == Comp.Peg && Board.board[0] == ' ')
- {
- Board.board[0] = Comp.Peg;
- }
- //Diagonal 2:
- else if (Board.board[2] == Comp.Peg && Board.board[4] == Comp.Peg && Board.board[6] == ' ')
- {
- Board.board[6] = Comp.Peg;
- }
- else if (Board.board[2] == Comp.Peg && Board.board[6] == Comp.Peg && Board.board[4] == ' ')
- {
- Board.board[4] = Comp.Peg;
- }
- else if (Board.board[4] == Comp.Peg && Board.board[6] == Comp.Peg && Board.board[2] == ' ')
- {
- Board.board[2] = Comp.Peg;
- }
- //
- //
- //Blocking Move:
- //
- //
- //Rows:
- //Row 1
- else if (Board.board[0] == User.Peg && Board.board[1] == User.Peg && Board.board[2] == ' ')
- {
- Board.board[2] = Comp.Peg;
- }
- else if (Board.board[0] == User.Peg && Board.board[2] == User.Peg && Board.board[1] == ' ')
- {
- Board.board[1] = Comp.Peg;
- }
- else if (Board.board[1] == User.Peg && Board.board[2] == User.Peg && Board.board[0] == ' ')
- {
- Board.board[0] = Comp.Peg;
- }
- //Row 2:
- else if (Board.board[3] == User.Peg && Board.board[4] == User.Peg && Board.board[5] == ' ')
- {
- Board.board[5] = Comp.Peg;
- }
- else if (Board.board[3] == User.Peg && Board.board[5] == User.Peg && Board.board[4] == ' ')
- {
- Board.board[4] = Comp.Peg;
- }
- else if (Board.board[4] == User.Peg && Board.board[5] == User.Peg && Board.board[3] == ' ')
- {
- Board.board[3] = Comp.Peg;
- }
- //Row 3:
- else if (Board.board[6] == User.Peg && Board.board[7] == User.Peg && Board.board[8] == ' ')
- {
- Board.board[8] = Comp.Peg;
- }
- else if (Board.board[6] == User.Peg && Board.board[8] == User.Peg && Board.board[7] == ' ')
- {
- Board.board[7] = Comp.Peg;
- }
- else if (Board.board[7] == User.Peg && Board.board[8] == User.Peg && Board.board[6] == ' ')
- {
- Board.board[6] = Comp.Peg;
- }
- //
- //Columns
- //
- //Column 1:
- else if (Board.board[0] == User.Peg && Board.board[3] == User.Peg && Board.board[6] == ' ')
- {
- Board.board[6] = Comp.Peg;
- }
- else if (Board.board[0] == User.Peg && Board.board[6] == User.Peg && Board.board[3] == ' ')
- {
- Board.board[3] = Comp.Peg;
- }
- else if (Board.board[3] == User.Peg && Board.board[6] == User.Peg && Board.board[0] == ' ')
- {
- Board.board[0] = Comp.Peg;
- }
- //Column 2:
- else if (Board.board[1] == User.Peg && Board.board[4] == User.Peg && Board.board[7] == ' ')
- {
- Board.board[7] = Comp.Peg;
- }
- else if (Board.board[1] == User.Peg && Board.board[7] == User.Peg && Board.board[4] == ' ')
- {
- Board.board[4] = Comp.Peg;
- }
- else if (Board.board[4] == User.Peg && Board.board[7] == User.Peg && Board.board[1] == ' ')
- {
- Board.board[1] = Comp.Peg;
- }
- //Column 3:
- else if (Board.board[2] == User.Peg && Board.board[5] == User.Peg && Board.board[8] == ' ')
- {
- Board.board[8] = Comp.Peg;
- }
- else if (Board.board[2] == User.Peg && Board.board[8] == User.Peg && Board.board[5] == ' ')
- {
- Board.board[5] = Comp.Peg;
- }
- else if (Board.board[5] == User.Peg && Board.board[8] == User.Peg && Board.board[2] == ' ')
- {
- Board.board[2] = Comp.Peg;
- }
- //
- //Diagonals:
- //
- //Diagonal 1:
- else if (Board.board[0] == User.Peg && Board.board[4] == User.Peg && Board.board[8] == ' ')
- {
- Board.board[8] = Comp.Peg;
- }
- else if (Board.board[0] == User.Peg && Board.board[8] == User.Peg && Board.board[4] == ' ')
- {
- Board.board[4] = Comp.Peg;
- }
- else if (Board.board[4] == User.Peg && Board.board[8] == User.Peg && Board.board[0] == ' ')
- {
- Board.board[0] = Comp.Peg;
- }
- //Diagonal 2:
- else if (Board.board[2] == User.Peg && Board.board[4] == User.Peg && Board.board[6] == ' ')
- {
- Board.board[6] = Comp.Peg;
- }
- else if (Board.board[2] == User.Peg && Board.board[6] == User.Peg && Board.board[4] == ' ')
- {
- Board.board[4] = Comp.Peg;
- }
- else if (Board.board[4] == User.Peg && Board.board[6] == User.Peg && Board.board[2] == ' ')
- {
- Board.board[2] = Comp.Peg;
- }
- //Random Move:
- else
- {
- int Rand;
- while (true)
- {
- Rand = (rand())%9;
- if (Board.board[Rand] == ' ')
- {
- break;
- }
- }
- Board.board[Rand] = Comp.Peg;
- }
- }
- }
- int main ()
- {
- srand (time (NULL));
- User.Peg = 'X';
- Comp.Peg = 'O';
- cout << "\tTHE BOARD:";
- DrawLine ("_", 18);
- Board.SetBoard();
- Board.PrintBoard();
- DrawLine ("=");
- cout << "\t\t\t\t Rules:";
- cout << "\n\t\t\t\t =======" << endl << endl;
- cout << "The Aim of the Game is to put 3 of your marks [X] in one Row, Column or Diagonal!" << endl;
- cout << "You lose if the Computer put's 3 of its Marks [O] in one Row, Column or Doagonal!" << endl;
- cout << "To put your Mark, Put in the Row Number and then the Column Number." << endl;
- cout << "So in order to put a Cross in the (x = 1, y = 2), you will type in 12." << endl;
- cout << "The following locations are allowed: 11, 12, 13; 21, 22, 23; 31, 32, 33;" << endl;
- cout << "Any other entry will be considered invalid." << endl;
- cout << "You cannot play on an already filled block! Your turned will be skipped f you do!" << endl;
- DrawLine ("_");
- cout << "Please enter your Name: ";
- getline (cin, Name);
- DrawLine ("_");
- int x = 9;
- for (int i = 0;i < x && LoopCheck;i++)
- {
- if (i%2 == 0)
- {
- User.VictoryCheck();
- User.DefeatCheck();
- Board.PrintBoard();
- User.Move();
- if (Skip)
- {
- x++;
- Skip = false;
- }
- }
- else
- {
- Comp.VictoryCheck();
- Comp.DefeatCheck();
- cout << "The Computer's Turn: ";
- Comp.CompMove();
- Board.PrintBoard();
- }
- DrawLine ("-");
- }
- DrawLine ("~");
- cout << "Thank You for Playing\n";
- DrawLine ("~");
- //-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
- //Termination And Message:
- //-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
- ;cout << "Press Enter to exit . . .";
- cin.sync();
- cin.get();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment