Czesc, chciałem napisac gre na wzór gry karcianej "wojna". Mam kilka klas oraz tworzę talie kart, którą tasuje, a następnie rozdaje 10 losowych zakrytych kart graczom. Nie wiem jak teraz mam porównać pierwszą kartę gracza1 z pierwszą kartą gracza2. Np. pierwsza karta gracza1 jest większa od karty gracza2 to gracz1 otrzymuje 1pkt z 10 możliwych, bo jest rozdanych po 10 kart. Chciałbym to zrobić obiektowo, ale nie wiem jak.
Z góry dziękuje za jakąkolwiek pomoc.
class Card(object):
""" Karta do gry. """
RANKS = ["A", "2", "3", "4", "5", "6", "7",
"8", "9", "10", "J", "Q", "K"]
SUITS = ["c", "d", "h", "s"]
def __init__(self, rank, suit, face_up=True):
self.rank = rank
self.suit = suit
self.is_face_up = face_up
def __str__(self):
if self.is_face_up:
rep = self.rank + self.suit
else:
rep = "XX"
return rep
def flip(self):
self.is_face_up = not self.is_face_up
class Hand(Card):
""" Ręka - karty do gry w ręku gracza. """
def __init__(self):
self.cards = []
def __str__(self):
if self.cards:
rep = ""
for card in self.cards:
rep += str(card) + "\t"
else:
rep = "<pusta>"
return rep
def clear(self):
self.cards = []
def add(self, card):
self.cards.append(card)
def give(self, card, other_hand):
self.cards.remove(card)
other_hand.add(card)
class Deck(Hand):
""" Talia kart do gry. """
def populate(self):
for suit in Card.SUITS:
for rank in Card.RANKS:
self.add(Card(rank, suit))
def shuffle(self):
import random
random.shuffle(self.cards)
def deal(self, hands, per_hand = 1):
for rounds in range(per_hand):
for hand in hands:
if self.cards:
top_card = self.cards[0]
top_card.flip()
self.give(top_card, hand)
else:
print("Nie mogę dalej rozdawać. Zabrakło kart!")
deck1 = Deck()
print("Utworzyłem nową talię.")
print("Talia:")
print(deck1)
deck1.populate()
print(deck1)
print()
deck1.shuffle()
print(deck1)
my_hand=Hand()
your_hand=Hand()
hands=[my_hand, your_hand]
deck1.deal(hands, per_hand=10)
print()
print(my_hand)
print()
print(your_hand)
print()
print(deck1)