Olá galera,
O pessoal aqui sempre fala para tentar fazer algum código antes e colocar aqui, para tirar dúvida, mas o que vou perguntar aqui não está relacionado com o código em si, e sim em como estruturar o programa.
Tenho que fazer um jogo que funciona da seguinte maneira:
[list]Criar uma pilha de bolas. Ela deve ter entre 10 e 100 bolas[/list]
[list]Sortear um jogador para começar (são dois jogadores)[/list]
[list]As jogadas se resumem em retirar bolas da pilha. Deve-se tirar no mínimo uma bola, e no máximo metade do número de bolas na pilha[/list]
[list]O jogador adversário pode ser um humano, ou o computador (burro ou inteligente)[/list]
[list]O jogador que retirar a última bola perde[/list]
No exercício, devo criar as seguintes classes: Pilha, Jogador e Jogo
Não consegui imaginar a melhor maneira (na verdade nenhuma maneira) para estruturar esse programa.
Algumas coisas que já consegui pensar:
A pilha deve ter o atributo número de bolas. É esse atributo que vai “guiar” o jogo.
O jogador precisa ser humano ou computador. No caso se der humano, recebe jogadas. No caso de ser computador terá dois comportamentos: burro e inteligente.
Já tenho o algoritmo que representa tais comportamentos.
O que não consegui pensar é o comportamento do jogo em si. Nunca fiz nada parecido.
Quais métodos a Pilha, o Jogador e o Jogo devem ter? Não consegui imaginar o funcionamento.
Será que alguém pode me ajudar?
Já criei a classe Pilha que gera o número aleatório de bolas, entre 10 e 100
package nimGame;
/**
* Pilha de bolas para o jogo de Nim.
*
* @author joaodaniel
*
*/
public class Pile {
/**
* Constrói pilha de bolas. O número de bolas pode ser entre 10 e 100.
*/
public Pile() {
while (numBalls < 10) {
this.numBalls = (int) Math.round(Math.random() * 100);
}
}
/**
* Retorna o número de bolas na pilha
*
* @return número de bolas
*/
public int getNumBalls() {
return numBalls;
}
private int numBalls;
}
Consegui criar também alguma coisa para a classe do Jogo. Defini um atributo que seria o próximo jogador. Para cada o jogada o programa verifica quem é o próximo jogador e pede por sua jogada. O método sortPlayer sorteia o jogador que irá começar a partida.
[code]
package nimGame;
/**
- Classe do Jogo de Nim
- @author joaodaniel
/
public class Game {
/*
* Executa o sorteio do jogador que irá começar a partida
*/
public void sortPlayer() {
double random = Math.random();
if (random < 0.5)
this.nextPlayer = 1;
else
this.nextPlayer = 2;
}
private int nextPlayer;
}[/code]