MS Hearts

eminion

abgemeldet
29 April 2006
550
40
Hallo,
da ich es gelegentlich spiele, hätte ich einige Fragen an die Programmierer im Forum zu MS Hearts (dem vorinstallierten Spiel bei Windows).

Vorher würde ich nochmal kurz die Regeln erläutern, für die, die es nicht kennen:
Gespielt wird das Spiel mit 4 Spielen und dem Altenburger Blatt. Jeder erhält am Anfang 13 Karten und muss davon 3 in den ersten 3 Runden an einen anderen Spieler weitergeben. In der 4. Runde wird nicht getauscht. Ziel ist es, so wenig wie möglich Herz zu bekommen (1 Strafpunkt) oder die Blatt-Queen zu vermeiden (13 Strafpunkte). Hat man jedoch alle Herz-Karten und die Königin, bekommen alle anderen Spieler 26 Strafpunkte. Den Stich bekommt, wer die höchste Karte der Grundfarbe geworfen hat. Herz darf nur als Grundkarte gespielt werden, wenn diese Farbe schon einmal geworfen wurde oder man keine andere Farbe mehr hat. Das Spiel ist zu Ende, wenn ein Spieler 100 Strafpunkte erreicht hat.

1. Frage (aus Spielersicht):
Kann man bei 3 Computerspielern den Verlauf des Spiels überhaupt beeinflussen?

2.
Wie unterscheidet der Computer programmiertechnisch zwischen "Alle Karten sammeln" oder "möglichst wenig Karten sammeln"? Wie funktioniert dabei die Schutzroutine (dass der Spieler dann doch nicht alle Herzkarten bekommt und 2/3 Karten bei einem anderen Spieler landen?

3.
Wie entscheiden Computerspieler überhaupt, welche Farbe sie als nächstes spielen?

4:
Wodurch entstehen unlogische Fehler? Beispiel: Ich habe einmal das Ass gespielt und die Queen wurde mir nicht gegeben, erst beim 2. mal > Computer hat nicht alle sammeln wollen, trotzdem nicht die gefährliche Karte ausgespielt

Viele Fragen. Vielleicht bekomme ich ja die ein oder andere beantwortet, dafür schonmal vielen Dank.
 
Zuletzt bearbeitet von einem Moderator:
Moin.

Ich versteh den Sinn deines Posts überhaupt nicht. Willst du mit Delphi das Spiel manipulieren? Oder hast du vor, eine KI zu schreiben? Willst du einen M:money: Hearts-Klon schreiben?
 
Nein, einfach nur als Anwender das Spiel besser verstehen. Hacks gibts ja schon genug (man suche nur bei youtube danach), und nen Klon zu schreiben habe ich keine Lust zu. Delphi habe ich nur eingegeben, weil ich bei einem allgemeinen Tutorial über Kartenspiele gelesen habe, dass diese meistens mit Delphi gemacht sind.
Selber habe ich das Programmieren schon lange aufgegeben, habe ich einfach kein Talent zu. Aber so allgemeine Dinge lassen sich ja auch komplett ohne Sourcecode erklären.
(ähnlich Programmieren für Nichtprogrammierer)
 
Die Regeln sind mir klar, ich möchte ja wissen, wie der Computer damit arbeitet. Z.b. wie er die nächste Farbe auswählt, die er spielt.
 
Ich blicks immer noch nicht.
Nein, einfach nur als Anwender das Spiel besser verstehen.
Das Spiel verstehen tust du doch schon: Die Regeln hast du perfekt geschildert.
Selber habe ich das Programmieren schon lange aufgegeben, habe ich einfach kein Talent zu. Aber so allgemeine Dinge lassen sich ja auch komplett ohne Sourcecode erklären.
(ähnlich Programmieren für Nichtprogrammierer)
Programmieren für Nichtprogrammierer gibts nicht. Jemand, der nicht programmieren kann, oder noch schlimmer, selber zugibt, kein Talent dafür zu haben, wird das auch nicht verstehen.

Deine Fragen, wie der Computer entscheidet, wie er spielt, gehen in das Feld der Künstlichen Intelligenz. Dafür sind zusätzlich zu Programmierkenntnissen auch hohe Kenntnisse in Algebra und Wahrscheinlichkeitsrechnung notwendig. Ich studier Informatik und hab mich in den letzten beiden Semestern mit künstlicher Intelligenz beschäftigt, d.h. ein wenig an der Oberfläche gekratzt.

Welche Technik M:money: für seine KI einsetzt, muss du Billy schon selber fragen. Wenn ich aber auf deiner Nickpage lese "Abiturient > Student", bezweifle ich, dass du die nötige mathematische Qualifikation hast, um überhaupt irgendwas auf dem Gebiet zu verstehen. Sorry, dich enttäuschen zu müssen.
 
Ist gleich weg. Mein Gott, das habe ich nicht als mathematisches Zeichen gemeint, sondern lediglich als Pfeil. Ansonsten wird es ja nicht das Problem sein, mir zu sagen, der Computer wählt die Karten zufällig aus. Oder, wenn die und die Bedingung da ist, dann macht er dies. Keine höhere Algebra, lediglich allgemeinverständliche Beschreibungen.
Oder nehmen wir Computerpoker oder Schachspiele. Auch da muss der Computer ja entscheiden, wann er wie welchen Zug macht. Wie er die Entscheidung trifft möchte ich gerne wissen. Und da ich das Spiel kenne, möchte ich es eben gerne für dieses wissen.
Was ist denn nur so unverständlich an meinem Post? Ich habe 4 Fragen gestellt die mir gewiss schon mein Informatiklehrer erklären könnte, wenn ich einen hätte.
 
Es ist aber nicht so einfach :wall:
KI (Künstliche Intelligenz) ist ein hochkomplexes Gebiet, einfach ein Muster wenn-das-kommt-mach-das existiert nicht, da es viel zu durchschaubar ist und keineswegs intelligent ist.
Bei der KI stecken viele Logiken zugleich drinne, die Entscheidungen herbeiführen können und auch etwas Fuzzy-Logik so dass das Verhalten bei gleichen Eingaben nie gleich ist (der Computer soll sich ja auch menschlich verhalten).

Wie theHacker schon sagte, ohne Informatik-Wissen und ohne Wissen über KI wirst du nicht das geringste Verstehen, KI ist verdammt komplex und einem dauernden Wandel unterzogen, es gibt sogar lernende KIs, deren frühere richtige/falsche Entscheidungen die nächsten Züge beeinflussen werden.

Und dann Poker und Schach? Schach? Wo Supercomputer gegen Menschen antreten, die über Jahre weiterentwickelt wurden, soll man in einfachen wenn-dann-Sequenzen erklären können?
Alleine 1 Zug kann ja X Züge danach beeinflussen, sowas muss eine gute KI mitberechnen, da existiert dann kein einfaches wenn-dann mehr.
 
Ich würd es evtl so erklären: Setz dich vor Hearts und spiel. Wenn du an der Reihe bist, dann überlegst du ja, welche Karte du unter den umständen schmeißt.

Alles dass, was du dir überlegst, (welche Karten wurden schon geschmissen, versucht einer nen Durchmarsch), genau das gleiche macht der Computer.
(Ich denke mal, so kann man die KI am einfachsten beschreiben). Dir zu sagen, wie der Computer es berechnet, kann ich dir nicht sagen. Aber ich stelle mir vor, dass er mit gewichtungen arbeitet.

Du hattest gesagt, dass du 4 Fragen gestellt hast. 3 davon wurden dir mit der Antwort, es macht die KI und das kann man nicht einfach erklären, beantwortet. Das gleiche hätte dir ein Informatiklehrer auch gesagt.

Zum Thema beeinflussen. Wenn ein COmputer immer die gleiche Rechnung macht, dann ist das beeinflussen schwer. Wenn es aber eine lernende KI ist, dann könnte man es schon machen. Ich kann es dir am beispiel von SKAT erklären.
Du spielst eine Farbe. Du schmeißt jedes mal den PIK Buben. Der zweite schmeißt die 10 und denkt sich, sein Mitspieler hat den Kreuz Buben. Wenn es dann 20 mal nicht so war, lernt die KI, dass er ihn nicht immer hat. (ganz simpel erklärt, da in der Rechnung auch sein Reizen mitberücksichtig wird).

Soviel zum Thema KI von mir. Nur wird dir hier im Forum keiner beschreiben können, wie eine KI genau rechnet. Dafür reich der Platz in den Beiträgen gar nicht aus.

Man möge mich korrigieren, wenn ich grobe Fehler in der Ansatzweise der KI hab.
 
Oder, wenn die und die Bedingung da ist, dann macht er dies. Keine höhere Algebra, lediglich allgemeinverständliche Beschreibungen.
Das ist kein einfaches "Wenn dies, dann das" 8O
Da sind mehrdimensionale Integrale, Faltungen oder abstrakte Vektorräume involviert. Wie gesagt, ich bezweifle ernsthaft, dass deine Kenntnisse hierfür reichen.
 
Auch wenn es nicht so einfach ist, vielen Dank für die Antworten. Da werde ich mich wohl mal um Literatur bemühen. Nicht beantwortet ist jetzt noch die Fehlerfrage: Wie kommen diese bei einer scheinbar perfekten Berechnung zu Stande (z.B. dass der PC die 13-Strafpunkte-Karte manchmal nicht bei der erstbesten Gelegenheit ausspielt). An menschlichen Zügen hats nicht gelegen, würde ich einem einfach nur mitgelieferten Spiel auch nicht zutrauen.
 
Du kannst eine menschliche Handlung nicht mit einer Handlung einer KI vergleichen.

Ein Mensch hat einen "Grund", er "denkt" sich etwas. Bei einer KI liegt eine mathematische Ursache vor, die du nur verstehst, wenn du die Formel und den Algorithmus kennst und verstehst.