| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Neuer User Registriert seit: Oct 2006
Beiträge: 13
| Frage zu KartenSpiel mit ComputerGegnern
Hallo, ich versuche ein KartenSpiel im Flash Mx zu programmieren, bei dem man drei Karten hat und jeweils eine davon mit drei offen liegenden Karten austauschen kann. Ziel ist es drei Karten von der gleichen Farbe(drei Herz), oder drei Karten mit dem gleiche Kartenwert (drei Könige) zu erhalten. Das Problem ist die KI... Kann mir jemand einen Tip geben wie man sinnvoll an diese Problematik herangehen kann... Der Computer muss seine drei Karten vergleichen und die drei offen liegenden Karten kontrollieren 1) ob in seinen Karten gleiche Kartenfarben, oder Kartenwerte vorhanden sind 2) welche Karten höher sind 3) welche Karte er mit welcher offenligenden austauschen soll Hat jemand ne Ideee.... |
| | |
| | #2 (permalink) |
| muh Registriert seit: Apr 2002 Ort: Freiburg / Stuttgart
Beiträge: 4.338
|
Willkommen im Forum! Ich würde da so ran gehen: Erstmal muss es dir möglich sein, die Karten nach Arten (gleiche Farbe, gleiche Zahl/Figur) zu gruppieren. Dafür würde ich eine Gruppen-Klasse erstellen, die einen Typ (Farbe oder Zahl), eine ID (Herz oder Dame) und einen Wert (10 besser als 7, Kreuz besser als Karo, Typ Zahl immer mehr wert als Typ Farbe). Jetzt gehst du einfach deine Karten durch, für jede Karte prüfst du für jede Eigenschaft (Farbe, Wert) ob es eine passende Gruppe gibt. Wenn es eine gibt, merkst du dir in einem Array zu dieser Gruppe die Karte, wenn es keine Gruppe gibt, erstellst du jeweils eine neue (für Farbe und Wert) und speicherst die Karte rein. Wenn du alle Karten auf der Hand durch bist, kannst du die Gruppen nach Wert und Anzahl der zugehörigen Karten sortieren. Jetzt gehst du alle offenen Karten durch, und machst das gleiche, dann prüfst du von oben nach unten, ob es für deine Gruppen passende offene Karten gibt. Wenn es keine gibt setzt du aus, oder bemühst den Zufall.
__________________ »Carpe diem«, sagte der Graf. (Terry Pratchett: Ruhig Blut!) |
| | |
| | #3 (permalink) |
| Neuer User Registriert seit: Oct 2006
Beiträge: 13
|
Danke für den Tipp – aber leider bin ich bezüglich Klassen (und so) nicht so gut bewandert... Kennt wer gute Tutorials (Klassen...) die mir bei meinem Problem mit dem Kartenspiel (mit Computergner) weiterhelfen können... |
| | |
| | #4 (permalink) |
| muh Registriert seit: Apr 2002 Ort: Freiburg / Stuttgart
Beiträge: 4.338
|
Du kannst das ganze auch ohne Klassen machen ... am besten du fängst einfach an, mit den Mitteln, die du beherrschst.
__________________ »Carpe diem«, sagte der Graf. (Terry Pratchett: Ruhig Blut!) |
| | |
| | #5 (permalink) |
| Nagelneuer User Registriert seit: Dec 2005
Beiträge: 924
|
Du musst für die verschiedenen Zugmöglichkeiten, die der Computer hat, ein Bewertungssystem finden. Den Zug mit dem höchsten Wert führst du aus. Wenn du 3 Karten auf der Hand hast und drei Karten zum Austauschen auf dem Tisch liegen, gibt es 9 Möglichkeiten. Führ einfach jede Möglichkeit gedanklich aus und gib dem Blatt auf der Hand dann einen Wert. Der Zug, der zum Blatt mit dem höchsten Wert geführt hat, wird ausgeführt. Wenn es mehrere gleich bewertete Züge gibt, wählst du einen per Zufall aus. Wenn die KI weniger stark spielen soll, machst du einfach zwischendurch weniger hoch bewertete Züge. mfg. h
__________________ The fact that you've got "Replica" written on the side of your gun and the fact that I've got "Desert Eagle written on the side of mine ... :D Geändert von hazy fantazy (27-10-2006 um 21:56 Uhr) |
| | |
| | #6 (permalink) |
| Neuer User Registriert seit: Oct 2006
Beiträge: 13
|
Hab mir schon nen Weg überlegt wie ich das ganze scripte: Zuerst kontrolliert der Computer ob er gleiche Karten (Farbe oder Wert) in seiner Hand hat: 1) bei keinen gleichen Karten vergleicht er jede seiner Karten mit den offen auf dem Tisch liegenden – bei gleichen Farben addiert er die Kartenwerte und speichert diese Summe gemeinsam mit der Kartenbezeichnung (also Karte: 1,2,3...) in ein Array. Die 9 Array´s (3eigene x 3offene Karten) werden dann wieder in ein Array abgelegt und dann mit der "Function sort" nach den Kartensummen sortiert. An der Position "8" des Arrays hat man dann die eigene Karte sowie die offen liegende Karte die zusammen den höchsten Wert ergeben. 2) bei zwei gleichen Farben oder Kartenwerten auf der Hand brauche ich nur eine Karten mit der gleichen Farbe oder Kartenwert in den offenen Karten suchen... 3) bei drei gleichen Farben auf der Hand suche ich einfach die höchste (gleiche Farbe) in den offenliegenden Karten müsste sich eigentlich realisieren lassen... |
| | |
| | #7 (permalink) |
| new user Registriert seit: Oct 2005
Beiträge: 140
|
Ja müsste gehen. (einfach ein paar if...) Aber wenn du trotzdem Probleme haben solltest, such mal nach "Rekursion". Damit werden z.B. Schach-KIs oder auch Kartenspiel-KIs gelöst. Es ist genau das, was "hazy fantazy" beschrieben hat |
| | |
| | #8 (permalink) |
| Neuer User Registriert seit: Oct 2006
Beiträge: 13
|
Danke für den Tipp: PinkDragon – Hab mich im Forum mal – bezüglich Rekursion umgesehen... Entweder kapier ich die Scripts nicht – oder ich weiss nicht wie mir so ein rekursives Script bezüglich meinem Karten-Spiel helfen kann Hat jemand vielleicht einen kleinen Ansatz (Script) wie man so was bezüglich meinem Spielvorhaben scriptet, oder in welchen Bereich des Spiels man es sinnvoll einsetzt... |
| | |
| | #9 (permalink) |
| new user Registriert seit: Oct 2005
Beiträge: 140
|
Es hilft dir eine KI zu programmieren ![]() Eine Rekursion grundsätzlich ist eine Funktion die sich immer wieder selber aufruft. (bis zu einem gewissen Punkt) Und was bringt das? Ich muss zugeben, in deinem Fall nicht viel :P Ausser du willst eine besonders schwere KI, die auch die Karten der anderen kennt und diese miteinbezieht. Das würde in etwa so aussehen (eine indirekte Rekursion): PHP-Code: Hmmm irgendwie ist das verdammt unverständlich... aber ich habs probiert ![]() Hier ist aber auch noch das Tutorial an das ich mich gehalten habe. (alles bis zum alpha-Beta-Cutoff sollte für dich interessant und anwendbar sein) mfg PD |
| | |
| | #10 (permalink) |
| muh Registriert seit: Apr 2002 Ort: Freiburg / Stuttgart
Beiträge: 4.338
|
Wo genau liegt denn dein Problem? In meinem ersten Beitrag habe ich doch eine recht präzise Beschreibung von einem Algorithmus gegeben, der immer die beste Karte für einen gewissen Zustand finden dürfte. Wenn es dir ganz allgemein an Erfahrung mit Programmierung mangelt, solltest du dir vielleicht erstmal einige sehr einfache Sachen vornehmen, um etwas Erfahrung zu sammeln, danach wird dir das ganze wie von allein aus den Fingern fließen.
__________________ »Carpe diem«, sagte der Graf. (Terry Pratchett: Ruhig Blut!) |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |