Laden...

Vier gewinnt mit Ki!

Erstellt von Richter vor 17 Jahren Letzter Beitrag vor 16 Jahren 20.948 Views
R
Richter Themenstarter:in
104 Beiträge seit 2006
vor 17 Jahren
Vier gewinnt mit Ki!

Hallo,
mein aller erstes Sinnvolles Programm in C# möchte ich hier kurz vorstellen.
Es ist ein Vier Gewinnt mit einem Computergegner.
Da er sehr einfach gestrickt ist, muss er eine Weile nachdenken um überhaupt eine Herrausforderung zu sein 😄.

Ihr dürft nur Zahlen eingeben, ansonsten stürtzt es ab. Ich weiß noch nicht genau wie ich dies ändern kann.

Sagt mal bescheid, wie ihr die Spielstärke der Ki einschätzt

Mit freundlichen Grüßen
Marcel Richter

Nevu - Intelligente Maschinen, die Zukunft alles rund um das Thema Künstliche Intelligenz!

5.941 Beiträge seit 2005
vor 17 Jahren

Hallo Marcel

Sieht gut aus, nur was rechnet der so lange rum?
Kannst du vielleicht noch den Quellcode anhängen,
würde mich interessieren, wie du die KI implementiert
hast.

Bei diesem Speed 8o

Gruss Peter

--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

R
Richter Themenstarter:in
104 Beiträge seit 2006
vor 17 Jahren

Es ist die einfachstmögliche Imlementierung des NegaMax Prinzip.
Kurzgesagt:
Die ki geht alle Varianten durch die mt 7 Spielzügen möglich ist und bewertet die Stellungen es ergeben sich etwa 8^7 Stellungen die bewertet werden müssen. Etwas mehr als Zwei Millionen!

Lerns nicht vom Noob sonern von Wiki:http://en.wikipedia.org/wiki/Negamax

Nevu - Intelligente Maschinen, die Zukunft alles rund um das Thema Künstliche Intelligenz!

V
1 Beiträge seit 2004
vor 17 Jahren

Original von Richter
Ihr dürft nur Zahlen eingeben, ansonsten stürtzt es ab. Ich weiß noch nicht genau wie ich dies ändern kann.

Normalerweise mit try und catch

149 Beiträge seit 2005
vor 17 Jahren

oder .TryParse

Schon als Kindern war uns klar: Jeder von uns wird ein Star, oder Millionär - das ist doch auch nicht schwer. Dem Alkohol nicht abgeneigt, war es für uns auch nicht leicht. Durch seine Hände Arbeit, wird man auch nicht gleich ein Scheich.
K
355 Beiträge seit 2004
vor 17 Jahren

Ich hab 1x gespielt und gleich gewonnen. Man muss allerdings schon etwas aufpassen, auf der anderen Seite macht die KI manchmal auch was, das ich nicht machen würde 😉

460 Beiträge seit 2004
vor 17 Jahren

Das Spiel läuft super. Jetzt kannst du es ja mit GDI+ grafisch umsetzen um den Spielspass zu erhöhen.

W
558 Beiträge seit 2006
vor 17 Jahren

Original von Voggi

Original von Richter
Ihr dürft nur Zahlen eingeben, ansonsten stürtzt es ab. Ich weiß noch nicht genau wie ich dies ändern kann.

Normalerweise mit try und catch

Ich würde es so machen: (try & catch finde ich eine dirty-Methode)


bool zahl=true;
foreach (char x in textBox1.Text)
{
if (x.IsDigit==false)
{
zahl=false;
}
}
if (zahl==false)
{
MessageBox.Show("Sie haben keine gültige Zahl eingegeben!", "Fehler");
}
else
{
...
......

webstarg

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo webstarg,

das ist m.E. umständlich - zumindest, wenn man 2.0 einsetzt. John Doe hat ja schon geschrieben, dass man TryParse verwenden kann.

try & catch finde ich eine dirty-Methode

try/catch ist ein stukturierter Fehlerbehandlungsmechanismus und alles andere als Quick&Dirty. Trotzdem wäre TryParse hier natürlich vorzuziehen.

if (zahl==false)

Siehe Anfängerfehler == true / == false

herbivore

N
68 Beiträge seit 2006
vor 16 Jahren

Wenn sich die Console schließt bedeutet das das die KI aufgibt?
ich war nämlich kurz vorm Sieg.

Ich such noch mal ein projekt wo ich mich im Bereich KI üben kann

140 Beiträge seit 2006
vor 16 Jahren

Huhu,

warum hast du das eigentlich als Konsolen Anwendung realisiert?? Ein paar Pictures Boxen mit Windows Forms wären ansprechender gewesen...

Der Quellcode wäre net schlecht...

Ist das mit .Net 1.1 oder .Net 2.0?

gruß Sieben

[EDIT von herbivore]Zum Thema, wie man wie man Spielbrett und Figuren malt, siehe auch Spiel "Prärie"[/EDIT]

Nur die Kogge schwimmt! 😁

242 Beiträge seit 2006
vor 16 Jahren

ich finds nicht schlecht, aber etwas langsam. einen fehler hab ich noch entdeckt obwohl er eigentlich gar keiner ist:
das original-vier-gewintn spielfeld ist nur 7 steine breit.

und wie es der zufall will habe ich letzte woche auch ein viergewinnt geschrieben.
bzw. ein kollege und ich haben jeder ein eingenes viergewinnt (bzw. eine ki) geschrieben, wir hatten eine woche zeit und dann haben wir sie gegeneinander spielen lassen.
=)meine hat glücklicherweise gewonnen, ich werde sie heute abend auch mal uppen.
hier noch schnell da sspielprinzip meiner ki:

  1. kann gewonnen werden - falls ja setzen
  2. kann der gegner gewinnen - falls ja verhindern
  3. es werden muster geprüft, ob eines verhindert werden kann oder ob eines zum sieg benutzt werden kann
  4. falls die lernfähigkeit (nützt nicht viel) eigestellt wurde, wird nachgeschaut ob das programm die aktuelle situation kennt und einen guten zug gespeichert hat.
    falls einer im gedächtnis drin ist wird er verwendet
  5. jetzt werden kluge/dumme züge berechnet, dumme züge sind, wenn der gegner einen stein auf den soeben gelegten zug setzten kann und gewonnen hat, alle anderen sind klug.
  6. jetzt wird je nach der eingestellten schwierigkeit vorausberechnet und zu jeder möglichkeit wird ein wert berechnet welcher aussagt wie gut das feld ist.
    falls der "beste" zug in der liste der klugen züge ist wird er gesetzt ansonsten nicht.
  7. jetzt wird die liste der guten züge durchgemacht, falls einer vorhanden ist wird er gewählt.
  8. ein schlechter zug wird gewählt. falls einer existiert
  9. wenn das programm hier ankommen sollte, dann ist das spielfeld voll😉

mfG b3nJ

-edit-
ich hab meins mal geuppt.
source + exe
die ki-schwierigkeit sollte bei einem langsam pc bei 3 bleiben bei einem schnellen kann man sogar bis zu 5 schalten und die züge werden trotzdem recht shcnell berechnet

mfg b3nJ

140 Beiträge seit 2006
vor 16 Jahren

Huhu,

also dein Spiel ist an sich net schlecht.
Aber was bitte ist das für ein Interface?? Das ist ja grausig zu bedienen 🙁

Die Berechnungen dauern mitunter ganz schön lange... vielleicht kannst du das ein wenig optimieren?? Vielleicht mehrere Threads??

gruß Sieben

Nur die Kogge schwimmt! 😁

1.130 Beiträge seit 2007
vor 16 Jahren
Nochein Vier Gewinnt Spiel

Diese Variante hat ein besseres GUI. Die AI ist jetzt (Version 3) kann jetzt sogar mit der AI von B3nj mithalten.

Neu in AI Version 4: deutlich schneller, bei exakt gleichem Ergebnis -> Level 6 ist jetzt
spielbar.

Projekte:Jade, HttpSaver
Zum Rechtschreiben gibts doch schon die Politiker. Aber die bauen auch nur mist!

1.130 Beiträge seit 2007
vor 16 Jahren

Weiß jemand, wie dashier funzt❔http://rezepte.nit.at/online_spiele/vier_gewinnt/vier_gewinnt.html
das is sauschnell und hält die geposteten KIs ganzschön auf trab.

--
Wer Rechtschreibfehler findet darf sie behalten.

Projekte:Jade, HttpSaver
Zum Rechtschreiben gibts doch schon die Politiker. Aber die bauen auch nur mist!

242 Beiträge seit 2006
vor 16 Jahren

mit schwierigkeitsstufe 4 (mit meiner ki) habe ichs einmal geschafft zu gewinnen, ansonsten meistens verloren. und meine berechnungen haben meistens länger gedauert. leider dauern die berechnungen relativ lange wenn ich eine schwierigkeitsstufe über 4 einstelle (ein normaler pc kommt auch bei 5 noch recht schnell nach), weshalb es eigentlich acuh sinnlos ist, die schwierigeitsstufe bei meiner ki bis 9 zu erhöhen.

ich denke die ki schaut von anfang an ob sie situationen finden kann, bei denen es zwei gewinnmöglichkeiten gibt.

es gibt auch situationen, bei denen man erst bei den letzten zügen, wenn nur noch eine spalte teilweise leer ist gewinnen kann, diese erkennt die ki eventuel besser?

zweite möglichkeit wäre eine kleinere bibliothek die dem programm bei der rechenzeit ein bisschen hilft, kA...

auf ejden fall ist sie nicht schlecht.

mfG b3nJ

1.130 Beiträge seit 2007
vor 16 Jahren

Wer will kann sich mal den Quelltext (im Anhang oder hier) anschauen. Ich verstehe das irgendwie ned.

--
Wer Rechtschreibfehler findet darf sie behalten.

Projekte:Jade, HttpSaver
Zum Rechtschreiben gibts doch schon die Politiker. Aber die bauen auch nur mist!