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á:
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.
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.
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.