Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Vier gewinnt mit Ki!
Richter
myCSharp.de - Member



Dabei seit:
Beiträge: 105
Herkunft: Chemnitz

Themenstarter:

Vier gewinnt mit Ki!

beantworten | zitieren | melden

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 :D.

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
Attachments
Nevu - Intelligente Maschinen, die Zukunft alles rund um das Thema Künstliche Intelligenz!
private Nachricht | Beiträge des Benutzers
Peter Bucher
myCSharp.de - Experte

Avatar #jVxXe7MDBPAimxdX3em3.jpg


Dabei seit:
Beiträge: 6141
Herkunft: Zentralschweiz

beantworten | zitieren | melden

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

- https://peterbucher.ch/ - Meine persönliche Seite
- https://fpvspots.net/ - Spots für FPV Dronenflüge
private Nachricht | Beiträge des Benutzers
Richter
myCSharp.de - Member



Dabei seit:
Beiträge: 105
Herkunft: Chemnitz

Themenstarter:

beantworten | zitieren | melden

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!
private Nachricht | Beiträge des Benutzers
Voggi
myCSharp.de - Member



Dabei seit:
Beiträge: 1

beantworten | zitieren | melden

Zitat
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
private Nachricht | Beiträge des Benutzers
John Doe
myCSharp.de - Member

Avatar #avatar-1739.jpg


Dabei seit:
Beiträge: 151

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
KRambo
myCSharp.de - Member



Dabei seit:
Beiträge: 355

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
jan223
myCSharp.de - Member

Avatar #avatar-2059.png


Dabei seit:
Beiträge: 486
Herkunft: Bocholt / NRW

beantworten | zitieren | melden

Das Spiel läuft super. Jetzt kannst du es ja mit GDI+ grafisch umsetzen um den Spielspass zu erhöhen.
private Nachricht | Beiträge des Benutzers
webstarg
myCSharp.de - Member



Dabei seit:
Beiträge: 562
Herkunft: München, Deutschland

beantworten | zitieren | melden

Zitat
Original von Voggi
Zitat
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
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 52329
Herkunft: Berlin

beantworten | zitieren | melden

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.
Zitat
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.
Zitat
if (zahl==false)
Siehe Anfängerfehler == true / == false

herbivore
private Nachricht | Beiträge des Benutzers
Nopileos
myCSharp.de - Member



Dabei seit:
Beiträge: 68

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
Sieben
myCSharp.de - Member

Avatar #avatar-2263.png


Dabei seit:
Beiträge: 134
Herkunft: Coburg

beantworten | zitieren | melden

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!
private Nachricht | Beiträge des Benutzers
B3nj
myCSharp.de - Member

Avatar #avatar-2528.gif


Dabei seit:
Beiträge: 242
Herkunft: CH;SG

beantworten | zitieren | melden

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
Dieser Beitrag wurde 4 mal editiert, zum letzten Mal von B3nj am .
Attachments
private Nachricht | Beiträge des Benutzers
Sieben
myCSharp.de - Member

Avatar #avatar-2263.png


Dabei seit:
Beiträge: 134
Herkunft: Coburg

beantworten | zitieren | melden

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!
private Nachricht | Beiträge des Benutzers
Floste
myCSharp.de - Member

Avatar #avatar-2376.jpg


Dabei seit:
Beiträge: 1158
Herkunft: Norddeutschland

Nochein Vier Gewinnt Spiel

beantworten | zitieren | melden

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.
Dieser Beitrag wurde 3 mal editiert, zum letzten Mal von Floste am .
Attachments
Projekte:Jade, HttpSaver
Zum Rechtschreiben gibts doch schon die Politiker. Aber die bauen auch nur mist!
private Nachricht | Beiträge des Benutzers
Floste
myCSharp.de - Member

Avatar #avatar-2376.jpg


Dabei seit:
Beiträge: 1158
Herkunft: Norddeutschland

beantworten | zitieren | melden

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!
private Nachricht | Beiträge des Benutzers
B3nj
myCSharp.de - Member

Avatar #avatar-2528.gif


Dabei seit:
Beiträge: 242
Herkunft: CH;SG

beantworten | zitieren | melden

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
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von B3nj am .
private Nachricht | Beiträge des Benutzers
Floste
myCSharp.de - Member

Avatar #avatar-2376.jpg


Dabei seit:
Beiträge: 1158
Herkunft: Norddeutschland

beantworten | zitieren | melden

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

--
Wer Rechtschreibfehler findet darf sie behalten.
Attachments
Projekte:Jade, HttpSaver
Zum Rechtschreiben gibts doch schon die Politiker. Aber die bauen auch nur mist!
private Nachricht | Beiträge des Benutzers