| Autor |
Nachricht |
Flamefire
        

Beiträge: 1013 Erhaltene Danke: 14 Dabei seit: 03.01.2007 Wohnort: Dresden
Win XP Delphi 7 Pro; Delphi 2009 Pro
|
Ich habe folgende Version eines Kartenspiels:
2 Spieler bekommen je 9 Karten mit den Zahlen von 1-9
Jeder legt (verdeckt) eine Karte.
Wessen Karte höher ist, der bekommt einen Punkt.
Die gelegten Karten werden weggenommen (also nicht nochmal spielbar)
Das ganze geht demzufolge 9 Runden.
Jetzt habe ich überlegt, wie eine KI gegen einen Random-Gegner aussehen könnte.
Dazu ein einfaches Bsp: 3 Karten.
Ich lege 3 Gegner legt 2
Stand: 1:0
Ich: 1,2
Gegner: 1,3
Was wäre für mich die bessere Wahl? Ich habe 50% Chance, dass der Gegner die 1 legt.
Also: Lege ich die 1 zu erst:
50% Chance auf 1:2 Punktstand
und 50% auf 1:1 Punktstand
Bei der 2 sieht es genauso aus.
Ist es also egal, wie man vorgeht, oder ist das nur ein schlechtes Bsp?
Welche Strategie führt mit höchstmöglicher Wahrscheinlichkeit zum Sieg?
Hab schon gedacht, das zu brute-forcen indem alle Wahrscheinlichkeiten durchgerechnet werden. Das wären dann 9!*9! Varianten...
|

|
|
BenBE
        

Beiträge: 8055 Erhaltene Danke: 17 Dabei seit: 16.07.2004 Wohnort: Jahnsdorf
Win95, Win98SE, Win2K, WinXP D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, L0.9\FPC2.0
|
Klassisch könnte man - da alle Karten abzählbar sind - das ganze mit MinMax lösen.
Zur Strategie: Spiel erst eine Reihe niedriger Karten und zieh dann von oben nach unten deine hohen Karten.
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|

|
|
Tastaro
        
Beiträge: 276 Erhaltene Danke: 5 Dabei seit: 19.04.2005
|
Ich würde sagen, dass das Spiel immer unentschieden ausgeht.
Um zu gewinnen wird jeder immer seiner höchste Karte legen.
Etwas langweilig auf Dauer. Oder gibt es noch Zusatzregeln die das verhindern?
Edit: Oder weiß ich auch nicht, was ich lege?
Beste Grüße
|

|
|
BenBE
        

Beiträge: 8055 Erhaltene Danke: 17 Dabei seit: 16.07.2004 Wohnort: Jahnsdorf
Win95, Win98SE, Win2K, WinXP D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, L0.9\FPC2.0
|
@Tastaro: Wenn Du immer die höchste Karte legst, dann würd ich dich mit meiner Strategie in Grund und Boden stampfen, weil ich durch das legen einer niedrigen Karte dir erstmal deine hohen Karten rausziehe (also 1 gegen 9 von dir) und dann von oben nach unten IMMER die höhere Karte haben werde 
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|

|
|
danielf
       
Beiträge: 922 Erhaltene Danke: 16 Dabei seit: 28.01.2009 Wohnort: Stuttgart
Windows XP C# (VS 2008)
|
Ja, Tastaro ist einfach zu besiegen
Aber Flamefire meinte ja gegen einen "Random-Gegner" der zufällig irgendwelche Karten legt (also unlogisch).
Ich denke auch, dass da wieder der MinMax siegt. Da generisch...
Alternativ könnte man es wie bei "23 - Dem Film" machen.. mit Karten zählen. Man definiert einen Durchschnitt wert, und wenn der Gegner drüber ist legt man eine hohe zahl.. sonsten eine niedrige um eine hohe von ihm "auszuweichen".
Versuche es am besten mal und berichte uns 
|

|
|
Tastaro
        
Beiträge: 276 Erhaltene Danke: 5 Dabei seit: 19.04.2005
|
BenBE hat folgendes geschrieben : | @Tastaro: Wenn Du immer die höchste Karte legst, dann würd ich dich mit meiner Strategie in Grund und Boden stampfen, weil ich durch das legen einer niedrigen Karte dir erstmal deine hohen Karten rausziehe (also 1 gegen 9 von dir) und dann von oben nach unten IMMER die höhere Karte haben werde  |
=> Unentschieden
Oder was geht jetzt an mir vorbei?
|

|
|
danielf
       
Beiträge: 922 Erhaltene Danke: 16 Dabei seit: 28.01.2009 Wohnort: Stuttgart
Windows XP C# (VS 2008)
|
|

|
|
Tastaro
        
Beiträge: 276 Erhaltene Danke: 5 Dabei seit: 19.04.2005
|
Ok, nun habe auch ich es verstanden.
Danke für eure Geduld. Ist heute eh ein blöder Tag.
Beste Grüße
|

|
|
danielf
       
Beiträge: 922 Erhaltene Danke: 16 Dabei seit: 28.01.2009 Wohnort: Stuttgart
Windows XP C# (VS 2008)
|
Okay.. mein Tag ist sehr gut  (sorry).
Ich hab mal einen "RandomPlayer" und einen "UpDownPlaye" implementiert und bin zu folgendem Resultat gekommen:
Ein zufälliger Spieler gewinnt durchschnittlich 30-35% der Spiele gegen einen UpDownPlayer (er legt 3,2,1).
Gruß Daniel
Program.cs:
RandomPlayer:
UpDown:
|

|
|
guinnes
       
Beiträge: 94 Dabei seit: 19.05.2008
|
Da ich mich ja wohl auf deine Strategie einstellen kann :
|

|
|
BenBE
        

Beiträge: 8055 Erhaltene Danke: 17 Dabei seit: 16.07.2004 Wohnort: Jahnsdorf
Win95, Win98SE, Win2K, WinXP D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, L0.9\FPC2.0
|
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|

|
|
guinnes
       
Beiträge: 94 Dabei seit: 19.05.2008
|
|

|
|
danielf
       
Beiträge: 922 Erhaltene Danke: 16 Dabei seit: 28.01.2009 Wohnort: Stuttgart
Windows XP C# (VS 2008)
|
Hehe.. der olle Cheater ^^
Ich hab noch einen "intelligenten" Spieler implementiert. Dieser überprüft was der Gegner für Karten gespielt hat. Wirft der Gegner hohe Karten "antwortet" er mit hohen Karten und versucht somit die Karten zu egalisieren. Auf jeden Fall ist das Ergebnis bei 3 Karten uninteressant. Alle Teilnehmer können mit einer Gewinnquote von ca. 16% rechnen (16% zu 16% bei 78% draws). Interessant wird es erst, bei mehr Karten.. beispielshalber habe ich 6 genommen.
Bei 6 Karten wendet sich das Blatt. Während Random vs. Intelligent und Random vs. UpDown immer noch Ausgeglichen ist (30%zu 30%) gewinnt beim Intelligent vs. UpDown der Intelligenz 100% der Spiele  - Intelligenz siegt doch
Gruß Daniel
IntelligentPlayer
|

|
|
jasocul
        
Beiträge: 5832 Erhaltene Danke: 1 Dabei seit: 11.10.2002 Wohnort: hier
XP-Pro D2005 Prof, SharpDevelop 2.0, VC#Express
|
Macht doch einen Wettbewerb.
Jeder Teilnehmer baut ein kleines Programm mit eigener Intelligenz und lässt es gegen Andere antreten. Dann kann jeder seine eigene KI basteln und mal sehen, wer die beste Variante hat.
_________________ Lesen gefährdet die Dummheit.
|

|
|
Flamefire
        

(Threadstarter)
Beiträge: 1013 Erhaltene Danke: 14 Dabei seit: 03.01.2007 Wohnort: Dresden
Win XP Delphi 7 Pro; Delphi 2009 Pro
|
Das wäre mal was. Ich könnte ein Programm machen, dass z.b. 10000 Spiele spielt, die Spieler sind in einer DLL
Funktionen:
Start(x) //Neues Spiel mit x Karten
GetCard() //wähle Karte
TurnResult(y,state) //Ergebnis des Zuges: Gegnerkarte: y ; state=(win,loss,draw)
Fertig.
Dann kann jeder seine KI gegen jede andere antreten lassen.
Hab dazu gerade mal Lust.
Ergebnis kommt dann 
|

|
|
guinnes
       
Beiträge: 94 Dabei seit: 19.05.2008
|
|

|
|
Flamefire
        

(Threadstarter)
Beiträge: 1013 Erhaltene Danke: 14 Dabei seit: 03.01.2007 Wohnort: Dresden
Win XP Delphi 7 Pro; Delphi 2009 Pro
|
Es gibt keinen, der anfängt. Das ganze läuft ja gleichzeitig.
|

|
|
FinnO
        

Beiträge: 863 Erhaltene Danke: 3 Dabei seit: 07.12.2007 Wohnort: Schönböken
win Vista, UBUNTU Delphi 2005 Pers., Turbo Delphi, Delphi 7 Pers.
|
Man sieht die Karte des Gegners also nicht. Das macht das ganze ja schon fast spannend. Also eine möglichst genaue DLL-Doku und eine "Server"anwendung ist gefragt.
|

|
|
BenBE
        

Beiträge: 8055 Erhaltene Danke: 17 Dabei seit: 16.07.2004 Wohnort: Jahnsdorf
Win95, Win98SE, Win2K, WinXP D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, L0.9\FPC2.0
|
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|

|
|
Flamefire
        

(Threadstarter)
Beiträge: 1013 Erhaltene Danke: 14 Dabei seit: 03.01.2007 Wohnort: Dresden
Win XP Delphi 7 Pro; Delphi 2009 Pro
|
Hab eine Basis-Anwendung mit KI fertig.
Ist lokal (hab keinen Bock auf Server und zum Testen muss man die KIs eh 10000x spielen lassen um Zufälle auszuschließen)
Das ganze gibts hier
KI-Doku ist dabei.
Bisher nur Mensch vs KI als Demo.
Rest hab ich heute noch nicht geschafft.
|

|
|
Werbung ausblenden? Dann registriere Dich kostenlos.
Weitere Gründe für eine Registrierung.
Werbung ausblenden? Dann registriere Dich kostenlos.
Weitere Gründe für eine Registrierung.
|
|
|
|