eu tenho o seguinte código, que cria uma arraylista de cinco cartas
// 1
public Card pickRandomCard() {
System.out.println(deckOfCards.get(rand));
return deckOfCards.get(rand++);
}
List<Card> hand = new ArrayList<Card>();
for(int i = 0; i < 5; i++){
hand.add(gr.pickRandomCard());
}
eu preciso determinar se o jogador fez bluf, não assistiu, qual a melhor forma de fazer isso? comparando as listas com a carta jogada do primeiro jogador?
não conheço muito jogos de cartas, mas acredito que o certo é você varrrer duas listas por vez e comparar.
Você pode usar um comparator para colocar em alguma ordem.
O rand e apenas uma variável para incrementar para evitar que se repitam. O negócio e que neste jogo do king na primeira ronda e obrigatório assistir se tiver na mão. Minha ideia e comparar cada uma das listas das maos com a carta jogada na mesa, e se ele podia ter assistido não permite a jogada
Dar à IA conhecimentos que o jogador não tem chama-se “Roubar com a IA”, é é considerado hoje em dia uma falha grave de game design.
Tente ir um pouco adiante. Como um jogador pode deduzir se outro está blefando? Ele conhece a própria mão, sabe o quanto o oponente trocou cartas (ou comprou cartas). Ele também pode conhecer o histórico do oponente, se blefa muito ou pouco, se corre muito ou pouco, etc.
Baseie sua IA nisso.
Lembre-se é fácil fazer uma IA que vence sempre. Afinal, ela conhece tudo à respeito do jogador, inclusive as cartas que ele tem na mão. Mas quem quer jogar com um oponente que nunca perde?
Ola vini Godoy, no caso o jogo e só entre humanos não há jogador virtual. Como voce sugere que faça? Permita o bluff até o jogador se denunciar? Isso exige gravar todo o registo das jogadas não? Qual sera a melhor forma?