Você está visualizando atualmente Jogo da velha com a linguagem de programação C – Parte V

Jogo da velha com a linguagem de programação C – Parte V

Olá programadores, programadoras e curiosos de plantão. Vamos dar continuidade ao desenvolvimento do nosso jogo da velha com a linguagem de programação C?

Se você perdeu o início de nossa série, você pode acessar cada uma das partes pelos links abaixo. Corre lá:

Parte I

Parte II

Parte III

Parte IV

Hoje trabalharemos no procedimento que é de fato o coração de nosso jogo da velha, o procedimento jogar.

Antes de começar a escrever linhas de código, é extremamente importante ter claro em mente qual a sequência de passos a ser executada desde a primeira jogada até que alguém vença ou que o jogo termine.

Para isso, apresentamos a seguir um algoritmo para o procedimento jogar(). Lembre-se que um algoritmo é a sequência de passos necessários para se resolver um problema, neste caso o jogo da velha.

Algoritmo para o procedimento jogar()

1 – imprimir tabuleiro;
2 – pedir que o jogador digite a coordenada desejada;
3 – ler a coordenada digitada;
4 – se a coordenada for inválida ou não estiver vazia, voltar ao passo 1;
5 – senão, salvar a jogada na matriz;
6 – verificar se houve ganhador;
7 – se não houve ganhador e a quantidade de jogadas for menor que 9, voltar ao passo 1;
8 – se não houve ganhador e a quantidade de jogadas for igual a 9, finaliza o jogo sem ganhador;
9 – senão, finaliza o jogo e informa quem foi o vencedor;

Esta é apenas uma solução proposta. Como estamos falando em algoritmo (uma sequência de passos para resolver um problema), é bem provável que você pense em algo ligeiramente diferente, mas que ao final obtenha o mesmo resultado.

De modo geral, os passos importantes são:

1 – ler uma jogada;
2 – verificar se houve ganhador ou se o jogo terminou sem vencedor;

Uma vez que construímos nosso algoritmo, agora precisamos apenas traduzir as ideias expressas pelo algoritmo para a linguagem de programação C.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
void jogar() {
int x, y, valida, jogadas = 0, ganhou = 0, ordem = 1;
do {
do {
imprimir();
printf("\nDigite a coordenada que deseja jogar: ");
scanf("%d%d", &x, &y);
valida = coordenadaEhValida(x, y);
if(valida == 1)
valida += posicaVazia(x, y);
} while(valida != 2);
if(ordem == 1)
jogo[x][y] = 'x';
else
jogo[x][y] = '0';
jogadas++;
ordem++;
if(ordem == 3)
ordem = 1;
ganhou += ganhouLinhas();
ganhou += ganhouColunas();
ganhou += ganhoudiagPrincipal();
ganhou += ganhoudiagSecundaria();
} while(ganhou == 0 && jogadas < 9);
if(ganhou != 0) {
if(ordem - 1 == 1)
printf("\nParabens. Voce venceu %s\n", jogador1);
else
printf("\nParabens. Voce venceu %s\n", jogador2);
} else
printf("\nQue feio. Ninguem venceu!\n\n");
}
void jogar() { int x, y, valida, jogadas = 0, ganhou = 0, ordem = 1; do { do { imprimir(); printf("\nDigite a coordenada que deseja jogar: "); scanf("%d%d", &x, &y); valida = coordenadaEhValida(x, y); if(valida == 1) valida += posicaVazia(x, y); } while(valida != 2); if(ordem == 1) jogo[x][y] = 'x'; else jogo[x][y] = '0'; jogadas++; ordem++; if(ordem == 3) ordem = 1; ganhou += ganhouLinhas(); ganhou += ganhouColunas(); ganhou += ganhoudiagPrincipal(); ganhou += ganhoudiagSecundaria(); } while(ganhou == 0 && jogadas < 9); if(ganhou != 0) { if(ordem - 1 == 1) printf("\nParabens. Voce venceu %s\n", jogador1); else printf("\nParabens. Voce venceu %s\n", jogador2); } else printf("\nQue feio. Ninguem venceu!\n\n"); }
void jogar() {
    int x, y, valida, jogadas = 0, ganhou = 0, ordem = 1;

    do {
        do {
            imprimir();
            printf("\nDigite a coordenada que deseja jogar: ");
            scanf("%d%d", &x, &y);
            valida = coordenadaEhValida(x, y);
            if(valida == 1)
                valida += posicaVazia(x, y);
        } while(valida != 2);
        if(ordem == 1)
            jogo[x][y] = 'x';
        else
            jogo[x][y] = '0';
        jogadas++;
        ordem++;
        if(ordem == 3)
            ordem = 1;
        ganhou += ganhouLinhas();
        ganhou += ganhouColunas();
        ganhou += ganhoudiagPrincipal();
        ganhou += ganhoudiagSecundaria();
    } while(ganhou == 0 && jogadas < 9);

    if(ganhou != 0) {
        if(ordem - 1 == 1)
            printf("\nParabens. Voce venceu %s\n", jogador1);
        else
            printf("\nParabens. Voce venceu %s\n", jogador2);
    } else
        printf("\nQue feio. Ninguem venceu!\n\n");
}

Se ficou alguma dúvida, compartilhe nos comentários que faremos o possível para esclarecer. Um grande abraço, bons estudos e até o próximo.

Este post tem um comentário

  1. Barataturbo

    Se podesse me ajudar como posso fazer um jogo da velha e depois guradar os resultados de cada jogador : as pontuações devem ser guardadas num ficheiro de jogo para cada
    jogador, onde deve ser registado os dados de jogador1 vs jogador 2 e o resultado.

Deixe um comentário

8 − cinco =

Wagner Gaspar

Capixaba de São Gabriel da Palha, Espírito Santo. Bacharel em Ciência da Computação pela Universidade Federal do Amazonas e mestre em informática pela Universidade Federal do Espírito Santo.