Here is the tic-tac-toe game using c++ language the code is optimized and this article will help you to get logic about how to run functions without any confusion.
#include <bits/stdc++.h>
using namespace std;
bool isGameOver(const vector<vector<char>>& board, char player) {
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;
}
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;
for (int i = 0; i < 3; ++i) {
for (int j = 0; j < 3; ++j) {
if (board[i][j] != 'X' && board[i][j] != 'O') return false;
}
}
return true;
}
void printBoard(const vector<vector<char>>& board) {
for (int i = 0; i < 3; ++i) {
for (int j = 0; j < 3; ++j) {
cout << board[i][j];
if (j < 2) cout << " | ";
}
cout << endl;
if (i < 2) cout << "---------" << endl;
}
}
int main() {
vector<vector<char>> board(3, vector<char>(3, ' '));
bool player1Turn = true;
cout << "Welcome to Tic-Tac-Toe! Game" << endl;
while (true) {
printBoard(board);
char currentPlayer = (player1Turn) ? 'X' : 'O';
cout << "Player " << currentPlayer << ", Enter your move : ";
int row, col;
cin >> row >> col;
if (row < 0 || row >= 3 || col < 0 || col >= 3 || board[row][col] != ' ') {
cout << "Invalid move. Try again." << endl;
continue;
}
board[row][col] = currentPlayer;
if (isGameOver(board, currentPlayer)) {
printBoard(board);
cout << "Player " << currentPlayer << " wins!" << endl;
break;
}
player1Turn = !player1Turn; // Switch to the other player's turn.
}
cout << "Game over." << endl;
return 0;
}