Pseudo Código
Vamos ver novamente o pseudo código do nosso jogo.
1. GamePanel.java instância um objeto do Initializer initializer (1 e 2).
2. GamePanel.java instância um objeto de Player player (3 e 4).
3. GamePanel.java invoca o método initializer.initGame() (5), a qual gera um inteiro entre 1 e 100 (6).
4. GamePanel.java invoca o método player.playingGame() (7), que permite o player digitar um número para uma variável guessedInt e retorna o valor para o GamePanel.java (8).
5. GamePanel.java envia o valor de guessedInt submetido pelo o jogador para o método intializer.receiveGuess() (9), o qual invoca intializer.isGuessCorrect(), método que diz se o número é maior, menor ou correto (10).
6. Se “correto”, executa o método terminateGame() o qual mostra ao jogador “Você acertou xx vezes” e o jogo termina. Retorna para o passo 4.
No pseudo código no passo 4, o qual indica que se o resultado não for o esperado, executa novamente o passo 4. Esse passo é representado no método playGame() da classe GamePanel.java.
public void playGame(){
while(!guessCorrect){
numGuess++;
playerInt = player.playingGame();
guessCorrect = initializer.receiveGuess(playerInt);
}
terminateGame();
}
while
Enquanto o guessCorrect é true, o jogador tenta adivinhar novamente o número escolhido pelo o programa, se o guessCorrect é false, então o jogo termina, porque o jogador descobriu o número que o programa escolheu.
Essa capacidade do método playGame() de executar várias vezes até a variável guessCorrect ser false, deve-se a declaração while que é chamada de laço de repetição ou loop. O while compara o resultado da chamada do método receiveGuess(playerInt).
Podemos entender que a declaração “while” é uma extensão da declaração “if” porque ambas são baseadas em condições. Definitivamente, o “while” é diferente do “if”, desde que o “while” checa a condição múltiplas vezes até o resultado for false. Mas o “if” checa a condição apenas uma vez.
Vamos ver um diagrama para entender melhor o fluxo de adivinhação do número, o método isGuessCorrect(int playerGuess) que está na classe Initializer.java que é chamado pelo método playGame() que está na classe GamePanel.java.
Como você pode ver é o while que possibilita que o jogo não termine enquanto o jogador não acertar o número (givenInt) correto.
Fonte: Learning Java with Games
Deixe um comentário