Cursos / Jogos Digitais / Programação Estruturada / Aula

arrow_back Aula 13 - Desenvolvendo um jogo da velha

4. Fazendo e Validando as Marcações

Já desenhamos o tabuleiro. Como fazer, então, para definir de que forma serão feitas as marcações de cada jogador?

Vimos, há pouco, que precisamos definir uma variável (jog) para armazenar o jogador da vez.

Com base nessa variável é que o computador vai definir de quem é a vez e o símbolo que será marcado. A função jogar, cujo código completo você verá mais adiante, recebe como argumento uma variável do tipo int, a que chamamos jogador.

O programa lê o argumento e define, a partir dele, quem é o jogador da vez para, em seguida, informar isso aos usuários. Veja o trecho de código a seguir.

O programa recebe o argumento no procedimento jogar e, caso o valor da variável jogador seja 1, esse valor é armazenado na variável jog. O mesmo ocorre se o valor da variável for 2. Esse valor é determinado na rotina principal (main, que veremos mais adiante) do programa, quando o procedimento jogar é “chamado”.

A variável jog será utilizada na mensagem que informa ao usuário de quem é a vez.

Bom, já sabemos como mostrar de quem é a vez de jogar. Mas ainda temos que determinar como serão feitas as marcações no tabuleiro. Precisamos, para isso, oferecer as opções para que o jogador escolha em que campo do tabuleiro (em que linha e coluna da matriz) irá fazer a sua marcação.

As variáveis (linha e coluna) do tipo int que declaramos junto com a variável jog lá no início serão utilizadas nesse momento, para armazenar os valores das linhas e colunas digitados pelo jogador. Podemos fazer isso acrescentando ao código anterior a solicitação para que o jogador da vez escolha a linha e a coluna em que fará sua marcação. Veja:

Mas não é só isso. Precisamos validar a escolha do jogador. Se a linha ou coluna escolhida for maior que 3 ou menor que 1, a marcação não pode ser feita, pois o nosso tabuleiro só tem linhas e colunas de 1 a 3.

É importante avisar ao jogador, caso isso ocorra. Veja o código a seguir, com o procedimento jogar ainda incompleto, mas um pouco mais elaborado, com a validação da escolha do usuário.

Leia os comentários que estão no código (as linhas com //, lembra?).

Veja que, após a leitura da escolha do usuário (para a linha e para a coluna), temos um IF que valida a escolha, avisando que não é permitido escolher linha ou coluna menor que 1 ou maior que 3.

Veja, também, que a seleção da linha e a seleção da coluna estão inseridas, cada uma, em uma estrutura while. Isso é feito para que, enquanto o valor da linha e/ou da coluna digitado pelo jogador for inválido, a mensagem que solicita a escolha de uma linha e/ou coluna válida seja exibida.

Dessa forma, o programa só passa para a parte seguinte do código após a seleção validada desse ponto de vista (linha e coluna com valor entre 1 e 3). Feito isso, ainda falta uma validação importante: se o jogador tentar marcar um campo que não esteja vazio, ele deve ser avisado de que não pode fazer isso. Veja o trecho de código a seguir.

O trecho de código analisa se o campo selecionado pelo jogador da vez não está marcado. Se não estiver, é feita a marcação com o símbolo do jogador da vez (jog) e o contador do laço while recebe o valor 1. Essa alteração no valor do contador ocorre para que, ao ser feita a marcação, a execução saia do laço (lembre-se de que a condição para o laço era o contador i = 0). Já que a marcação foi realizada, não há mais porque permanecer no laço.

Caso o campo escolhido pelo jogador já esteja marcado, o IF não é executado, mas sim o ELSE, em que uma mensagem avisa ao jogador para escolher outro campo. A jogada só é concluída quando a condição do IF é atendida. Só assim a marcação é realizada e o contador é alterado, para a execução sair do laço. Veja o código do procedimento jogar completo a seguir.

Versão 5.3 - Todos os Direitos reservados