0% found this document useful (0 votes)
44 views2 pages

Tic Tac Toe

This C++ program implements a Tic Tac Toe game. It includes functions to print the game board, check if a player has won based on the board position, check for a draw, get player input for their move, and contains a main function that runs the game loop switching between players until there is a win or draw condition.

Uploaded by

sotaroedits
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
44 views2 pages

Tic Tac Toe

This C++ program implements a Tic Tac Toe game. It includes functions to print the game board, check if a player has won based on the board position, check for a draw, get player input for their move, and contains a main function that runs the game loop switching between players until there is a win or draw condition.

Uploaded by

sotaroedits
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 2

#include <iostream>

#include <vector>

using namespace std;

// Function to print the Tic Tac Toe board


void printBoard(const vector<vector<char>> &board) {
cout << " 1 2 3" << endl;
for (int i = 0; i < 3; ++i) {
cout << i + 1 << " ";
for (int j = 0; j < 3; ++j) {
cout << board[i][j] << " ";
}
cout << endl;
}
}

// Function to check if a player has won


bool checkWin(const vector<vector<char>> &board, char player) {
// Check rows and columns
for (int i = 0; i < 3; ++i) {
if (board[i][0] == player && board[i][1] == player && board[i][2] ==
player)
return true;
if (board[0][i] == player && board[1][i] == player && board[2][i] ==
player)
return true;
}
// Check diagonals
if (board[0][0] == player && board[1][1] == player && board[2][2] == player)
return true;
if (board[0][2] == player && board[1][1] == player && board[2][0] == player)
return true;
return false;
}

// Function to check if the game is a draw


bool checkDraw(const vector<vector<char>> &board) {
for (int i = 0; i < 3; ++i) {
for (int j = 0; j < 3; ++j) {
if (board[i][j] == ' ')
return false; // There's an empty cell, so the game is not a draw
}
}
return true; // All cells are filled, so the game is a draw
}

// Function to get player's move


void getPlayerMove(vector<vector<char>> &board, char player) {
int row, col;
cout << "Player " << player << "'s turn. Enter row and column (1-3): ";
cin >> row >> col;
// Convert from 1-based to 0-based indexing
--row;
--col;
// Check if the cell is empty
if (board[row][col] == ' ') {
board[row][col] = player;
} else {
cout << "Invalid move. Try again." << endl;
getPlayerMove(board, player);
}
}

int main() {
vector<vector<char>> board(3, vector<char>(3, ' ')); // Initialize an empty
board
char currentPlayer = 'X';
bool gameover = false;

while (!gameover) {
printBoard(board);
getPlayerMove(board, currentPlayer);
if (checkWin(board, currentPlayer)) {
cout << "Player " << currentPlayer << " wins!" << endl;
gameover = true;
} else if (checkDraw(board)) {
cout << "It's a draw!" << endl;
gameover = true;
}
// Switch players
currentPlayer = (currentPlayer == 'X') ? 'O' : 'X';
}

return 0;
}

You might also like