AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte 3-gewinnt mit KI
Thema durchsuchen
Ansicht
Themen-Optionen

3-gewinnt mit KI

Ein Thema von fLaSh11 · begonnen am 28. Mär 2007 · letzter Beitrag vom 8. Apr 2008
Antwort Antwort
Seite 5 von 8   « Erste     345 67     Letzte »    
fLaSh11
Hallo DPler,

ich weiß, dass 3-gewinnt ein sehr simples Spiel ist ; aber mir gings um die KI! Ich habe mich an einer versucht und eine recht akzeptable hinbekommen, wie ich denke.

Features:
- Spieler gg. Spieler
- Spieler gg. KI
- Im "Zeichendesign"

Version 0.2.1-KI - 28.3.07
Version 0.2.2-KI - 28.3.07
Version 0.2.3-KI - 28.3.07
Version 0.2.4-KI - 29.3.07
Version 0.2.5-KI - 29.3.07
Version 0.3.0 - 30.3.07
Version 0.3.1 - 30.3.07
Version 0.4.0 - 1.4.07

Verbesserungen:
V0.2.2:
- Fehler bei neuem Spielbeginn behoben (von Martin K: Hier)
- teilweise: Fehler des Falschsetzens bei Gewinn (von alleinherrscher Hier und noch von anderen...)
V0.2.3:
- Weiterer Spielbeginnfehler gefixt
- Nichtgewinnbug endlich vollständig gefixt
V0.2.4
- Beginnfehler gefixt (von Florian Bernd: Hier)
- Es dürfte nicht mehr möglich sein, gegen die KI zu gewinnen. (Außer meine Funktionen kommen sich gegenseitig in die Quere^^...)
V0.2.5
- Jetzt sollte man definitiv nicht mehr gewinnen können!
V0.3.0
- Einstellungsdialog
- KI-Stärke auswählbar
- neues Design
V0.3.1
- Matzes Fehler von hier korrigiert
V0.4.0
- Codeoptimierung (einmal komplett drüber gegangen , darum können neue/alte Fehler auftreten...)
- lautere Sounds
- kleine Fehler behoben
- KI verbessert (zwickmühlenbedingt)
- AboutBox
- Man kann sich Tipps geben lassen

Bekannte Bugs:
- diese eine letzte ominöse^^ Möglichkeit die KI auszutricksen (von Florian hier)
- Aufhängen bei Klick auf Tipp nach Spielende (in V0.4.1 gefixt)

Todo:
- Animationen beim Setzen
- siehe "Bekannte Bugs"

Ich hoffe es gefällt euch ...

Feedback/Fehler bitte posten!

MfG
Steffen

P.S.: Ist meine erste KI.
Angehängte Dateien
Dateityp: exe 3-gewinnt_905.exe (1,03 MB, 340x aufgerufen)
 
alzaimar

 
Delphi 2007 Enterprise
 
#41
  Alt 30. Mär 2007, 06:59
Hier mal eine Tic-Tac-Toe-Version, die alle Spielzüge durchprobiert und dann den dann den Besten nimmt (Minimax-Algorithmus). Der algorithmus kommt auch bei Schachprogrammen zum Einsatz (auch wenn er da optimiert wird).

Der Algorithmus führt jeden Zug 'im Geiste aus'. Dann wird jeder Zug des Gegners nacheinander ausgeführt, dann wieder der darauf mögliche eigene usw. bis es zu einer Endstellung kommt, die bewertet wird. Der letzt Zug wird zurückgenommen, dann der nächste probiert usw.

Bei Tic-Tac-Toe kann man noch bis zum Ende durchrechnen, bei Schach geht das nicht mehr: Hier kommt dann eine Stellungsbewertung zum Einsatz, die am Ende des Suchbaumes für jede Stellung einen Wert ermittelt, der angibt, wie gut / wie schlecht die Stellung aus Sicht eines bestimmten Spielers ist.
Angehängte Dateien
Dateityp: zip test_123.zip (250,5 KB, 38x aufgerufen)
  Mit Zitat antworten Zitat
QuickAndDirty

 
Delphi 12 Athens
 
#42
  Alt 30. Mär 2007, 07:24
Gebe meinem Vorredner recht.
Für solche kleinen Probleme ist nur ein Minmax geiegnet.
Bau einen Rekursiven Minmax-Brute-Force ein.
Am leichtesten kannst du denn Minmax durch das Programmieren eines "Nimm Spiels" verstehen.
(man darf 1,2,3, Streichölzer nehmen, jeder Spieler nimmt abwechselnd, wer den Letzen nimmt hat verloren)

Die aufgebauten Suchbäume sind mit Werten belegt. Die kommen dadurch zustande das ein Blatt in dem man verloren hat den wert -1 nachoben reicht und ein blatt in dem man gewonnen hat +1 nach oben reicht. So hat man in der Liste der Möglichen züge dich ja allesamt wurzeln sind für jeden ZUG eine Bewertung. Je höher der Wert desto besser der Zug.
Andreas
  Mit Zitat antworten Zitat
alzaimar

 
Delphi 2007 Enterprise
 
#43
  Alt 30. Mär 2007, 07:44
Da muß ich Dir widersprechen: Bei so einem kleinen Spiel muss man eigentlich keinen Suchbaum aufbauen, da tut es auch eine Heuristik (keine KI), die hier implementiert wurde. Diese Heuristik wird aber versagen, wenn das Spielfeld vergrößert wird. Dann greift die hinter der Heuristik stehende Annahme nicht mehr: Erst den Gegner am Gewinnen hindern, und wenn das nicht nötig ist, selbst einen 2er aufbauen.

Es fehlt nämlich die Möglichkeit, eine "Zwickmühle" zu verhindern: Das geht bei TTT eigentlich gar nicht, aber wenn das Spielfeld größer wird, schon...

Bei Dame/Mühle/Schach etc sieht die Sache schon anders aus. Hier sind Suchbäume bzw. deren Traversierung (Minimax, NegaMax, etc) schon eher geeignet. Wobei hier das Abbruchkriterium, also das Ermitteln der maximalen Baumtiefe, das größte Problem ist ('Horizonteffekt').

Neuronale Netze sind auch interessant, z.B. spielt das weltbeste Backammonprogramm mit einem NN.

[edit] Eins nicht zu vergessen: Flash11 hat eine saubere Heuristik hinbekommen, die offenbar keine Fehler mehr macht. Alle Achtung! [/edit]
  Mit Zitat antworten Zitat
QuickAndDirty

 
Delphi 12 Athens
 
#44
  Alt 30. Mär 2007, 13:37
Ob es ihm auch für zukünftige Probleme was nützt wenn er sich jedes mal ne andere Heuristik überlegen muss?
IMHO Lernt er mehr über KI wenn er ein NN oder einen MinMax implemtiert als wenn er eine nur einmal nutzbare
Heuristik implementiert...
Kann ja jeder seine Meinung dazu haben.
Andreas
  Mit Zitat antworten Zitat
fLaSh11
 
#45
  Alt 30. Mär 2007, 16:41
neue Version (V0.3.0) - BETA!

Ich hab dem ganzen ein neues Design verpasst. Feedback dazu bitte . (Achtung: Jewils in die Mitte der Kästchen drücken!)
Außerdem kann amn jetzt die KI auch auf leicht* stellen.





*Dann erkennt sie keine Zwickmühlen...
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze

 
Turbo Delphi für Win32
 
#46
  Alt 30. Mär 2007, 16:52
Ich find's bissl einfach. Man erkennt am Screenshot zwar nicht, dass es sich um ein KI-Spiel handelt, aber es ist eines und das auf Stufe "schwer". Ich (X) bin an der Reihe. Aber von Design schon ganz nett.
Miniaturansicht angehängter Grafiken
3gewinnt_817.png  
  Mit Zitat antworten Zitat
Benutzerbild von Glocke89
Glocke89

 
Lazarus
 
#47
  Alt 30. Mär 2007, 16:58
Das Spiel ist gut!! Die KI haste schön gemacht

Nach ca. 5min Spielzeit:
Ich habe die KI noch nicht besiegen können - wurde aber auch noch nicht von ihr besiegt

Also gratz für die geile KI
Christian
  Mit Zitat antworten Zitat
fLaSh11
 
#48
  Alt 30. Mär 2007, 17:44
Zitat von Matze:
Ich find's bissl einfach. Man erkennt am Screenshot zwar nicht, dass es sich um ein KI-Spiel handelt, aber es ist eines und das auf Stufe "schwer". Ich (X) bin an der Reihe.
Der Fehler müsste behoben sein. (V0.3.1)

edit: Hat schon jemand gemerkt, dass es auch Sounds gibt , werden in der nächsten Version lauter^^...
  Mit Zitat antworten Zitat
Benutzerbild von Martin K
Martin K

 
Turbo Delphi für Win32
 
#49
  Alt 31. Mär 2007, 03:43
Sound nicht schlecht, jetzt fehlt nur noch die passende Animation dazu.
Also dass auch passend zum Sound gezeichnet wird

Sollte doch eigentlich über die Canvas möglich sein, einfach Pixel für Pixel zeichnen...
Oder du bastelst dir eine Gif-Animation, eine die ein X zeichnet und eine die ein O zeichnet.
  Mit Zitat antworten Zitat
fLaSh11
 
#50
  Alt 31. Mär 2007, 22:31
Kann ich einem Canvas ein Bild angeben und das dann Pixel für Pikel zeichnen lassen ? Oder ist das schon etwas schwerer? Weil eine Gif-Animation zu basteln möcht nicht unbedingt. Denn damit das dass flüssig wirkt, braüchte ich für eine Sekunde Animation 24 Bilder, oder?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 5 von 8   « Erste     345 67     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz