Você está na página 1de 3

#include <stdio.

h>
#include <stdlib.h>
#include <time.h>

// Função para exibir o tabuleiro


void exibirTabuleiro(char tabuleiro[3][3]) {
printf(" 1 2 3\n");
for (int i = 0; i < 3; i++) {
printf("%d ", i + 1);
for (int j = 0; j < 3; j++) {
printf("%c ", tabuleiro[i][j]);
}
printf("\n");
}
}

// Função para verificar se algum jogador venceu


char verificarVencedor(char tabuleiro[3][3]) {
// Verificar linhas
for (int i = 0; i < 3; i++) {
if (tabuleiro[i][0] == tabuleiro[i][1] && tabuleiro[i][0] == tabuleiro[i]
[2]) {
return tabuleiro[i][0];
}
}

// Verificar colunas
for (int j = 0; j < 3; j++) {
if (tabuleiro[0][j] == tabuleiro[1][j] && tabuleiro[0][j] == tabuleiro[2]
[j]) {
return tabuleiro[0][j];
}
}

// Verificar diagonais
if (tabuleiro[0][0] == tabuleiro[1][1] && tabuleiro[0][0] == tabuleiro[2][2]) {
return tabuleiro[0][0];
}

if (tabuleiro[0][2] == tabuleiro[1][1] && tabuleiro[0][2] == tabuleiro[2][0]) {


return tabuleiro[0][2];
}

// Verificar empate
int vazias = 0;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
if (tabuleiro[i][j] == ' ') {
vazias++;
}
}
}

if (vazias == 0) {
return 'E'; // Empate
}

return ' '; // Jogo em andamento


}
// Função para jogada do jogador
void jogadaJogador(char tabuleiro[3][3]) {
int linha, coluna;

do {
printf("Digite a linha (1-3): ");
scanf("%d", &linha);
printf("Digite a coluna (1-3): ");
scanf("%d", &coluna);

linha--; // Ajustar para o índice do array


coluna--;

if (linha < 0 || linha >= 3 || coluna < 0 || coluna >= 3 ||


tabuleiro[linha][coluna] != ' ') {
printf("Jogada inválida. Tente novamente.\n");
}
} while (linha < 0 || linha >= 3 || coluna < 0 || coluna >= 3 ||
tabuleiro[linha][coluna] != ' ');

tabuleiro[linha][coluna] = 'X';
}

// Função para jogada do computador


void jogadaComputador(char tabuleiro[3][3]) {
// Verificar se a casa do meio está vazia
if (tabuleiro[1][1] == ' ') {
tabuleiro[1][1] = 'O';
return;
}

// Gerar uma semente aleatória


srand(time(NULL));

int linha, coluna;


do {
// Gerar números aleatórios entre 0 e 2 para a linha e coluna
linha = rand() % 3;
coluna = rand() % 3;
} while (tabuleiro[linha][coluna] != ' ');

tabuleiro[linha][coluna] = 'O';
}

// Função principal do jogo


int main() {
char tabuleiro[3][3] = {
{' ', ' ', ' '},
{' ', ' ', ' '},
{' ', ' ', ' '}
};

char vencedor = ' ';


int turno = 0;

while (vencedor == ' ' && turno < 9) {


exibirTabuleiro(tabuleiro);
if (turno % 2 == 0) {
printf("Jogador X:\n");
jogadaJogador(tabuleiro);
} else {
printf("Computador O:\n");
jogadaComputador(tabuleiro);
}

vencedor = verificarVencedor(tabuleiro);
turno++;
}

exibirTabuleiro(tabuleiro);

if (vencedor == 'X') {
printf("O jogador X venceu!\n");
} else if (vencedor == 'O') {
printf("O jogador O venceu!\n");
} else {
printf("O jogo terminou em empate!\n");
}

return 0;
}

Você também pode gostar