-
-
Save engineerdawood/40e8e1c706418aaa67cce9089deab010 to your computer and use it in GitHub Desktop.
tictactoe game
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#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