2012-02-07 9 views
5

Ho scritto un gioco di serpenti in Java. Quello che voglio anche fare è creare una demo per questo (così il serpente giocherebbe da solo). Ho scritto una semplice demo, ma il serpente muore abbastanza velocemente. Quindi, c'è qualche algoritmo o qualcosa per quel tipo di problema? Credo che sia un po 'simile al problema del gioco degli scacchi? Voglio che il serpente sia vivo il più a lungo possibile. Grazie.Scrivere una demo per il gioco del serpente

+0

soluzione facile = lento il serpente verso il basso! – Mikhail

risposta

9

Lo sponsorizzato da Google AI Challenge ha lanciato un gioco "Tron" nel 2010. Potresti ottenere alcune buone idee dalla ricerca di soluzioni a tale sfida.

Se si desidera solo una semplice strategia che rende una demo ragionevole allora si potrebbe provare qualcosa di simile al seguente:

  • Mai fare una mossa che ti fa andare in crash se non si ha altra scelta
  • Se la tua prossima mossa ti costringe a scegliere tra due o più spazi distinti (non connessi), spostati sempre nel più grande dei due spazi. Ciò impedirà al tuo serpente di rimanere intrappolato troppo facilmente.
  • Se ti muovi lungo un muro, continua a muoverti lungo il muro il 98% delle volte, seguendolo a sinistra oa destra secondo necessità. Questo aiuterà il tuo serpente a sembrare abbastanza intelligente, e anche a risparmiare spazio nel campo di gioco.
  • Altrimenti spostati avanti del 90% delle volte, gira a sinistra ea destra casualmente il 5% delle volte ciascuna (questo renderà la tua demo meno noiosa).

Oltre a ciò, non credo che un approccio AI basato su scacchi (con un albero di ricerca di spostamento) funzionerebbe molto bene. Non saresti in grado di cercare facilmente mosse sufficienti in anticipo.

1

Senza fare il lavoro per te, posso dirti che il modo migliore per iniziare ad affrontare un problema come questo è pensare a cosa dovrebbe fare il serpente per sopravvivere il più a lungo possibile. Quali "regole generali" dovrebbe seguire il serpente per rimanere in vita. Per i principianti il ​​serpente dovrebbe probabilmente girare prima che colpisca un'ostruzione, e verso una direzione in cui non sarà inserito. Quindi, puoi programmare il serpente a girare quando è all'interno di uno spazio della sua coda (o muro) e verso una direzione con la massima distanza tra essa e altri ostacoli. Inoltre, credo che il serpente sia un gioco in cui il computer può giocare perfettamente e nella tua demo potresti non volerlo, così puoi sempre inserire un po 'di casualità solo per rendere le cose più belle se le cose si fanno troppo uguali.

2

questa non è la risposta che state cercando, ma ho posto perché avrei sinceramente piacerebbe vedere di esplorare ulteriormente questo algoritmo, modificandolo fino a quando ci si ritrova con un abbastanza ragionevole AI:

L'algoritmo più semplice per risolvere questo problema è l'approccio "aggira il bordo e poi scarabocchiare verso il basso". Fondamentalmente, inizi con un serpente, prendilo in modo che si muova verso ovest, quindi abbracci il muro ovest, poi il soffitto. Poi attraversi ogni possibile quadrato come un pantano fino a che non arrivi in ​​fondo, vai a ovest e ricomincia da capo.

se si prova, si può trasformare questo in un davvero eccellente AI: D