【发布时间】:2014-07-25 18:41:48
【问题描述】:
我目前是 python 新手,正在使用 python 来创建一些游戏。我写了一个游戏“纸牌屋”,基本上我正在尝试使用我在 OOP 中学到的东西来完成它。规则很简单——你需要最大的牌才能赢。玩家将首先比较数字,然后是卡片的花色——拥有最大卡片的人获胜。我写了以下代码:
import itertools
import random
class Card (object):
def __init__ (self):
self.suit = ["Cubs", "Diamonds", "Hearts", "Spades"]
self.value = ["2","3","4","5","6","7","8","9","10", "J", "Q", "K", "A"]
self.deck = []
for card in itertools.product(self.value, self.suit):
self.deck.append(card)
class Player(object):
def __init__ (self, name, card = None):
self.name = name
self.carddeck = Card()
self.card_available = self.carddeck.deck
def draw_a_card(self):
self.card = random.choice(self.card_available)
print "%s has gotten a %s" %(self.name, self.card)
def __cmp__(self, other):
if self.card_available.index(self.card) > self.card_available.index(other.card):
print "%s wins!" %(self.name)
elif self.card_available.index(self.card) < self.card_available.index(other.card):
print "%s wins!" %(other.name)
player_1= Player("Player 1")
player_2 = Player("Player 2")
player_3 = Player("Player 3")
player_1.draw_a_card()
player_2.draw_a_card()
player_3.draw_a_card()
cards_deck = Card()
player_1.__cmp__(player_2)
经过一番努力,我已经成功比较了玩家 1 和 2 的牌,但我不知道如何将玩家 3 纳入比较中。
【问题讨论】:
-
按照您的实现方式,您必须进行两次单独的比较:player_1 到 player_2,正如您所做的那样,以及与 player_3 比较的获胜者。
-
您可以最大化、排序或简单地使用多个 > 来检查谁获胜。
-
@njzk2 看看他的覆盖函数...
-
奇怪,源中没有提到
Frank Underwood! -
@JoranBeasley:不完全是。使用
random.choice选择卡片,它会随机选择一张卡片。然而,我会先洗牌,然后出牌
标签: python oop object comparison