Logica em um jogo de Truco

Então galera, é o seguinte:

Estou desenvolvendo um jogo de truco em Java com Swing e estava pensando qual a melhor estrategia para rankear as cartas.
Não tenho muita idéia de como fazer isso…
Estava pensando em pegar as 12 cartas (3 de cada um dos 4 jogadores) e montar tipo uma lista, fila sei la, de acordo com o ranking, da mais forte pra mais fraca.
Dai de acordo com q os caras vao jogando, vai removendo dessa estrutura e ja compara pela posição qual a maior a carta (ou empate) e da os pontos pra dupla.

Como vcs recomendariam que eu fizesse isso ?

Lembrando que na minha classe Carta, eu tenho essas variaveis:

private int valorCarta; private boolean eManilha; private char naipe; private boolean selecionada; private String cartaNaipada; private char valorAbsoluto;

Inicio o baralho de 0 a 39, ja organizando por valor e naipe, onde 0 é o 4 no truco (+fraco) e o 9 é o 3(mais forte) obviamente sem contar o vira, dai so uso modulo pra ir dividindo as cartas por valor, esquecendo o naipe, ja que ele so e usado para ver manilha.
Img para vcs entenderem o ranking por valor:

Uploaded with ImageShack.us

Ideias são bem vindas !

Obrigado !

Alguma ideia galera ?

Olá,

Eu pensaria em algo assim:

class Carta {
    private Naipe naipe;
    private ValorCarta valor;
}

enum Naipe {
    DIAMONDS, SPADES, HEARTS, CLUBS	
}

enum ValorCarta {
    _4(1), 
    _5(2), 
    _6(3), 
    /*.....*/ , 
    K(10), 
    A(11), 
    _2(12), 
    _3(13);
    
    // O nome representa o valor de face da carta, o valor é o valor
    // que ela tem no truco.
    int valorTruco; 
}

class CartaJogada {
    private Carta carta;
    private Jogador jogador;
    private int valor;
}

A lógica seria essa:

  • Primeiro você cria o baralho, que é uma coleção de cartas fazendo todas as combinações entre naipes e valores.

  • Do baralho, tira 3 para cada jogador e tira o “vira”; o resto não é usado na rodada.

  • Inicialize uma coleção de CartaJogada, que serão as cartas efetivamente jogadas naquela rodada

  • A Cada carta jogada pelos jogadores, é criada uma instância de CartaJogada contendo: referência à carta, referência ao jogador e o valor. Verifique se a carta é manilha (seguinte ao Vira), se for atribua um valor especial dependendo do naipe; senão será o valor dela mesma.

  • No final da rodada você terá 4 CartaJogada, basta ver a que tem maior valor e automaticamente saberá quem jogou.

1 curtida

Vlw pela dica, vo tentar implementar desse jeito !

Viu galera, meu projeto ta sendo hospedado como open source no google, ta bem tosco, pq eu to aprendendo a programar em java ainda !
Se algm se interessar em fazer parte e quiser em ajudar, me da um toque por MP ou aki no post msm !
http://code.google.com/p/trucomaogrande/

Abraço