Come configurare l'IA semplice del gioco con jtable

3

Sto sviluppando un'applicazione con metodi di questo tipo:

attackIfIsFar();
protectIfIsNear();
helpAfterDeadOf();
helpBeforeAttackOf();

ecc.

L'inizializzazione della mia applicazione per n giocatori è qualcosa come

player1.attackIfIsFar(player2);
player2.protectIfIsNear(player4);
player3.helpAfterDeadOf(player1);
player4.helpBeforeAttackOf(player3);

ecc.

Non so come configurare un jtable che possa permettermi di impostare l'equivalente di questo blocco di codice

In altre parole ho bisogno semplicemente di un modo per creare un jolly con 3 colonne e n righe, se posso impostare nella colonna 1 e 3, il giocatore, e nella colonna centrale uno dei metodi disponibili che ogni giocatore su la colonna 1 deve invocare su ciascun giocatore della colonna 3

    
posta Asgard 19.06.2012 - 20:35
fonte

1 risposta

2

Prima devi avere una classe per rappresentare l'espressione.

public class Expression {
  private Person lhs;
  private Person rhs;
  private Action action;
}

Quindi devi creare un TableModel che è supportato da un elenco di Expression s. Il conteggio delle colonne sarà 3 e il conteggio delle righe corrisponderà alla dimensione dell'elenco. Il resto dei metodi è abbastanza semplice da implementare mappando la riga e / o la colonna al rispettivo Expression e / o campo.

Quindi hai bisogno di un JTable che imposta la TableCellEditor per ogni colonna. Ciascuno dei quali sarebbe una casella combinata con le opzioni disponibili per il rispettivo campo. Se hai bisogno di ulteriore aiuto con le tabelle, leggi questo tutorial .

Una volta configurati tutti i valori, dovrai creare una logica che valuti le espressioni e invochi i metodi corretti.

Modifica
Ecco un esempio di editor di celle molto semplice. Puoi prendere provvedimenti per non popolare le caselle combinate con un valore che consenta all'utente di selezionare un valore non valido.

@Override
public TableCellEditor getCellEditor(int row, int col)
{
  switch (col) {
  case 0:
  case 2:
    return new DefaultCellEditor(new JComboBox(LIST_OF_PEOPLE));
  case 1:
    return new DefaultCellEditor(new JComboBox(LIST_OF_ACTIONS));
  default:
    return super.getCellEditor(row, col);
  }
}
    
risposta data 19.06.2012 - 23:45
fonte

Leggi altre domande sui tag