[英]Append every 2nd element of list (Python)
我正在做一個紙牌游戲挑戰。 我做了 3 個類:“卡片:”class,“甲板:”class,和“玩家:”class。
在牌組中 class 是一個 function 來創建一個裝滿玩家牌的牌組(列表) class 是一個空列表(例如“self.hand = []”)
為了節省篇幅,我不會展示所有類的完整代碼,但這里是關鍵部分:
在甲板 class 中:
# Deal one card
def deal_one(self):
return self.deck.pop(0)
在播放器 class 中:
# Take a card:
def take(self, new_cards):
if type(new_cards) == type([]):
self.hand.extend(new_cards)
else:
self.hand.append(new_cards)
很容易創建 2 名玩家並將套牌從他們中間分開,如下所示:
for card in range(26):
pl_1.take(mydeck.deal_one())
pl_2.take(mydeck.deal_one())
但作為一項挑戰,我想將每張牌發給每個玩家。 我試過這個:
for card in mydeck.deck[::2]:
pl_1.take(mydeck.deal_one())
但這返回了與第一個代碼相同的結果(給玩家 1 的甲板的前半部分)。 任何人都可以幫助修復嗎? 謝謝!
在你的牌組 class 中,添加一個接受玩家列表的 function 並使用模數在玩家之間交替。
獎勵:在達到每個玩家的最大牌數后,接受一個 int 以打破 for 循環。
def takeAlternate(players : list, maxCardsPerPlayer : int = 0):
numPlayers = len(players)
currentCard = 0
currentPlayer = 0
for card in self.deck:
currentPlayer = currentCard % numPlayers
# move card from deck to player
players[currentPlayer].takeCard(card)
self.deck.remove(card)
currentCard += 1
if maxCardsPerPlayer != 0 and currentCard >= maxCardsPerPlayer * numPlayers:
break
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.