Pokern

Folgende Aufgabe stammt von Thuroc:

Kurze Hilfestellung vorab: (Wer Pokern beherrscht, kann diesen Teil überspringen)
Gespielt wird Texas Hold`em mit 52 Karten (2-10, Bube, Dame, König, Ass).
Damit Ihr die verschiedenen Blätter nicht raussuchen müsst, hier die möglichen Kombinationen in der Reihenfolge vom niedrigsten bis zum höchsten Wert:
One Pair 2 Karten mit dem gleichem Wert (Pärchen)
Two Pair 2 Pärchen
Three of A Kind 3 Karten mit dem gleichen Wert (Drilling)
Straight Straße mit gemischten Farben
Flush 5 Karten in der selben Farbe ohne Reihenfolge
Full House Ein Paar + ein Drilling
Four of A Kind 4 Karten mit dem gleichen Wert (Vierling)
Straight Flush Eine Straße in einer Farbe
Royal Flush Eine Straße in einer Farbe, mit dem Ass als höchsten Wert Aber Achtung, beim Pokern darf das Ass auch als 1 (Eins) gespielt werden!

Außerdem haben die verschiedenen Farben alle den gleichen Wert! Kreuz ist also nicht höher, wie Pik oder Herz, was das ganze ja ein wenig vereinfacht.

1. Aufgabenteil (mittel) Das Programm soll nun die 2 Karten auf der Hand der Spielers (Pre-Flop) sowie
die ersten 3 Karten auf dem Tisch (Flop) abfragen und dann ausgeben welche Kombinationen möglich
wären. Danach folgt eine weitere Abfrage für die 4. Karte auf dem Tisch (Turn). Nun wiederum die Ausgabe
welche Kombinationen nun noch möglich sind. Sobald die letzte Karte auf dem Tisch liegt (River), soll das
Programm die höchste Kombination ausgeben, welche aus den Karten erstellt werden kann.

2. Aufgabenteil (schwer) Wer jetzt noch nicht genug hat, kann zusätzlich die Anzahl der Spieler abfragen
und somit die Anzahl der Karten im Stapel sowie die Wahrscheinlichkeit berechnen eine mögliche
Kombinationen zu erhalten. Dies sollte jeweils nach dem Flop, sowie nach dem Turn in Prozent ausgegeben
werden. Ich wünsche euch viel Spaß bei der Aufgabe.

Happy Coding,
Xalon
 
1. Aufgabenteil (mittel) Das Programm soll nun die 2 Karten auf der Hand der Spielers (Pre-Flop) sowie die ersten 3 Karten auf dem Tisch (Flop) abfragen und dann ausgeben welche Kombinationen möglich wären.

Sind das die Kombinationen, die mit diesen 2+3=5 Karten möglich sind, oder die Kombinationen, die nach dem öffnen der nächsten Karte möglich wären? Beispiel:

Spieler: {2, 3, 9}, Tisch: {2, 3}

Aktuell sind 2 Paare möglich, aber nach der 1. zusätzlichen Karte ist ein Full House möglich, wenn die Karte eine 2 oder eine 3 ist. Soll die Ausgabe nun "2 Paare" oder "Full House" sein?

Ivan
 
@ Ivan: Ja ich denke das ist richtig so. Ausser dass der Spieler nur 2 Karten hat und insgesamt 5 Karten auf den Tisch gelegt werden (zuerst 3, dann 1 und schliesslich noch 1). Die Karten die der Spieler in der Hand hat, können beliebig mit den Tischkarten kombiniert werden.
 
hi,

ich bin die Aufgabe jetzt angegangen und habe bereits folgendes realisiert.

Kartenblatt festlegen
Kartenblatt erstellung
Karten mischen
Karten ziehen

Code:
# -*- coding: iso-8859-15 -*-
#Autor:BA2

#Module Laden
import random
import string

#Variabeln fuer Schleifen etc.
i = 0
ks = 0
kw = 0

#Karten
blatt = []

#Symbole der Karten
kartensymbole = ["Kreuz", "Pik", "Herz", "Karo"]

#Kartenwerte
kartenwerte = ["2", "3", "4", "5", "6", "7", "8", "9", "10", "Bube", "Dame", "Koenig", "Ass"]

#Blatt zusammenstellen
while ks < len(kartensymbole):
	while kw < len(kartenwerte):
		i = i + 1
		blatt.append(kartensymbole[ks] + " " + kartenwerte[kw])
		kw = kw + 1
	kw = 0
	ks = ks + 1

#Blatt mischen
blatt_gemischt = []
z = 0
liste = len(blatt)
while z < liste:
	z=z+1
	anzahl = random.randint(0, len(blatt) - 1)
	blatt_gemischt.append(blatt[anzahl])
	del blatt[anzahl]

#Karten Ausgeben
karten_user1 = []
karten_user2 = []
karten_tisch = []
z = 0

def ziehen():
	karte = blatt_gemischt[-1]
	del blatt_gemischt[-1]
	return karte

while z < 2:
	z = z + 1
	karten_user1.append(ziehen())
	karten_user2.append(ziehen())

z = 0
while z < 3:
	z = z + 1
	karten_tisch.append(ziehen())

def linie(anzahl):
	return '-'*anzahl

print linie (133)
print "Blatt von Spieler1: ", karten_user1
print linie (133)
print "Blatt von Spieler2: ", karten_user2	
print linie (133)
print "Karten auf dem Tisch: ", karten_tisch
print linie (133)

nun weiss ich nicht so recht, wie ich das ganze nun nach den Poker Regeln auswerten kann.

hat einer von euch da ne idee/Denkansto?


mfg ba2
 
Hi.Gut, dass ich sehe, dass es eine Poker-Aufgabe bereits gibt-wollte nämlich fast schon eine vorschlagen.Ich arbeite nämlich grade an einem Programm, dass mir für eine beliebige Anzahl von Spielern (2-11) die Wahrscheinlichkeit für alle möglichen Kombinationen ausgibt.Dazu mache ich es mir aber "leicht" und simuliere einen haufen Spiele und rechne mir daraus die Wahrscheinlichkeit aus.
3,1416
 
Original von pi()
Hi.Gut, dass ich sehe, dass es eine Poker-Aufgabe bereits gibt-wollte nämlich fast schon eine vorschlagen.Ich arbeite nämlich grade an einem Programm, dass mir für eine beliebige Anzahl von Spielern (2-11) die Wahrscheinlichkeit für alle möglichen Kombinationen ausgibt.Dazu mache ich es mir aber "leicht" und simuliere einen haufen Spiele und rechne mir daraus die Wahrscheinlichkeit aus.
3,1416

So eine ähnliche Simulation habe ich auch geschrieben: http://scorn.kilu.de/Applet/

Der Nutzer kann die Karten von bis zu 6 Spielern angeben und anhand dieser Karten 10.000 bis 1.000.000 Spiele durchspielen lassen. In der Simulation "spielen" alle Spieler bis zum Showdown.
Ausgegeben wird eine Gewinnstatistik zu jedem Spieler.
"Zufällige Spieler" erhalten in der Simulation übrigens im jedem Durchgang zufällige Karten.

Edit: Ich sehe grad, dass in der .jar der Quelltext fehlt- den reiche noch nach.
Die Einstellung "1.000.000 Durchgänge" kann übrigens etwas länger dauern.
 
Zurück
Oben