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
risposta
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.
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.
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
- 1. Scrivere il mio motore di gioco 3D
- 2. Buona musica di sottofondo per una demo del software?
- 3. Struttura del gioco JavaScript
- 4. SVG animazione serpente
- 5. Buoni tutorial per il framework del gioco awe6?
- 6. Utilizzo del TouchScreens per il controllo del gioco
- 7. Il modo migliore per implementare la riproduzione del gioco?
- 8. Dove posso trovare immagini gratuite per il gioco?
- 9. Prestazioni del gioco XNA
- 10. Approccio minimalista per un gioco in stile Snake
- 11. Walkthrough/tooltip/demo per l'app per iPhone
- 12. Matematica domanda per quanto riguarda un Fantasy Sports (serpente) progetto
- 13. Come posso scrivere una pagina di caricamento con il framework di gioco
- 14. Quale lingua utilizzare per scrivere una libreria di gioco, Go o Rust?
- 15. impostazione di una pagina demo su github
- 16. Libreria Gui per gioco
- 17. Dove posizionare il ciclo di gioco principale nel gioco Android
- 18. Demo Deferred Shading DirectX?
- 19. Josh Smith MVVM Demo
- 20. SignalR demo non funziona
- 21. Programmazione del gioco in racchetta
- 22. Programmazione 3-d del gioco
- 23. Configurazione del gioco in C# e XNA
- 24. Creazione di una schermata iniziale per un gioco Canvas HTML5?
- 25. Come configurare HornetQ Demo
- 26. Determinazione del ritardo del gioco XNA
- 27. Semplice demo di ttk ComboBox
- 28. Algoritmo per scegliere lettere casuali per il gioco di ricerca di parole che consente di scrivere molte parole
- 29. HTML5 gioco per app nativa
- 30. Licenza MSDN (sviluppo, test, demo)
soluzione facile = lento il serpente verso il basso! – Mikhail