// vou definir o tabuleiro do jogo
int board[3][3] = {
{0, 0, 0},
{0, 0, 0},
{0, 0, 0}
};
// Função para verificar se um jogador ganhou
bool checkWin(int player) {
// Verificar as linhas
for (int i = 0; i < 3; i++) {
if (board[i][0] == player && board[i][1] == player && board[i][2] == player)
return true;
}
// Verificar as colunas
for (int i = 0; i < 3; i++) {
if (board[0][i] == player && board[1][i] == player && board[2][i] == player)
return true;
}
// Verifica as diagonais
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;
}
// Função para verificar se o tabuleiro está cheio
bool checkDraw() {
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
if (board[i][j] == 0)
return false;
}
}
return true;
}
// Função para imprimir o tabuleiro no console
void printBoard() {
Serial.println("Tabuleiro:");
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
if (board[i][j] == 0) Serial.print(".");
else if (board[i][j] == 1) Serial.print("X");
else Serial.print("O");
Serial.print(" ");
}
Serial.println();
}
Serial.println();
}
void setup() {
Serial.begin(9600); // Inicializa a comunicação serial
Serial.println("Jogo da Velha Iniciado");
}
void loop() {
int currentPlayer = 1; // Começa com o jogador 1 (X)
bool gameWon = false;
// Simulação de uma partida
for (int turn = 0; turn < 9 && !gameWon; turn++) {
int row = turn / 3; // Define a linha da jogada
int col = turn % 3; // Define a coluna da jogada
// Atualiza o tabuleiro com a jogada atual
board[row][col] = currentPlayer;
// Exibe o estado atual do tabuleiro
printBoard();
// Verifica se o jogador atual ganhou
if (checkWin(currentPlayer)) {
Serial.print("Jogador ");
Serial.print(currentPlayer);
Serial.println(" venceu!");
gameWon = true;
}
// Alterna o jogador
currentPlayer = (currentPlayer == 1) ? 2 : 1;
delay(1000); // Aguarda 1 segundo antes da próxima jogada
}
if (!gameWon) {
Serial.println("Empate!");
}
// Espera indefinidamente após o jogo terminar
while (true) {
delay(1000);
}
}