Attualmente sto implementando qualcosa di abbastanza simile a dama. Quindi, ho questo gioco da tavolo e ci sono sia pezzi bianchi che neri. Dove non ci sono né pezzi bianchi o neri, non hai pezzi.Qual è la migliore struttura dati per rappresentare una scacchiera quando la velocità è la preoccupazione principale?
Attualmente sto facendo il metodo GetValidMoves()
che restituirà tutti i movimenti correnti che si possono fare con la scheda corrente.
Mi sto chiedendo quale potrebbe essere il modo migliore per rappresentare il consiglio. L'approccio ingenuo sarebbe quello di avere una matrice con 0's 1 e 2's (per nessun pezzo, pezzo bianco e pezzo nero).
Altra idea sarebbe quella di una rappresentazione a matrice della scheda, avere 2 liste (o qualsiasi altra struttura dati): una per pezzi neri, l'altra per il bianco.
Sto implementando questo gioco per testare alcuni algoritmi di intelligenza artificiale, quindi la mia preoccupazione principale è la velocità. Fonderò fondamentalmente 2 giocatori IA che si giocano, per ogni turno ogni giocatore dovrebbe avere una lista di tutte le sue mosse valide e poi sceglierà quale mossa fare, questo succede sempre fino alla fine del gioco (qualche giocatore vince o c'è un cravatta).
PS: Non sto chiedendo circa l'algoritmo di intelligenza artificiale, voglio solo sapere cosa sarebbe la migliore struttura di dati per gestire il bordo, in modo che lo rende facile da
- cercare tutti i mosse valide per il giocatore attuale
- Fai una mossa
- Verifica che il gioco non sia finito (è finita quando un giocatore ha perso tutti i suoi pezzi o un giocatore ha raggiunto l'altro lato del tabellone).
Questo sarà praticamente uguale a una matrice di ints (ovvero un array 2D). E questo sarà ancora più lento di una matrice. –
non essere sciocco. Gestire una matrice di ints richiede almeno 64 operazioni ogni volta. L'utilizzo di una mappa bit in un int a 64 bit può effettuare confronti ecc in un'unica operazione. –
sono curioso di vedere quali operazioni sarebbero necessarie per capire le possibili mosse date la rappresentazione bitmap. – jlewis42