Contesto : sto lavorando a una versione per console Windows del gioco da tavolo Spiacente. In Scusa, ogni giocatore ha quattro pedine. Basato su carte pescate, un giocatore muove le sue pedine attorno al tabellone. Queste mosse possono influenzare le pedine di altri giocatori, come battere di nuovo il pedone di un altro giocatore su Start.
Problema : insieme ai giocatori umani, voglio avere giocatori di computer. Quindi, sto cercando di scrivere un'IA semplice ma intelligente. Quando prende il suo turno, ogni giocatore di computer ottiene lo stato attuale della scacchiera e una serie di possibili nuovi stati di bordo tra cui scegliere, in base alla carta pescata e alle diverse mosse legali che possono essere fatte. Uno stato della scheda è una raccolta di oggetti Pawn, che conoscono la loro posizione sulla scacchiera.
Idee:
Idea n. 1: La mia prima idea AI è stata quella di convertire ciascuna scheda in un valore numerico e scegliere il valore più grande come la mossa migliore possibile. Per produrre un valore, ho dato a ciascun pedone del giocatore un valore e sommato i valori insieme. Il valore di una pedina aumenta man mano che si avvicina a casa. Il problema con questo approccio è che trascura la forza relativa di un avversario nel gioco. Ad esempio, se il giocatore ha due pedine, sceglierà sempre di muovere quello che avanza più vicino a casa. Tuttavia, più lontano si può urtare una pedina dell'avversario su Start, che potrebbe essere una scelta migliore.
Idea n. 2: La mia seconda idea era di sommare i delta dello stato della scheda. Nello specifico, per ogni nuovo stato della scacchiera, determina il suo punteggio tramite la posizione del pedone (una idea n. 1), ma fallo per tutti i giocatori. Quindi confronta questi valori con lo stato della scheda corrente per ottenere i delta e sommare i delta. Questo mi permetterebbe di calcolare i miglioramenti della posizione del giocatore e di perdere qualsiasi posizione dell'avversario. I problemi qui sono che non stiamo calcolando se stiamo guidando o se un avversario è in testa. Mi spiace che un avversario che sto battendo facilmente non valga la pena.
Domanda : Si tratta di un approccio ragionevole per una AI scusa che può essere migliorata, oppure esiste un modo migliore per farlo?