Autor |
Beitrag |
Delphi-find-ich-gut
Hält's aus hier
Beiträge: 7
|
Verfasst: Do 20.04.06 16:26
<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.
Einloggen, um Attachments anzusehen!
Zuletzt bearbeitet von Delphi-find-ich-gut am Fr 21.04.06 02:22, insgesamt 1-mal bearbeitet
|
|
Marco D.
      
Beiträge: 2750
Windows Vista
Delphi 7, Delphi 2005 PE, PHP 4 + 5 (Notepad++), Java (Eclipse), XML, XML Schema, ABAP, ABAP OO
|
Verfasst: Do 20.04.06 16:33
Geiles Teil, gefällt mir sehr gut!
Nur solltest du bei allen Memos readonly auf true setzen! 
_________________ Pascal keeps your hand tied. C gives you enough rope to hang yourself. C++ gives you enough rope to shoot yourself in the foot
|
|
Delphi-find-ich-gut 
Hält's aus hier
Beiträge: 7
|
Verfasst: 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.
      
Beiträge: 2750
Windows Vista
Delphi 7, Delphi 2005 PE, PHP 4 + 5 (Notepad++), Java (Eclipse), XML, XML Schema, ABAP, ABAP OO
|
Verfasst: Do 20.04.06 16:42
Aber die "KI" (kann man das schon so nennen?) ist "nicht dumm" 
_________________ Pascal keeps your hand tied. C gives you enough rope to hang yourself. C++ gives you enough rope to shoot yourself in the foot
|
|
Delphi-find-ich-gut 
Hält's aus hier
Beiträge: 7
|
Verfasst: 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
      
Beiträge: 733
Erhaltene Danke: 2
|
Verfasst: 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 
Hält's aus hier
Beiträge: 7
|
Verfasst: 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: 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
      
Beiträge: 2889
Erhaltene Danke: 13
W2000, XP
D6E, BDS2006A, DevExpress
|
Verfasst: 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.
_________________ Na denn, dann. Bis dann, denn.
|
|
.50AE
      
Beiträge: 100
|
Verfasst: 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  ähh 
|
|
alzaimar
      
Beiträge: 2889
Erhaltene Danke: 13
W2000, XP
D6E, BDS2006A, DevExpress
|
Verfasst: 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.
_________________ Na denn, dann. Bis dann, denn.
|
|
.50AE
      
Beiträge: 100
|
Verfasst: 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)" ?
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....
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
      
Beiträge: 2889
Erhaltene Danke: 13
W2000, XP
D6E, BDS2006A, DevExpress
|
Verfasst: 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  ) habe ich doch immer nur so viele Zugmöglichkeiten, wie es Spalten gibt (i.A.  . 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.
_________________ Na denn, dann. Bis dann, denn.
|
|
mexx
      
Beiträge: 1183
|
Verfasst: Fr 05.05.06 16:21
Ich geh kaputt, mir muss doch was fehlen, ich gewinne hier einfach nicht. Echt traurig.
_________________ Das Unsympathische an den Computern ist, dass sie nur ja oder nein sagen können, aber nicht vielleicht.
|
|
Fabian W.
      
Beiträge: 1766
Win 7
D7 PE
|
Verfasst: Fr 05.05.06 16:45
Echt toll, gefällt mir wirklich sehr gut
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
mfg
|
|
alzaimar
      
Beiträge: 2889
Erhaltene Danke: 13
W2000, XP
D6E, BDS2006A, DevExpress
|
Verfasst: 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.
_________________ Na denn, dann. Bis dann, denn.
|
|
LLCoolDave
      
Beiträge: 212
Win XP
Delphi 2005
|
Verfasst: 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
      
Beiträge: 212
Win 2000 Professional, Debian Linux 4.0 (Etch,Stable)
Pascal (FreePascal 2.0.2, TurboPascal 7.0), C(++) (G++/GCC 3.4.2 + MinGW), Java (JDK 1.5.0_07), PHP (PHP 5.1.4)
|
Verfasst: 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
_________________ Ich fahr' nicht selber, weil ich festgestellt habe: ich fahre zu emotional. Bin 180 gefahren wo 30 erlaubt war... -- Jürgen von der Lippe
|
|
LLCoolDave
      
Beiträge: 212
Win XP
Delphi 2005
|
Verfasst: 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.
Einloggen, um Attachments anzusehen!
|
|
Marc.
      
Beiträge: 1876
Erhaltene Danke: 129
Win 8.1, Xubuntu 15.10
|
Verfasst: 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?
Mfg
|
|
|