Entwickler-Ecke
Freeware Projekte - Gomoku (5 Gewinnt) - Beta Version
Delphi-find-ich-gut - Do 20.04.06 16:26
Titel: Gomoku (5 Gewinnt) - Beta Version
<edit>
Nachdem hier im Threat schon einige verbesserungsvorschläge gemacht wurden, habe ich diese jetzt weitestgehend umgesetzt. Die neue Beta-Version des 5-gewinnt-spiels habe ich hochgeladen. Jetzt mit verschiebbaren Fenster, verbesserter strategischer spielweise und vielen Bugfixes.
Ladet euch die neue Version und schreibt wenn ihr noch Fehler findet oder Verbesserungsvorschläge habt!
</edit>
**********************************************
Da ich gerade Urlaub habe, habe ich gedacht dass ich Just-4-Fun einfach mal ein Spiel mit Delphi programmiere, einfach weil ich lust auf's programmieren hatte.
So, dass Spiel ist Freeware, ich habe es einfach mal in den Anhang gepackt, damit ihr es testen könnt.
WICHTIGER HINWEIS: Das Spiel ist noch lange nicht fertig!! Es kommt auf jeden Fall nocheine strategische Komponente rein und noch ein paar andere verbesserungen. Es ist zwar schon "spielbar", aber die programmierung ist noch lange nicht abgeschlossen.
MEINE BITTE: Falls ihr Fehler findet oder euch verbesserungen einfallen, schreibt sie hier rein, damit ich das Programm anpassen kann. Bin für alles offen!
Moderiert von
Tino: Überflüssige Zeilenumbruche entfernt.
Marco D. - Do 20.04.06 16:33
Geiles Teil, gefällt mir sehr gut! :zustimm:
Nur solltest du bei allen Memos readonly auf true setzen! ;)
Delphi-find-ich-gut - Do 20.04.06 16:39
Oha, dass ging ja super schnell!
Das mit dem Memo hatte ich noch gar nicht gemerkt:-)
Hast natürlich recht, werd ich gleich mal schreibschützen;-)
Naja, was mir an dem Spiel im gegensatz zu anderen spielen
im Netz so gefällt ist dass es irgendwie "Menschlich" spielt, sprich: nicht ganz so brutal... Aber das liegt daran dass die strategische Komponente noch nicht so ganz ausgereift ist...
Marco D. - Do 20.04.06 16:42
Aber die "KI" (kann man das schon so nennen?) ist "nicht dumm" ;)
Delphi-find-ich-gut - Do 20.04.06 20:41
Naja, KI (Künstliche Intelligenz) meint eigentlich dass ein Programm "lernfähig" ist. Das würde heisen dass die Züge in einer Datenbank gespeichert werden wenn sie zu einem Gewinn geführt haben und bei einem erneuten Spiel wird dann die Datenbank zu Hilfe genommen. Zur Zeit werden aber die Züge
*noch* nicht gespeichert (vielleicht denk ich mir da mal was in die Richtung aus). Also von KI kann man deshalb in diesem Fall noch nicht reden;-)
Ironwulf - Do 20.04.06 21:01
was wir mir aufgefalln ist das wenn ich das teile verkleiner (mit dem ding rechts oben neben demschließkreuz) sieht man kann noch etwas , und es sind dann auch keine scollbars da, und ich kanns nit manuelle in der größe ziehen, also entweder das verkleinern verhindern oder manuell in der größe anpassbar machen
aber sonst richtig klasse spiel und die "KI" ist wirklich recht gut, nit zu einfach und nit zu schwer
Delphi-find-ich-gut - Fr 21.04.06 02:19
So!
Habe das Spiel jetzt nochmals verbessert.
Neu ist die verbesserung der strategisches Ausrichtung, der Computer spielt jetzt in mehr variationen, das Spiel wirkt weniger monoton. Außerdem wurden einige Fehler bereinigt die mir bei zahlreichen testdurchläufen aufgefallen sind.
Die neue Version gibt es im Orginalpost zum download oder hier:
http://free.pages.at/load2/sonstiges/gomoku.exe
Laden & Spass haben!!!
Und nicht vergessen Verbesserungsvorschläge zu posten;-)
Moderiert von
Tino: Überlfüssige Zeilenumbrüche entfernt.
alzaimar - Fr 21.04.06 08:30
Delphi-find-ich-gut hat folgendes geschrieben: |
Naja, KI (Künstliche Intelligenz) meint eigentlich dass ein Programm "lernfähig" ist. Das würde heisen dass die Züge in einer Datenbank gespeichert werden wenn sie zu einem Gewinn geführt haben und bei einem erneuten Spiel wird dann die Datenbank zu Hilfe genommen. |
Nein. KI bedeutet nur, das mit Methoden der KI versucht wird, eine Optimierungs- bzw. Lösungsstrategie zu entwerfen. Ein neuronales Netz speichert auch keine Züge ab, sondern verwurstet die Spielergebnisse in den Koeffizienten der Neuronen. Klar, die Koeffizienten werden dann irgendwo abgelegt.
Du wirst im Laufe eines Spiels auf Situationen stoßen, wo man nicht stur 'den nächsten 3er oder 4er erzeugt', sondern vielleicht strategisch plant, den Anwender in die Irre führt, oder ihm eine Falle stellt. Hier würde die KI ansetzen, um den dann besten Zug zu finden, der zunächst im Idealfall völlig bescheuert erscheint, um den Anwender nach 3 oder 4 Zügen plötzlich eine ausweglose Situation zu führen.
.50AE - Sa 22.04.06 23:24
Nicht schlecht, nur könntest du vielleicht noch einen zweiten Spielmodus programmieren:
Dass die Kugeln nach unten fallen. Oder anders ausgedrückt, dass man nur auf ben Boden oder bereits gesetzte Steine "drauflegen" kann.
ansonsten :puke: ähh :zustimm: ;)
alzaimar - Sa 22.04.06 23:29
Na ja, Gomoku hat nun nicht viel mit 'Vier gewinnt' zu tun. Oder besser: 5 gewinnt. Würdest Du bei Schach auch so einen Modus wollen? Das ist doch kein Modus sondern ein komplett anderes Spiel.
.50AE - So 23.04.06 13:40
Zitat: |
Na ja, Gomoku hat nun nicht viel mit 'Vier gewinnt' zu tun. Oder besser: 5 gewinnt. |
Was? Das Spiel hat nicht viel mit 5 gewinnt zu tun?
Wieso lautet der Titel hier dann bloß "Gomoku (
5 Gewinnt)" ? :roll:
Zitat: |
Würdest Du bei Schach auch so einen Modus wollen? |
Bei Schach? Ich kann mir nicht vorstellen was du damit meinst. Das lässt sich nicht im geringsten auf Schach übertragen.... :eyecrazy:
Zitat: |
Das ist doch kein Modus sondern ein komplett anderes Spiel. |
Da es dabei allerdings immernoch darum gehen würde 5 Kugeln in eine Reihe zu kriegen würde ich es vielleicht nicht als "ein komplett anderes Spiel" bezeichnen.
War ja nur ein Vorschlag, .50AE
alzaimar - So 23.04.06 20:01
@.50AE: Du musst dich nicht gleich auf den Schlips getreten fühlen, wenn ich Deinen Vorschlag kritisiere. Beim 4/5-Gewinnt (die Namensgleichheit ist aber ein Punkt für Dich :wink:) habe ich doch immer nur so viele Zugmöglichkeiten, wie es Spalten gibt (i.A. 8). Beim Gomoku habe ich anfangs 361 (19x19, je nach Spielfeldgröße) Möglichkeiten. Wenn das kein Unterschied ist. Beim 4-Gewinnt ist die Taktik eine ganz andere als beim Gomoku.
Ich erwähnte als Beispiel das Schach, damit Dir auffällt, das es kein Spielmodus ist, sondern ein komplett anderes Spiel. Die Programmierung eines perfekten 4-Gewinnt ist wesentlich einfacher als das eines Gomoku-Spiels. Die Herangehensweise ist eine vollkommen andere.
Ok, man muss in beiden Fällen 5 Steine in eine Reihe bringen, das wars dann aber schon mit den Gemeinsamkeiten.
Vielleicht war mein Ton etwas ruppig, als entschuldige ich mich.
P.S.: Der Wiki-Artikel ist sehr interessant, zumal auch eine perfekte Strategie erwähnt wird.
mexx - Fr 05.05.06 16:21
Ich geh kaputt, mir muss doch was fehlen, ich gewinne hier einfach nicht. Echt traurig.
Fabian W. - Fr 05.05.06 16:45
Echt toll, gefällt mir wirklich sehr gut :D
Grafisch könntest du das ganze noch aufwerten. Einen Highscore (zB Gewinn in kürzester Zeit) würde ich sehr begrüßen ;-)
@mexx: Der ganze Vorteil des Pc ist bis jetzt dass er keine gefährlichen Stellen übersehen kann ;-) wenn du also die ganze Zeit konzentriert auf Defensive spielst und jede Gegnerchance im Keim ersteickst sollte sich für dich irgendwann eine Möglichkeit erröffnen. Bisher hab ich mein Problem damit eine eigene Taktikt zu verfolgen da ich sonst immer was überseh ;-) :oops:
mfg
alzaimar - Sa 06.05.06 09:44
Wenn Du den MiniMax/NegaMax/NegaScout-Algorithmus vorschalten würdest, könnte dein Programm strategisch planen und eventuell noch besser werden. Informationen darüber findest Du bei Wiki. Du solltest dann eine Funktion schreiben, die die Spielstellung insgesammt bewertet, und nicht nur den einen Zug. Dabei kannst Du natürlich deine wirklich hervorragende Heuristik verwenden.
Nebenbei ist das Programm relativ leicht zu besiegen: Ständig offene 3er erzeugen, es quasi ständig unter Druck setzen. Irgendwann hat man dann eine Zwickmühle und ist fertig. Mein Versuch eben war nach 11 Zügen erledigt. Das dürfte mit einem Minimax-Algorithmus und einer Vorschautiefe von 3-4 nicht mehr möglich sein.
LLCoolDave - Sa 06.05.06 17:29
Mmh, sehr interessant, und keine schlechte KI, auch wenn mir gleich etwas auffallen ist, das verbessert werden sollten (die sich wohl aber mit einer höheren Vorschautiefe automatisch erledigen würden):
Der Computer sollte keine einseitig begrenzten Dreier oder Viererketten bilden, bzw vorher schauen, ob mir ein Stein, der diese blockiert, nicht evt. sogar hilft (offene 3er Kette bauen etc.) Der Gegner hat mich so freundlicherweiße darauf hingewiesen, dass ich an einer Stelle eine Zwickmühle bauen kann ;)
Ansonsten sehr nett gemacht, und die KI ist sogar eine Herausforderung.
nullplan001 - So 07.05.06 10:53
Ich dachte schon, gar nichts mehr zu finden... die KI quält mich mittlerweile seit 85 Zügen, und ich bin noch nicht tot, aber ich hab was interessantes entdeckt. Wenn man ganz am rechten Rand eine Viererkette macht, setzt die KI ihren Stein ganz links, eine Zeile tiefer. Ich tippe auf Fehler in der Behandlung von Viererketten, denn nach deiner Nummerierung ist dieses Feld, wo der Computer seinen Stein hinsetzt, ein Feld weiter als das Feld von mir ganz rechts. Das sah also so aus:
Quelltext
1: 2:
| --------------------XXXX O----------------------- |
X bin ich, O ist die KI.
*weiterspiel*... in extremo ist die KI auch am Versagen, da sie auf Felder far beyond the borders setzen will, und deshalb: Sieg nach 91 Zügen. Ha,ha,ha!!! Mann, der hab ichs aber gezeigt. ;) (Fehlermeldung: Spielfeld gößer 255: 7, oder so, beim ende bin ich mir sicher)
Tschö,
nullplan
LLCoolDave - So 07.05.06 11:14
Wenn du so weiter machst, gewinnst du noch! Mein lezter Zug war auf: 186
Ich habe meinen Stein in die unmittelbare Nähe meines letzten Steines gesetzt (nämlich auf Feld 130).
Mmh, ich weiß ja nicht wie unmittelbar diese Nähe wirklich ist ;)
Ausserdem fällt mir eine Verbesserungen für deine Bewertungsfunktion ein: Sie sollte Feldern, bei denen eine Bildung einer 5er Reihe wegen Begrenzung durch den Rand Grundsätzlich unmöglich ist, keine Beachtung schencken. Zumindest hatte ich bereits mehrmals das Gefühl, der Computer wollte eine Zwickmühle aufbauen, wo gar keine mehr hingepasst hätte.
Ansonsten sind vorallem die Computer zuerst Spiele eine große Herausforderung. Wenn der Computer jetzt noch weiter vorausdenkt, wird das ganze sehr schwer zu gewinnen.
Edit: Hab eine 7 Zug Sieges Strategie entwickelt, schneller geht es wohl kaum:
Spieler beginnt: Stein auf 97.
Computer setzt Stein entweder auf 81 oder 85: Vorgehen siehe Bild, bei 81 natürlich spiegelverkehrt. Setzt der Computer seinen Stein woanders hin: Restart, die Strategie funktioniert sonst nicht.
Ist natürlich somit keine absolute Siegesstrategie, aber mit ein klein wenig Geduld kann man sich so schnell einen 7 Zug Rekord mit einer Spielzeit von 2 Sekunden holen ;)
Hoffe das Problem ist in der nächsten Version behoben, sonst wird die Highscoreliste, sobald sie implementiert ist, recht langweilig aussehen.
Marc. - So 07.05.06 12:13
hey,
gut gemacht!
Aber einen Verbesserungsvorschlag habe ich auch noch: wenn die "tipps & tricks" angezeigt werden, sollte der timer pausieren - es würde auch reichen, wenn die mainform deaktiviert wird ;)
oder wie wäre es mit einem pause-button? :P
Mfg
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!