Ich mache ein einfaches Kartenspiel, dass der Spieler zwei Karten und wenn die Karten die gleiche Farbe, der gleiche Rang (Wert), oder ein Lauf der Spieler gewinnt. Wenn die Hand des Spielers keine dieser Eigenschaften hat, verliert der Spieler. Der Code, den ich verwende, ist wie folgt:Einfaches Kartenspiel in Python
from itertools import product
import random
class Card(object):
FACES = {11: 'Jack', 12: 'Queen', 13: 'King', 14: 'Ace'}
def __init__(self, rank, suit):
self.suit = suit
self.rank = rank
def __str__(self):
value = self.FACES.get(self.rank, self.rank)
return "{0} of {1}".format(value, self.suit)
def __lt__(self, other):
return self.rank < other.rank
class Deck(object):
def __init__(self, ranks=None, suits=None):
if ranks is None:
ranks = xrange(2, 15)
if suits is None:
suits = ['Clubs', 'Diamonds', 'Hearts', 'Spades']
self.deck = []
for r in ranks:
for s in suits:
self.deck.append(Card(r, s))
def deal(self, n):
return random.sample(self.deck, n)
ranks = xrange(2, 15)
suits = ['Clubs', 'Diamonds', 'Hearts', 'Spades']
deck = Deck()
hand = deck.deal(2)
print "Your hand is"
print " - ".join(map(str, hand))
suits_in_hand = []
for card in hand:
suits_in_hand.append(card.suit)
if all(suits_in_hand == suit for suit in suits):
print "\nAll cards are of the same suit"
print "You Win!"
elif all(suits_in_hand == rank for rank in ranks):
print "\nAll cards are of the same rank"
print "You Win!"
# I don't know how to test if the cards in the player's hand are a run
else:
print "\nYou Lose."
Aber auch wenn die Karten sind beide die gleiche Farbe (zB ‚zwei Pik‘ und ‚drei Pik‘) oder den gleichen Rang (zB ‚zwei Hearts 'und' Two of Clubs ') gibt You Lose
aus. Was kann ich tun, um dies zu beheben und wie kann ich die elif
Anweisung hinzufügen, um zu testen, ob die Karten in der Hand des Spielers ein Run sind oder nicht?
Nicht 'alle (suits_in_hand == Anzug für Anzug in Anzügen)' überprüfen, ob die Liste der Klagen zu sehen in der Hand ist gleich jeder mögliche Anzug? –