Battleship AI coding competition: Inizia !




Battleship AI coding-competition: ha inizio la sfida a chi riesce a creare il miglior algoritmo di battaglia navale.


Le regole del gioco di battaglia navale insieme a quelle della competizione e le date sono disponibili qui: Battleship AI coding-competition: date e regole del gioco


Scarica il codice della competizione con l'interfaccia IBattleshipOpponent da implementare qui: http://dev.luca.minudel.it/battleship_competition.zip


La prima delle 2 tornate si conclude il 10 Ottobre.
Il codice per partecipare alla prima tornata e ottenere il diritto di partecipare alla seconda dovrá essere consegnato entro e non oltre il 10. Per ogni domanda, basta postare nei commenti.




Edit 20 Set: Come rischiestomi faccio una breve descrizione dell'interfaccia IBattleshipOpponent da implementare. Questo é quello che la classe BattleshipCompetition si aspetta da ognuno dei 2 sfidanti.
Edit 21 Set: Aggiunta precisazione riguardo PlaceShip().
  • Le property get Name e Version devono restituite il nome che date al vostro algoritmo e la versione.

  • Il metodo PlaceShips() viene chiamato a ogni nuova partita e deve restituire la disposizione delle proprie navi sulla scacchiera. Implementa la propria strategia di "difesa".
    Se restituisce navi disopostye in modo non valido (fuori dalla scacchiera o che si sovrappongono) il metodo viene chiamato dinuovo, il tempo speso viene sottratto dai 4sec disponibili per 1 partita).

  • Il metodo GetShot() viene chiamato ogni volta che si ha il turno di sparare, deve restituire le coordinate del proprio colpo. Implementa la propria strategia di "attacco". Subito dopo, un chiamata ai metodi ShotMiss() o ShotHit() o ShotHitAndSink() a seconda dei casi comunica l'esito del proprio colpo.

  • Il metodo NewGame() comunica l'inizio di ogni nuova partita per ognuna delle 1000 giocate consecutivamente contro uno stesso avversario.  Cosi come GameWon() e GameLost() ne comunicano la fine. Nota che la stessa istanza della tua classe che implementa IBattleshipOpponent verrá usata per giocare tutte e 1000 le partite quindi questi metodi ti servono per resettare lo stato del gioco (es. lo stato della scacchiera di attacco).

  • I metodi NewMatch() e MatchOver() comunicano l'inizio e la fine della sfida di 1000 partite contro l'avversario. Servono piu che altro per chi in fase di sviluppo vuole loggare qualche info per poi analizzarla.

Program.Main ora inzializza BattleshipCompetition  facendo giocare 1000 partite (wins=501), per sviluppare  e provare il proprio algoritmo 100 partite (wins=51) é sufficiente e inoltre definendo il simbolo DEBUG_FRAMEWORK, nella console verrá stampato l'esito di ogni singola partita.


Buon divertimento !


Edit 10 Ott: UGIdotNET é nuovamente su dopo 3 giorni off-line. La raccolta delle soluzioni per la 1^ tornata riprende. Ecco le soluzioni raccolte sinora e tra parentesi una stima di efficacia approssimativa del algoritmo in attesa dei veri scontri diretti che avverranno a raccolta soluzioni terminata (i risultati saranno pubblicati qui):
- Mauro Bellati presenta l'algoritmo Deathflame 0.1.0.1 (7/10)
- Andrea Angella & Valerio Vitacolonna presentano l'algoritmo Terminator 1.0.0.0 (7/10)
- KobayashiMaru 1.0 (7/10)

I restanti 3 partecipanti si sono ritirati, ecco le soluzioni della prima tornata:
battleship-ai-coding-copetition-1ma-tornata


Edit 12 Ott: Qui c'é la descrizione delle strategie implementate dagli algoritmi:  strategie
E qui il codice degli algoritmi presentati: http://dev.luca.minudel.it/Battleship_competition_1ma_tornata.zip

Edit 16 Nov: Qui
- Mauro Bellati ripresenta il medesimo algoritmo Deathflame 0.1.0.1
- Andrea Angella & Valerio Vitacolonna presentano l'algoritmo aggiornato Terminator 2.0
- KobayashiMaru 1.1.1

I risultati sono:
  Battleship-AI-Coding-Competitio-3za-Tornata


Edit 19 Nov: Qui c'é la descrizione aggiornata delle strategie implementate dagli algoritmi:  strategie
E qui il codice degli algoritmi presentati: http://dev.luca.minudel.it/Battleship_competition_tornata_finale.zip



Tags :   |

Print | posted @ domenica 19 settembre 2010 21:42

Comments have been closed on this topic.