【发布时间】:2019-09-08 13:33:04
【问题描述】:
我编写了一个简单的纸牌游戏,在初始化游戏时,每个玩家都会得到两张牌。
在底部,我创建了一个名为 returnCards 的方法,它将玩家的牌放回牌组中。
我是 python 中的 OOP 新手,我很好奇创建这样的独立方法是否是一个好的约定?
我觉得这个方法实际上应该是一个 Player 类方法,但我不确定如何编写它。最重要的是,我在编写 OOP 代码时试图了解良好实践
import random
class Card:
def __init__(self, suit, val):
self.suit = suit
self.value = val
class Deck:
def __init__(self):
self.cards = []
self.build()
def build(self):
for i in ["Hearts", "Diamonds", "Spades", "Clubs"]:
for j in range(1,14):
self.cards.append(Card(i, j))
def length(self):
return len(self.cards)
class Game:
def __init__(self, players, deck):
self.players = players
self.deck = deck
self.cards = deck.cards
def deal(self):
for player in self.players:
for i in range(2):
player.cards.append(self.drawCard())
def drawCard(self):
drawnCard = self.deck.cards[0]
self.deck.cards = self.deck.cards[1:]
return drawnCard
class Player:
def __init__(self, name):
self.name = name
self.cards = []
def returnCards(player, game):
game.deck.cards.append(card for card in player.cards)
player.cards = []
deckOfCards = Deck()
playerOne = Player("John")
playerTwo = Player("Harrry")
newGame = Game([playerOne, playerTwo], deckOfCards)
newGame.deal()
returnCards()
【问题讨论】:
-
Card、Deck 和 Player 类似乎是合理的,尽管可能缺少一些您需要的属性/方法。游戏似乎关闭了。游戏需要套牌和卡片吗?应该有一些“转弯”的概念吗?如果是,您如何建模?每次游戏开始时每个玩家都应该得到相同的牌吗?希望有一些问题能让您走上正轨。
-
我假设您将 1 用于 Ace,11 用于 Jack,等等?