Modo efficace per rappresentare la logica della tavola esagonale per giochi tipo abalone

11

Devo implementare l'intelligenza artificiale per il gioco Abalone e mi chiedo quale sia il modo migliore per rappresentare la logica della scheda che utilizza Java senza sprecare troppe risorse in tutti i controlli e le routine di aggiornamento coinvolte.

È meglio usare varie liste? Una matrice di oggetti Cell? Qualche suggerimento?

    
posta Asgard 27.12.2014 - 18:14
fonte

1 risposta

7

1) dal momento che la scheda ha una dimensione fissa che si sta per alimentare in una IA, si potrebbe semplicemente rappresentarla come una matrice unidimensionale con il giusto numero di celle, dove ogni cella rappresenta un spazio alla lavagna. Mappare quell'array monodimensionale sullo schermo per la presentazione potrebbe essere un po 'strano, ma è un problema che devi risolvere solo una volta.

Lo stesso si applica alla convalida delle mosse; è possibile creare una matrice di adiacenza che indichi quali celle sono adiacenti ad altre o generare logica per determinare l'adiacenza. Ad ogni modo, sarebbe un costo una tantum.

2) Si noti che ogni griglia esagonale è anche una griglia a due assi, tranne per il fatto che gli assi sono 60 o 120 gradi l'uno dall'altro, invece di 90 gradi come le griglie in cui X e Y sono perpendicolari. (I vecchi giochi da tavolo delle mattonelle esagonali usavano questo trucco per etichettare gli esagoni 1, 2, 3 in una direzione e AA, BB, CC nell'altra direzione, inclinata.)

Ho esaminato il codice sorgente per le implementazioni di computer dei giochi da tavolo che utilizzano (2) e hanno fornito routine come "trova una linea tra gli esagoni" o "trova la distanza tra gli esagoni". È stato tanto tempo fa, quindi i dettagli sono persi nel tempo, ma ricordo che non era troppo difficile.

(Era più matematica intera piuttosto che roba pitagorica.))

    
risposta data 27.12.2014 - 18:26
fonte

Leggi altre domande sui tag