Progetto da presentare per il corso di efficient artificial intelligence programming all'ITU di Copenhagen. Si tratta di un gioco di Forza 4 in Java (l'interfaccia grafica era già pronta, il mio compito era sviluppare la logica dell'AI, che scegliesse le mosse di risposta a quelle del giocatore umano). Per l'uso, pasto il README:
Si può anche fare roba foga, tipo far giocare una logica contro un'altra (anche se questo potrebbe portare a un deadlock del gioco):
oppure sviluppare la propria logica semplicemente implementando l'interfaccia IGameLogic e modificando la classe GameState, e far giocare una logica contro l'altra.
L'AI usa un algoritmo di minimax con alpha-beta pruning per scegliere la migliore strategia in un certo momento, con una funzione euristica basata sullo score in un determinato stato se il livello di profondità raggiunto è pari al livello di abilità dell'AI stessa, per effettuare il cutoff. I dettagli implementativi sono contenuti nella directory mydoc, in formato JavaDoc.
Link:
http://0x00.ath.cx/prog/connect4itu.tar.gz
Codice:
Connect 4 game made for a project of AI at the ITU of Copenhagen (DK).
To run it (of course you must have Java installed on your machine), simply type:
java ShowGame <GameLogic | human> <GameLogic | human> [board rows (default: 6)] [board columns (default: 7)] [AI skill level (default: 12)] [number of n-in-a-row winning coins (default: 4)]
For example, to start a 7x6 grid where a player wins when it places 4 coins in a row ("Forza 4"), and the artificial intelligence is on an average level, simply type
java ShowGame human GameLogic
Si può anche fare roba foga, tipo far giocare una logica contro un'altra (anche se questo potrebbe portare a un deadlock del gioco):
Codice:
java ShowGame GameLogic GameLogic
oppure sviluppare la propria logica semplicemente implementando l'interfaccia IGameLogic e modificando la classe GameState, e far giocare una logica contro l'altra.
L'AI usa un algoritmo di minimax con alpha-beta pruning per scegliere la migliore strategia in un certo momento, con una funzione euristica basata sullo score in un determinato stato se il livello di profondità raggiunto è pari al livello di abilità dell'AI stessa, per effettuare il cutoff. I dettagli implementativi sono contenuti nella directory mydoc, in formato JavaDoc.
Link:
http://0x00.ath.cx/prog/connect4itu.tar.gz