Untitled
Anonymous
plain_text
02/21/2026 4:50 AM
4.6 KB
11
Indexable
#include <stdio.h>
#include <stdlib.h>
#define SIZE 3
typedef struct {
char name[50];
char symbol;
} Player;
void initializeBoard(char board[SIZE][SIZE]);
void displayBoard(char board[SIZE][SIZE]);
int makeMove(char board[SIZE][SIZE], Player p);
int checkWin(char board[SIZE][SIZE], char symbol);
int checkDraw(char board[SIZE][SIZE]);
int main() {
char board[SIZE][SIZE];
Player player1, player2;
int gameOver = 0;
int turn = 0;
printf("Enter name for Player 1 (X): ");
scanf("%s", player1.name);
player1.symbol = 'X';
printf("Enter name for Player 2 (O): ");
scanf("%s", player2.name);
player2.symbol = 'O';
initializeBoard(board);
while (!gameOver) {
displayBoard(board);
if (turn % 2 == 0) {
makeMove(board, player1);
if (checkWin(board, player1.symbol)) {
displayBoard(board);
printf("?? %s wins!\n", player1.name);
gameOver = 1;
}
} else {
makeMove(board, player2);
if (checkWin(board, player2.symbol)) {
displayBoard(board);
printf("?? %s wins!\n", player2.name);
gameOver = 1;
}
}
if (!gameOver && checkDraw(board)) {
displayBoard(board);
printf("It's a draw!\n");
gameOver = 1;
}
turn++;
}
return 0;
}
void initializeBoard(char board[SIZE][SIZE]) {
char ch = '1';
for (int i = 0; i < SIZE; i++) {
for (int j = 0; j < SIZE; j++) {
board[i][j] = ch++;
}
}
}
void displayBoard(char board[SIZE][SIZE]) {
printf("\n");
for (int i = 0; i < SIZE; i++) {
for (int j = 0; j < SIZE; j++) {
printf(" %c ", board[i][j]);
if (j < SIZE - 1)
printf("|");
}
printf("\n");
if (i < SIZE - 1)
printf("---|---|---\n");
}
printf("\n");
}
int makeMove(char board[SIZE][SIZE], Player p) {
int choice;
int row, col;
while (1) {
printf("%s (%c), enter your move (1-9): ", p.name, p.symbol);
scanf("%d", &choice);
if (choice < 1 || choice > 9) {
printf("Invalid choice. Try again.\n");
continue;
}
row = (choice - 1) / SIZE;
col = (choice - 1) % SIZE;
if (board[row][col] != 'X' && board[row][col] != 'O') {
board[row][col] = p.symbol;
break;
} else {
printf("Cell already taken. Try again.\n");
}
}
return 1;
}
int checkWin(char board[SIZE][SIZE], char symbol) {
for (int i = 0; i < SIZE; i++) {
if ((board[i][0] == symbol && board[i][1] == symbol && board[i][2] == symbol) ||
(board[0][i] == symbol && board[1][i] == symbol && board[2][i] == symbol))
return 1;
}
if ((board[0][0] == symbol && board[1][1] == symbol && board[2][2] == symbol) ||
(board[0][2] == symbol && board[1][1] == symbol && board[2][0] == symbol))
return 1;
return 0;
}
int checkDraw(char board[SIZE][SIZE]) {
for (int i = 0; i < SIZE; i++) {
for (int j = 0; j < SIZE; j++) {
if (board[i][j] != 'X' && board[i][j] != 'O')
return 0;
}
}
return 1;
}Editor is loading...
Leave a Comment