我正在使用pygame创建一个计算机版本的纸牌游戏“spit”,用于我正在进行的项目。在Spit中,玩家有5手牌,最多可存储5张牌,顶牌面朝上,其余面朝下。当卡片从卡片堆中取出并放在游戏堆上时,我希望手堆的剩余值“向上移动”,以便列表中的第二个值现在是第一个。
为此,我计划使用队列,但是存在问题。 在游戏中,当手堆是空的时,你可以从另一个手堆中取出面朝下的卡片,翻转它,然后将它放在空的手堆中,这样就不会有空的手堆。这称为储存。
这是我的问题,这在队列中是不可能的。有没有解决这个问题?或者我可以使用另一个表单堆栈替换它? 感谢您的时间,我期待您的回答。
答案 0 :(得分:0)
似乎列表可以在这里完成工作。您可以通过列表表示每个手堆,索引0是最下面的卡。然后,您可以使用list.pop()方法获取和删除列表中的最后一张卡片(可见一张)。
对于库存,如果我理解正确,您可以在任何堆栈中获取任何卡(除了最顶层的卡,这是可见的),取出它并将其放在空堆栈的顶部(这将是一个空列表)。你可以用:
来做到这一点firstList[0] = chosenCard #Get the chosen card from the first pile
del firstList[0] #Delete the downmost card. The new list will have element
#firstList[0] equal to the old firstList[1], like a stack
secondList.append(chosenCard) #Add the card to the end of the list (top of the stack)