Modo efficiente per rappresentare la logica della tavola esagonale per giochi simili all'abalone


11

Devo implementare l'intelligenza artificiale per il gioco Abalone e mi chiedo quale sia il modo migliore per rappresentare la logica del board usando Java senza sprecare troppe risorse in tutte le routine di controllo e aggiornamento coinvolte.

È meglio usare vari elenchi? Una matrice di oggetti Cell? Qualche suggerimento?

inserisci qui la descrizione dell'immagine


1
Esiste una grande risorsa per le griglie esagonali su redblobgames.com Ha tutto ciò che devi sapere sulle griglie esagonali, i loro sistemi di coordinate e come fare calcoli su di esse.
Roman Reiner,

Risposte:


7

1) dal momento che la scheda ha una dimensione fissa che stai per alimentare comunque in un'intelligenza artificiale, potresti semplicemente rappresentarla come un array unidimensionale con il giusto numero di celle, dove ogni cella rappresenta uno spazio sul tavola. 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 vale per le mosse di validazione; è possibile creare una matrice di adiacenza che indichi quali celle sono adiacenti ad altre oppure creare una logica per determinare l'adiacenza. Ad ogni modo, sarebbe un costo una tantum.

2) Notare che ogni griglia esadecimale è 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 a tessere esadecimali usavano questo trucco per etichettare gli esagoni 1, 2, 3 in una direzione e AA, BB, CC nell'altra, inclinata, direzione.)

Ho esaminato il codice sorgente per le implementazioni su computer dei giochi da tavolo che usano (2) e fornivano routine come "trova una linea tra esagoni" o "trova la distanza tra esagoni". È stato tanto tempo fa, quindi i dettagli sono andati perduti nel tempo, ma ricordo che non è stato troppo difficile.

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


1
Per un'intelligenza artificiale da utilizzare anni fa, avevo un array di celle 19x19 e un array di puntatori 192x5 a celle che l'IA ha poi usato per capire la sua mossa.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.