Ir ao conteúdo
  • Cadastre-se

Ajuda em programção Jogo


jonatas.1989

Posts recomendados

Boa noite,

Estou com dificuldade em implementar um código. :(

O meu jogo é composto por 5 dados, quando eu jogo os dados, tenho que selecionar 3 dados que eu queira ou nem um, ai o jogo novamente os dados restantes e seleciono quantos faltam ou nem um e jogo novamente os dados.

Alguém pode ajudar? :D

Abaixo código que tenho:

*Classe dado:



public static Dado UM = new Dado(6,1);
public static Dado DOIS = new Dado(6,2);
public static Dado TRES = new Dado(6,3);
public static Dado QUATRO = new Dado(6,4);
public static Dado CINCO = new Dado(6,5);
public static Dado SEIS = new Dado(6,6);

private static Random roleta = new Random();
private int value = 0;
private int faces = 6;


public Dado() {
lancar();
}

public Dado(int faces, int value) {
this.faces = faces;
this.value = value;
}

public Dado(int faces) {
this.faces = faces;
lancar();
}

public int lancar() {
return value = 1 + roleta.nextInt(faces);
}

public int hashCode() {
int hash = 0;
hash = hash + this.value * this.faces;
return hash;
}

public boolean equals(Object o) {
if (o instanceof Dado)
return equals((Dado)o);
return false;
}

public boolean equals(Dado dado) {
return (value == dado.getValue()) ? true : false;
}

public int getValue() {
return value;
}

public int compareTo(Dado o) {
return this.value - o.value;
}

public String toString() {
return String.valueOf(value);
}
}
public class Dado implements Comparable<Dado> {  

*Classe JogoGeneral


List<Dado> dados = new ArrayList<Dado>(5);

public JogoGeneral() {
for (int i = 0; i < 5; i++)
dados.add(new Dado(6));
Collections.sort(dados);
}

public List<Dado> getDados() {
return dados;
}

public ResultadoJogoGeneral getResultado() {
return ResultadoJogoGeneral.getResult(this);
}

public String toString() {
return Arrays.toString(dados.toArray());
}
}
public class JogoGeneral {  

*Classe Principal


public static void main(String[] args) {
JogoGeneral jogo;
for (int i = 0; i < 11; i++) {
jogo = new JogoGeneral();
System.out.print("Jogo = " + jogo);
System.out.println(" , resultado = " +jogo.getResultado());
}
}
}
public class Principal {

*Classe ResultadoJogo


/**
* Todos os 5 dados iguals por exemplo [3,3,3,3,3]
*/
GENERAL("General") {
public boolean teste(JogoGeneral jogo) {
Set<Dado> resultados = new HashSet<Dado>();
resultados.addAll(jogo.getDados());
return resultados.size() == 1;

//Set só aceita 1 objeto de cada tipo, sendo assim quando você joga todos os dados em um Set
//se o Set so contem um valor, é porque todos os dados saoiguais.
}
},
/**
* Quando 4 dos 5 dados são iguais, por exemplo [1,5,5,5,5]
*/
QUADRA("Quadra") {
public boolean teste(JogoGeneral jogo) {
Set<Dado> resultados = new HashSet<Dado>();
resultados.addAll(jogo.getDados());
if (resultados.size() != 2)
return false;
Dado primeiro = (Dado)resultados.toArray()[0];
int contagem = Collections.frequency(jogo.getDados(), primeiro);
return contagem == 4 || contagem == 1;

//Seguindo o mesmo raciocinio do General, em um Set dos dados
//Quando ha quadra, devem existir 2 dados no set
//e devem haver 4 dados de um tipo e 1 do outro, ou seja, o primeiro dado
//deve conter 4 ou 1 nos jogos.
}
},
/**
* Quando há 2 e 3 dados iguais, por exemplo [4,4,4,5,5]
*/
FULA("Fula") {
public boolean teste(JogoGeneral jogo) {
Set<Dado> resultados = new HashSet<Dado>();
resultados.addAll(jogo.getDados());
if (resultados.size() != 2)
return false;
int contagem = Collections.frequency(jogo.getDados(), (Dado)resultados.toArray()[0]);
return contagem == 2 || contagem == 3;

//Seguindo o mesmo raciocinio do General, em um Set dos dados
//Quando ha fula, devem existir 2 dados no set
//e devem haver 3 dados de um tipo e 2 do outro, ou seja, o primeiro dado
//deve conter 3 ou 2 nos jogos.
}
},
/**
* Quando ah uma sequencia, por exemplo [2,3,4,5,6]
*/
SEQUENCIA("Sequencia") {
public boolean teste(JogoGeneral jogo) {
Set<Dado> resultados = new HashSet<Dado>();
resultados.addAll(jogo.getDados());
if (resultados.size() != 5)
return false;

return !(resultados.contains(Dado.UM) && resultados.contains(Dado.SEIS));

//Seguindo o mesmo raciocinio do General, em um Set dos dados
//Quando ha sequencia, devem existir 5 dados no set, pois todos sao diferentes
//e os 5 dados devem ser uma sequencia, para tal,
//quando ha 1, o 6 não pode existir, ou seja [1,2,3,4,5]
//e quando ha 6, o 1 não pode existir, ou seja [2,3,4,5,6]
//sendo assim quando resultado nao contiver 1 e 6 ao mesmo tempo
}
},
//nenhum
NENHUM("Nenhum") {
public boolean teste(JogoGeneral jogo) {
return (getResult(jogo) == NENHUM) ? true : false;
}
};

public static ResultadoJogoGeneral getResult(JogoGeneral jogo) {

for (int i = 0; i < 4; i++)
if (values()[i].teste(jogo))
return values()[i];
return values()[4];
}

private final String nome;
private ResultadoJogoGeneral(String nome) {
this.nome = nome;
}
abstract public boolean teste(JogoGeneral jogo);
public String toString() {
return nome;
}
}
public enum ResultadoJogoGeneral {

Abraço ^_^

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois...

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!