A classe Wheel.java implementa uma simples roda, a qual é uma String array. Nós definimos a roda como uma String array porque um dos dados do array é a String “falência”.
Para manter todos os dados do mesmo tipo no array, todos os outros inteiros também serão convertidos como um tipo de String. Além do mais, modelar a roda com uma String array, permite qualquer extensão seja adicionada facilmente.
Por exemplo, o número de slots na roda pode ser aumentado ou diminuído. Como uma adição de “presente especial” ou “penalidade especial” no array.
Vamos assumir que o número total de slots na roda são 10 posições com o index de [5] para a “falência” e outros slots geraram aleatoriamente inteiros.
O método wheelTurns() da classe Wheel.java simula o giro da roda e pega um index aleatório do array. Quando o jogador invoca o método player.turnWheel(), ele retorna uma pontuação do tipo String.
Se a String não é “falência”, a String é convertida em int; caso contrário, ele converte a “falência” em um inteiro com o valor -1. O valor retornado da classe GamePanel.java como o wheelScore para o jogador incluem o -1 como o indicador de “falência”. Infelizmente, nesse jogo de texto nós temos que omitir qualquer tipo de “ação real” para a roda.
O objeto roda da classe Wheel.java é instanciada na classe GamePanel.java desde que seja um componente global. Contudo, os jogadores devem ser capazes de tocar o objeto roda para girar.
Isto é, a classe Player.java precisa de um novo método o turnWheel() que é capaz de invocar o método wheel.wheelTurns() definido em outro objeto wheel.
Por esta razão, um canal especial de comunicação permite ao jogador tocar o objeto roda. Portanto, uma variável “wheel” é declarada na classe Player.java e o método setWheel() é adicionado para permitir a classe GamePanel.java passar o objeto wheel para o método setter da classe Player.java.
Isso é muito útil para passar um objeto de uma classe para a outra. Vamos ao código:
Player.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
public class Player{ //há codigos omitidos nessa classe public int turnWheel(){ String wheelScoreStr; int wheelScore; wheelScoreStr = wheel.wheel.Turns(); if(!(wheelScoreStr.equals("falência"))){ wheelScore = Integer.parseInt(wheelScoreStr); }else{ wheelScore = -1; } return wheelScore; } //há codigos omitidos nessa classe public void setWheel(Wheel wheel){ this.wheel = wheel; } } |
Esse código ilustra o relacionamento entre classes. Podemos pensar que o “jogador que vira a roda” deixa a classe Player.java instanciar um objeto de roda.
Se modelarmos a classe Player.java dessa maneira, então quando instanciarmos três objetos jogador, cada jogador tem sua própria roda e cada jogador gira a sua roda ao invés de partilhar uma roda global.
Obviamente, isso não é verdade porque o jogo tem apenas uma roda compartilhada para os três jogadores. Contudo, nós temos um objeto roda global que é instanciado pela a classe GamePanel.java e passa por todo jogador.
EECS 285 Project 3: Wheel of Fortune
Fonte: Learning Java with Games
Deixe um comentário