Hallo,
Hier mal was kleines für zwischendurch.
Mein Klon des Spiels 2048.
Da das reine Spielen aber ziemlich schnell langweilig wird, hab ich mir mal die Aufgabe gemacht eine KI zu entwickeln.
Leider ist diese nicht sehr weit fortgeschritten, und kommt meist nur bis zum 1024 Kästchen und selten zur 2048.
Jetzt kommt ihr ins Spiel: Versucht doch einfach mal selbst eine KI zu erstellen.
Es ist der komplette Quellcode des Spiels enthalten, und auch ein Beispiel-Include einer sehr einfachen "KI",
welche nämlich nur Zufallsbewegungen ausführt.
Das Include braucht ihr nur zu kopieren, umzubenennen und im Hauptprogramm zu includieren.
Anschließend setzt ihr euren Hirnschmalz ein und könnt dann die Ergebnisse hier veröffentlichen.
Links
Viel Spaß damit!
2048
Re: 2048
hier ein (wie ich finde nicht unwichtiger) Link zum Thema:
http://de.wikipedia.org/wiki/2048_(Computerspiel)
(ich musste nämlich erst einmal nachschauen, um was es bei diesem Spiel geht )
Grüße ... Kiffi
http://de.wikipedia.org/wiki/2048_(Computerspiel)
(ich musste nämlich erst einmal nachschauen, um was es bei diesem Spiel geht )
Grüße ... Kiffi
Hygge
- NicTheQuick
- Ein Admin
- Beiträge: 8679
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
- Kontaktdaten:
Re: 2048
Schade, jetzt wollte ich mich ran machen und dann sind da überall Windows-APIs eingebaut. Wird es auch noch eine Cross-Platform-Version geben?
Edit:
Ich hab mal einfach alles mögliche weg kommentiert, was unter Linux nicht geht. Das Programm läuft trotzdem. Dann kann ich ja mal probieren.
Edit2:
Es wäre praktisch, wenn es schon eine einzelne Funktion gäbe, die das komplette Feld und eine Richtung übergeben bekommt und dann diesen Zug auf dem Feld ausführt. Das ist für iterative KIs dann recht praktisch.
Edit:
Ich hab mal einfach alles mögliche weg kommentiert, was unter Linux nicht geht. Das Programm läuft trotzdem. Dann kann ich ja mal probieren.
Edit2:
Es wäre praktisch, wenn es schon eine einzelne Funktion gäbe, die das komplette Feld und eine Richtung übergeben bekommt und dann diesen Zug auf dem Feld ausführt. Das ist für iterative KIs dann recht praktisch.
Re: 2048
Ist ja schon älter. Ich habe dennoch mal angetestet und folgende Anregungen:
- Gib dem Spiel ein App-Icon.
- Das Spiel hat (zumindest bei mir) eine wahnsinnig lange Startzeit. Also die Zeit zwischen EXE starten und das Spiel erscheint. Vielleicht ein Lade-Fensterchen vorweg mit "Spiel wird geladen... bitte warten... -> 0%, 10%, 20%...". Oder besser noch: Optimieren. Was macht er da so lange? Ich habe an einen havarierten Rohrkrepierer geglaubt und wollte das Programm schon per Taskmanager abbrechen. Dann kam es im letzten Moment doch noch.
- Ich habe nur einen 2er Spielstein am Beginn gehabt. 2048 beginnt mit aber mit 2.
- Bug: Unpassende Spielsteine werden manchmal zusammengezogen werden (z.B. 2 und 8 vereinen sich zur 4). Insbesondere in der oberen linken Ecke
- Bug: Wenn ich Buchstaben in das Seed-Feld eingebe, erhalte ich immer dieselbe Ausgangssituation - nämlich die von 0. Val(seed.s) ohne Abfrage, ob die Eingabe korrekt ist?
- Bug: Die Game-Over-Erkennung scheint lückenhaft zu sein: https://postimg.org/image/sv93vul0x/ (Ich hätte trotz Game-Over noch einen Zug gehabt - Wieder die obere linke Ecke )
- Bug: Manchmal beginnt das Spiel mit einer 4
Ansonsten gelungene Implementierung
- Gib dem Spiel ein App-Icon.
- Das Spiel hat (zumindest bei mir) eine wahnsinnig lange Startzeit. Also die Zeit zwischen EXE starten und das Spiel erscheint. Vielleicht ein Lade-Fensterchen vorweg mit "Spiel wird geladen... bitte warten... -> 0%, 10%, 20%...". Oder besser noch: Optimieren. Was macht er da so lange? Ich habe an einen havarierten Rohrkrepierer geglaubt und wollte das Programm schon per Taskmanager abbrechen. Dann kam es im letzten Moment doch noch.
- Ich habe nur einen 2er Spielstein am Beginn gehabt. 2048 beginnt mit aber mit 2.
- Bug: Unpassende Spielsteine werden manchmal zusammengezogen werden (z.B. 2 und 8 vereinen sich zur 4). Insbesondere in der oberen linken Ecke
- Bug: Wenn ich Buchstaben in das Seed-Feld eingebe, erhalte ich immer dieselbe Ausgangssituation - nämlich die von 0. Val(seed.s) ohne Abfrage, ob die Eingabe korrekt ist?
- Bug: Die Game-Over-Erkennung scheint lückenhaft zu sein: https://postimg.org/image/sv93vul0x/ (Ich hätte trotz Game-Over noch einen Zug gehabt - Wieder die obere linke Ecke )
- Bug: Manchmal beginnt das Spiel mit einer 4
Ansonsten gelungene Implementierung
Re: 2048
Hi,
Außerdem kann man jetzt beliebige Zeichen beim Seed eingeben. (Die alten seeds führen aber trotzdem noch zum selben Ergebnis)
Falls jemand eine AI schreiben will:
Ein Minimalbeispiel für eine AI ist in AI_Random.pbi
Ich hab mal nen Icon hinzugefügt und das verhalten an das Original angepasst.DarkSoul hat geschrieben:- Gib dem Spiel ein App-Icon.
- Ich habe nur einen 2er Spielstein am Beginn gehabt. 2048 beginnt mit aber mit 2.
- Bug: Wenn ich Buchstaben in das Seed-Feld eingebe, erhalte ich immer dieselbe Ausgangssituation - nämlich die von 0. Val(seed.s) ohne Abfrage, ob die Eingabe korrekt ist?
Außerdem kann man jetzt beliebige Zeichen beim Seed eingeben. (Die alten seeds führen aber trotzdem noch zum selben Ergebnis)
Leider kann ich nicht sagen woran es liegt. Beim Starten werden nur die Einstellungen und Icons geladen, und es wird ein Thread erstellt. Ich kann mir nur vostellen, dass ein Antivirenprogramm das Programm überprüft, hochlädt oder sonst etwas damit macht.DarkSoul hat geschrieben:- Das Spiel hat (zumindest bei mir) eine wahnsinnig lange Startzeit. Also die Zeit zwischen EXE starten und das Spiel erscheint. Vielleicht ein Lade-Fensterchen vorweg mit "Spiel wird geladen... bitte warten... -> 0%, 10%, 20%...". Oder besser noch: Optimieren. Was macht er da so lange? Ich habe an einen havarierten Rohrkrepierer geglaubt und wollte das Programm schon per Taskmanager abbrechen. Dann kam es im letzten Moment doch noch.
Kann ich leider nicht nachvollziehen. Selbst wenn ich deine Konstellation aus dem Bildschirmfoto übernehme kommt keine "Game over" Meldung. Auch ist es mir noch nicht passiert, dass zwei unpassende Kacheln zusammengefügt wurden. Es könnte sein, dass die Kacheln und deren Animation bei dir nicht richtig dargestellt und geupdated werden. Ich wüsste aber nicht warum.DarkSoul hat geschrieben:- Bug: Unpassende Spielsteine werden manchmal zusammengezogen werden (z.B. 2 und 8 vereinen sich zur 4). Insbesondere in der oberen linken Ecke
- Bug: Die Game-Over-Erkennung scheint lückenhaft zu sein: https://postimg.org/image/sv93vul0x/ (Ich hätte trotz Game-Over noch einen Zug gehabt - Wieder die obere linke Ecke )
Das entspricht dem Original, mit einer bestimmten Wahrscheinlichkeit wird eine 4 anstatt eine 2 generiert.DarkSoul hat geschrieben:- Bug: Manchmal beginnt das Spiel mit einer 4
Es sollte jetzt auch auf macOS und Linux laufen, die WinAPI wurde nur genutzt um den entsprechenden Ort zum speichern der Konfigurationen zu ermitteln.NicTheQuick hat geschrieben:Schade, jetzt wollte ich mich ran machen und dann sind da überall Windows-APIs eingebaut. Wird es auch noch eine Cross-Platform-Version geben?
Ich hab mal einfach alles mögliche weg kommentiert, was unter Linux nicht geht. Das Programm läuft trotzdem. Dann kann ich ja mal probieren.
In AI_Simple.pbi gibt es die Funktion AI_Simple_Move(Array Field.i(2), Direction). Die kann man einfach kopieren und verwenden.NicTheQuick hat geschrieben:Es wäre praktisch, wenn es schon eine einzelne Funktion gäbe, die das komplette Feld und eine Richtung übergeben bekommt und dann diesen Zug auf dem Feld ausführt. Das ist für iterative KIs dann recht praktisch.
Falls jemand eine AI schreiben will:
Ein Minimalbeispiel für eine AI ist in AI_Random.pbi
Re: 2048
Dies ist nicht der Fall. Der Prozess ist gestartet und es dauert dann ewig, bis dann das Spiel erscheint.Leider kann ich nicht sagen woran es liegt. Beim Starten werden nur die Einstellungen und Icons geladen, und es wird ein Thread erstellt. Ich kann mir nur vostellen, dass ein Antivirenprogramm das Programm überprüft, hochlädt oder sonst etwas damit macht.
Habe mal debuggt und er hält sich an
758 : LockMutex(AI_Main\Mutex_ID)
sehr sehr lange auf. Den Thread, der diese Mutex so lange in Beschlag nimmt, habe ich auf die Schnelle nicht finden können.
Es handelt sich nicht um einen Grafikfehler, da man mit den ungültigen Spielzügen weiterspielen kann. und man nach der Game-Over Meldung nicht mehr weiterspielen kann . Ein Fehler in der Darstellung würde lediglich zur falschen Anzeige führen. Aber die fehlerhaften Spielzustände sind "echt".Kann ich leider nicht nachvollziehen. Selbst wenn ich deine Konstellation aus dem Bildschirmfoto übernehme kommt keine "Game over" Meldung. Auch ist es mir noch nicht passiert, dass zwei unpassende Kacheln zusammengefügt wurden. Es könnte sein, dass die Kacheln und deren Animation bei dir nicht richtig dargestellt und geupdated werden. Ich wüsste aber nicht warum.
PS: Warum ist im Source hinterlegt, dass mit PB 5.3 Beta 1 compiliert werden soll? Wir sind bei 5.42
Re: 2048
Danke für die Rückmeldung.
Der Mutex wird nur (immer kurz) von dem Thread gesperrt, wenn die KI läuft. Beim Starten wird er aber nicht gesperrt. Ich tippe immernoch auf eine Antivirensoftware, welche den Programmablauf blockiert und dann irgendwas scannt. Falls du eine laufen hast, könntest du sie mal kurz aktivieren.
Und wenn du lust hast, könntest du ja mal dokumentieren wie man zu dem "Game over" oder dem anderen Bug kommt. Also die Seed und die nötigen Schritte, eventuell ein Video. Am besten mit der neusten Version. Sonst kann ich es hier einfach nicht reproduzieren.
Der Mutex wird nur (immer kurz) von dem Thread gesperrt, wenn die KI läuft. Beim Starten wird er aber nicht gesperrt. Ich tippe immernoch auf eine Antivirensoftware, welche den Programmablauf blockiert und dann irgendwas scannt. Falls du eine laufen hast, könntest du sie mal kurz aktivieren.
Und wenn du lust hast, könntest du ja mal dokumentieren wie man zu dem "Game over" oder dem anderen Bug kommt. Also die Seed und die nötigen Schritte, eventuell ein Video. Am besten mit der neusten Version. Sonst kann ich es hier einfach nicht reproduzieren.
Hättest du mir das nicht vor zwei Jahren sagen können? :PDarkSoul hat geschrieben:Wir sind bei 5.42