Skip to content

Instantly share code, notes, and snippets.

@ajnarayan
Created August 7, 2015 16:55
Show Gist options
  • Save ajnarayan/718d7fea9692f8442c20 to your computer and use it in GitHub Desktop.
Save ajnarayan/718d7fea9692f8442c20 to your computer and use it in GitHub Desktop.
A Simple tic-tac-toe C++ game
#include <iostream>
using namespace std;
char square[9] = {'0','1','2','3','4','5','6','7','8'};
int checkwin()
{
if (square[0] == square [1] && square[1] == square[2] )
{ if ( square [0] == 'X' )
return 1;
else
return 2;
}
else
if (square[3] == square [4] && square[4] == square[5] )
{ if ( square [3] == 'X' )
return 1;
else
return 2;
}
else
if (square[6] == square [7] && square[7] == square[8] )
{ if ( square [6] == 'X' )
return 1;
else
return 2;
}
else
if (square[0] == square [3] && square[3] == square[6] )
{ if ( square [0] == 'X' )
return 1;
else
return 2;
}
else
if (square[1] == square [4] && square[4] == square[7] )
{ if ( square [1] == 'X' )
return 1;
else
return 2;
}
else
if (square[2] == square [5] && square[5] == square[8] )
{ if ( square [2] == 'X' )
return 1;
else
return 2;
}
else
if (square[0] == square [4] && square[4] == square[8] )
{ if ( square [0] == 'X' )
return 1;
else
return 2;
}
else
if (square[2] == square [4] && square[4] == square[6] )
{ if ( square [2] == 'X' )
return 1;
else
return 2;
}
else
if (square[0] == square [3] && square[3] == square[6] )
{ if ( square [0] == 'X' )
return 1;
else
return 2;
}
else
return 0;
}
void mark(int player, int box)
{
if (player == 1 )
{
square[box] = 'X';
}
else
square[box] = 'Y';
}
void display()
{
for(int i=0;i<9;i++)
{
cout<< square[i] << "\t" ;
if (i == 2 || i== 5 || i==8)
cout<<"\n";
}
}
int main()
{
int player1 = 1, player2 =2 ;
int box, result = 0, flag = 0;
for(int i=1;i<5;i++)
{
cout<< "\n Player " << player1 << "Enter the Box";
cin>> box;
mark( player1, box);
display();
result =checkwin();
if (result == 1 )
{ cout<<"\n Congratualtions! player " << player1 << " has Won ";
flag = 1;
break;
}
else
if (result == 2 )
{ cout<<"\n Congratualtions! player " << player2 << " has Won ";
flag = 1;
break;
}
cout<< "\n Player " << player2 << "Enter the Box";
cin>> box;
mark ( player2, box);
display();
result =checkwin();
if (result == 1 )
{ cout<<"\n Congratualtions! player " << player1 << " has Won ";
flag = 1;
break;
}
else
if (result == 2 )
{ cout<<"\n Congratualtions! player " << player2 << " has Won ";
flag = 1;
break;
}
}
if (flag == 0 )
cout<<" \n Sorry, The game is a draw ";
return 0;
}
@konan625
Copy link

#include <bits/stdc++.h>
using namespace std;

void Print(vector<vector<char>> &board)
{
    for (int i = 0; i < 3; i++)
    {
        cout << "-------" << endl;
        cout << "|" << board[i][0] << "|" << board[i][1] << "|" << board[i][2] << "|" << endl;
    }
    cout << "-------" << endl;
    return;
}
bool win(vector<vector<char>> &board, int row, int col)
{
    char chk = board[row - 1][col - 1];
    // Check the diagonals
    if (board[0][0] == chk && board[1][1] == chk && board[2][2] == chk)
        return true;
    if (board[0][2] == chk && board[1][1] == chk && board[2][0] == chk)
        return true;

    // Checking Rows and columns
    for (int i = 0; i < 3; i++)
    {
        if (board[i][0] == chk && board[i][1] == chk && board[i][2] == chk)
            return true;
        if (board[0][i] == chk && board[1][i] == chk && board[2][i] == chk)
            return true;
    }
    return false;
}
int main()
{
    int count = 0;
    vector<vector<char>> board(3, vector<char>(3, ' '));
    bool gameon = true;
    bool first = true, second = false;
    while (gameon)
    {
        if (count == 9)
        {
            cout << "That's a Draw! Game Over!" << endl;
            break;
        }
        if (first)
        {
            cout << "First Player Choose the Row and Column numbers" << endl;
        }
        else
        {
            cout << "Second Player Choose the Row and Column numbers" << endl;
        }
        int row, col;
        cout << "Row Number (1,2,3) - ";
        cin >> row;
        cout << endl
             << "Column Number (1,2,3) - ";
        cin >> col;
        if (board[row - 1][col - 1] != ' ')
        {
            cout << "\n This cell is occupied, choose another" << endl;
            continue;
        }
        if (first)
            board[row - 1][col - 1] = 'X';
        else
            board[row - 1][col - 1] = 'O';
        count++;
        Print(board);
        bool won = win(board, row, col);
        if (won)
        {
            if (first)
                cout << "First Player Won! Congratulations!";
            else
                cout << "Second Player Won! Congratulations!";
            return 0;
            gameon = false;
        }
        first = !first;
        second = !second;
    }
    cout << "\n Game Over";
    return 0;
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment