Skip to content

Instantly share code, notes, and snippets.

@engineerdawood
Created June 6, 2018 09:47
Show Gist options
  • Save engineerdawood/40e8e1c706418aaa67cce9089deab010 to your computer and use it in GitHub Desktop.
Save engineerdawood/40e8e1c706418aaa67cce9089deab010 to your computer and use it in GitHub Desktop.
tictactoe game
#include <iostream> // ANAT - TIC TAC TOE - GAME // V1.7 Beta
#include <conio.h>
using namespace std;
char _cMatrix [3][3]= {'1' , '2' , '3' , '4' , '5' , '6' , '7' , '8' , '9'}; // ELEMENTS FOR GAME BOARD
char _cPlayer = 'X' ; // PLAYER TURN
int _iDraw=0;
void _fBoard(){ // BOARD SHAPE
system("cls");
cout << "^^^^^^^^^Tic Tac Toe GAME^^^^^^^^^" << endl;
cout << "----------------------------------" << endl << endl;
for (int i=0 ; i<3 ; i++){
for (int j=0 ; j<3 ; j++){
cout << "\t" << _cMatrix[i][j] ;}
cout << endl << endl; }
cout << "----------------------------------" << endl;
}
void _fCore(){ // FUNCTION TO CHOOSE ENTRY IN MATRIX OF GAME
int _iGamer = 0, _iChoice;
cout << "Player '" << _cPlayer << "' Enter your Choice: " ;
cin >> _iChoice;
if (_iChoice <1 || _iChoice >9 ) {
cout << "$$ Wrong Input &&\n" << "\nEnter Your Choice Again: " ;
_fCore(); }
else
for(int i=0 ; i<3 ;++i)
for(int j=0 ; j<3 ; ++j)
if(++_iGamer ==_iChoice)
if(_cMatrix[i][j] == 'O' ||_cMatrix[i][j] == 'X'){
cout << "! Field is already Occupied Player '" << _cPlayer << "' TRY AGAIN ! " ;
_fCore();}
else{ _cMatrix[i][j] = _cPlayer;
break;}
}
void _fSwitch_Player(){ // FUNCTION TO SWITCH PLAYER
if (_cPlayer== 'X') _cPlayer = 'O' ;
else _cPlayer='X';
}
char _fWin(){ // FUNCTION TO CHOOSE THE WINNER
for (int i=0 ; i<3 ; i++){ //CHECKING FOR WIN
int j;
j=0; if (_cMatrix[i][j] == _cPlayer && _cMatrix[i][++j] == _cPlayer && _cMatrix[i][++j] == _cPlayer) return _cPlayer; //ROW WIN
j=0; if (_cMatrix[j][i] == _cPlayer && _cMatrix[++j][i] == _cPlayer && _cMatrix[++j][i] == _cPlayer) return _cPlayer; //COLOUMN WIN
/**sadi mrzi lain wadaya ya nai**/
j=0; if (_cMatrix[j][0] == _cPlayer && _cMatrix[++j][1] == _cPlayer && _cMatrix[++j][2] == _cPlayer) return _cPlayer; //DIAGONAL WIN 1
j=0; if (_cMatrix[j][2] == _cPlayer && _cMatrix[++j][1] == _cPlayer && _cMatrix[++j][0] == _cPlayer) return _cPlayer; //DIAGONAL WIN 2
}
return '/';
}
int main (){
_fBoard();
while(true) { // INFINITE LOOP ONLY ENDS ON BREAK
_iDraw++;
_fCore();
_fBoard();
if (_fWin() == 'X') { cout << " !! 'X' WINS !! \n"; break; }
else if (_fWin() == 'O') { cout << " !! 'O' WINS !! \n"; break; }
else if (_fWin() == '/' && _iDraw == 9) { cout << " !! IT'S A DRAW !! \n"; break; }// DRAW FUNCTION
_fSwitch_Player(); }
getch();
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment