python - 如何将牌传给其他玩家等等。说P1抽了4个梅花,我怎么传给P2
问题描述
我假设我想把它放在我开始的 Player 类下,但无论我做了什么,我都不明白如何去做。我宁愿指出正确的方向,而不是只给我代码。
import random
class Card(object):
def __init__(self, suit, val):
self.suit = suit
self.value = val
def show(self):
print("{} of {}".format(self.value, self.suit))
class Deck(object):
def __init__(self):
self.cards = []
self.build()
#suits of the cards
def build(self):
for s in ["Spades", "Clubs", "Diamonds", "Hearts"]:
for v in range(1, 14):
self.cards.append(Card(s, v))
def show(self):
for c in self.cards:
c.show()
#shuffle the deck
def shuffle(self):
for i in range(len(self.cards)-1, 0, -1):
r = random.randint(0, i)
self.cards[i], self.cards[r] = self.cards[r], self.cards[i]
def draw(self):
return self.cards.pop()
class Player(object):
def __init__(self):
self.hand = []
#draw cards
def draw(self, deck):
self.hand.append(deck.draw())
return self
#show the cards in the players hand
def showHand(self):
for card in self.hand:
card.show()
#Pass card to next player
def passCard(self):
self.hand.pop()
deck = Deck()
deck.shuffle()
bob = Player()
bob.draw(deck).draw(deck).draw(deck).draw(deck)
bob.showHand()
解决方案
我将在播放器类中有两种方法:
# In Python, prefer snake_case over camelCase
def give_card(self, index):
return self.hand.pop(index)
def take_card(self, card):
self.hand.append(card)
然后任何时候你想把一张牌从一个玩家传给另一个玩家,你会做如下的事情:
player_2.take_card(player_1.give_card(0))
推荐阅读
- android - Admob Ads are not showing on Real Devices
- html - 为什么我的 CSS 网格布局中的最后一行占用的高度比其余行少?
- c - Not getting tokenized array from strtok_s()
- python - Databricks: merge dataframe into sql datawarehouse table
- machine-learning - How to use K.get_session in Tensorflow 2.0 or how to migrate it?
- python - Importing class in multiple files
- html - 如何设计内部样式和结构维持父母移动设备上的尺寸,而不使用 px 作为尺寸
- javascript - why is My jquery code not working though i have the scripts intact?
- rust - 在 Result 的情况下简化 Rust 中的错误处理
- mongodb - MongoDB user authentication using pymongo