Para adicionar os três jogadores no jogo Roda da Fortuna 2, o construtor da classe GamePanel.java inicializa as variáveis numPlayer = 3 e currPlayer = 0 (atribua ao jogador o index 0 como o jogador atual).
O método initPlayer() define um array “Player[] playerAry = new Player[numPlayer];” imediatamente, utiliza o “for” para inicializar os três jogadores.
Dentro do “for”, aplica-se o operador “new” para instanciar um objeto do player e invoca o método initPlayerData() para inicializar o grupo de atributos com diferentes grupos de valores para cada objeto player.
Então, é guardada toda instância dos jogadores na playerAry. O método initPlayerData() contrata o JOptionPane.showInputDialog() como um mecanismo de entrada para emitir comandos e aceitar entrada de dados.
O bloco try-catch ainda está empregado para checar exceções. O código da classe GamePanel.java contém dois métodos initPlayer e initPlayerData().
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
import java.util.ArrayList; import javax.swing.JOptionPane; public classe GamePanel{ private Initializer initializer; private Player[] playerAry; private int numPlayer; private int currPlayer; public GamePanel(){ numPlayer = 3; currPlayer = 0; initComponent(); } private void initComponent(){ initPlayer(); //três jogadores com name, .... initializer = new Initializer(); initializer.initSentece(); startGame(); } public void initPlayer(){ playerAry = new Player[numPlayer]; for(int i = 0; i < numPlayer; i++){ playerAry[i] = new Player(); playerAry[i].setName(initPlayerData(i, "sex")); playerAry[i].setNumPlay(0); playerAry[i].setScore(0); } } public String initPlayerData(int idx, String title){ boolean hasInput = false; String titleStr = ""; char isEmpty; String numTh = "primeiro"; switch(idx){ case 0: numTh = "primeiro"; break; case 1: numTh = "segundo"; break; case 2: numTh = "terceiro"; break; } while(!hasInput){ titleStr = JOptionPane.showInputDialog("Digite " + numTh + " jogador " + title); try{ isEmpty = titleStr.charAt(0); hasInput = true; }catch(StringIndexOutOfBoundsException e){ showMsg("Você digitou algo inválido " + title + ". Digite novamente."); }catch(NullPointerException ex){ showMsg("Você clicou em cancelar."); abortGame(); } } return titleStr; } public void startGame(){ ArrayList<Integer> idxList; //a letra pode ter múltiplos acertos boolean guessValid; char PlayerGuess; while(currPlayer < 3){//habilita o próximo jogador guessValid = true; showMsg("Jogador atual " + playerAry[currPlayer].getName() + " está jogando:"); while(guessValid){//o jogador atual continua a jogar playerGuess = playerAry[currPlayer].inputGuess(); idxList = initializer.receiveGuess(playerGuess); if(idxList.isEmpty()){//o jogador não acertou a letra showMsg("A letra " + playerGuess + " não foi encontrada na frase."); guesseValid = false; //o próximo jogador começa a jogar }else{ showMsg("O palpite do jogador " + playerGuess + " achou " + idxList.size() + " na frase."); } } currPlayer = (currPlayer + 1) % numPlayer; //muda para o próximo jogador } } public void abortGame(){ showMsg("O jogo foi abortado"); System.exit(0); } public void showMsg(String msg){ System.out.pritln(msg); } } |
Fonte: Learning Java with Games
Deixe um comentário