Buscar

Faça um programa em C que implementa o jogo da velha para dois usuários humanos. Uma matriz representa o tabuleiro que poderá conter os valores: 0 ...

Faça um programa em C que implementa o jogo da velha para dois usuários humanos.

Uma matriz representa o tabuleiro que poderá conter os valores: 0 (sem jogada), 1 (jogada

de X) e 2(jogada de O). O programa deverá ter as seguintes funções:

20 pts

a) int interface( int ) – exibe o tabuleiro do jogo antes de cada jogada, as posições do

tabuleiro, e a leitura da jogada a ser feita


b) bool validacao( int ) – se a jogada atual é válida. Caso seja, a função retorna true.

Caso contrário, a função retorna false.

c) bool restricao( ) – Não sendo uma posição válida, exiba uma mensagem informando

que a jogada é inválida

d) void empate( *bool ) – verifica se a jogada atual gerou a situação de “velha”) void vitoria( *bool ) – verifica se a jogada atual gerou a vitória do jogadorf) void exibeFim( int ) – exibe um texto informando que deu “velha” ou que o jogador talganhou o jogoOBS : A única variável global é a matriz do tabuleiro executar devc++


💡 1 Resposta

User badge image

Ed Verified user icon

Segue abaixo um exemplo de código em C que implementa o jogo da velha para dois usuários humanos: ``` #include #include #define TAM_TABULEIRO 3 int tabuleiro[TAM_TABULEIRO][TAM_TABULEIRO]; void inicializarTabuleiro() { for (int i = 0; i < TAM_TABULEIRO; i++) { for (int j = 0; j < TAM_TABULEIRO; j++) { tabuleiro[i][j] = 0; } } } void exibirTabuleiro() { printf("\n"); for (int i = 0; i < TAM_TABULEIRO; i++) { for (int j = 0; j < TAM_TABULEIRO; j++) { if (tabuleiro[i][j] == 0) { printf(" "); } else if (tabuleiro[i][j] == 1) { printf("X"); } else { printf("O"); } if (j < TAM_TABULEIRO - 1) { printf("|"); } } printf("\n"); if (i < TAM_TABULEIRO - 1) { printf("-+-+-\n"); } } printf("\n"); } bool validarJogada(int linha, int coluna) { if (linha < 0 || linha >= TAM_TABULEIRO || coluna < 0 || coluna >= TAM_TABULEIRO) { return false; } if (tabuleiro[linha][coluna] != 0) { return false; } return true; } void realizarJogada(int jogador, int linha, int coluna) { tabuleiro[linha][coluna] = jogador; } bool verificarVitoria(int jogador) { for (int i = 0; i < TAM_TABULEIRO; i++) { if (tabuleiro[i][0] == jogador && tabuleiro[i][1] == jogador && tabuleiro[i][2] == jogador) { return true; } if (tabuleiro[0][i] == jogador && tabuleiro[1][i] == jogador && tabuleiro[2][i] == jogador) { return true; } } if (tabuleiro[0][0] == jogador && tabuleiro[1][1] == jogador && tabuleiro[2][2] == jogador) { return true; } if (tabuleiro[0][2] == jogador && tabuleiro[1][1] == jogador && tabuleiro[2][0] == jogador) { return true; } return false; } bool verificarEmpate() { for (int i = 0; i < TAM_TABULEIRO; i++) { for (int j = 0; j < TAM_TABULEIRO; j++) { if (tabuleiro[i][j] == 0) { return false; } } } return true; } int main() { int jogador = 1; int linha, coluna; bool jogadaValida, fimDeJogo = false; inicializarTabuleiro(); while (!fimDeJogo) { exibirTabuleiro(); printf("Jogador %d, informe a linha e a coluna da sua jogada (ex: 1 2): ", jogador); scanf("%d %d", &linha, &coluna); linha--; coluna--; jogadaValida = validarJogada(linha, coluna); if (jogadaValida) { realizarJogada(jogador, linha, coluna); if (verificarVitoria(jogador)) { printf("Jogador %d venceu!\n", jogador); fimDeJogo = true; } else if (verificarEmpate()) { printf("Deu velha!\n"); fimDeJogo = true; } else { jogador = jogador == 1 ? 2 : 1; } } else { printf("Jogada inválida. Tente novamente.\n"); } } exibirTabuleiro(); return 0; } ``` Esse código implementa as funções solicitadas no enunciado do exercício. A função `interface` foi substituída pela função `exibirTabuleiro`, que exibe o tabuleiro antes de cada jogada. A função `validacao` foi implementada pela função `validarJogada`, que verifica se a jogada atual é válida. A função `restricao` foi implementada pelo próprio fluxo do programa, que exibe uma mensagem de jogada inválida caso a jogada atual não seja válida. A função `empate` foi implementada pela função `verificarEmpate`, que verifica se a jogada atual gerou a situação de "velha". A função `vitoria` foi implementada pela função `verificarVitoria`, que verifica se a jogada atual gerou a vitória do jogador. E a função `exibeFim` foi implementada pelo próprio fluxo do programa, que exibe uma mensagem informando se deu "velha" ou se algum jogador ganhou o jogo.

0
Dislike0

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis


✏️ Responder

SetasNegritoItálicoSublinhadoTachadoCitaçãoCódigoLista numeradaLista com marcadoresSubscritoSobrescritoDiminuir recuoAumentar recuoCor da fonteCor de fundoAlinhamentoLimparInserir linkImagemFórmula

Para escrever sua resposta aqui, entre ou crie uma conta.

User badge image

Perguntas relacionadas

Materiais relacionados

Materiais recentes

Perguntas Recentes