Stack 可删除非';t在上面

Stack 可删除非';t在上面,stack,queue,pygame,playing-cards,Stack,Queue,Pygame,Playing Cards,我正在为一个项目使用pygame创建一个纸牌游戏“spit”的计算机化版本。在Spit中,玩家有5个手牌堆,最多可储存5张牌,顶部牌面朝上,其余牌面朝下。当一张牌从牌堆中移除并放置在游戏堆上时,我希望手牌堆的剩余值“向上移动”,以便列表中的第二个值现在是第一个值 为此,我计划使用队列,但存在一个问题。 在游戏中,当一个手牌堆为空时,你可以从另一个手牌堆中取出一张正面朝下的牌,翻转它,然后将其放入空手牌堆中,这样就没有更多的空手牌堆了。这就是所谓的囤积 这是我的问题,这在队列中是不可能的。这有什么

我正在为一个项目使用pygame创建一个纸牌游戏“spit”的计算机化版本。在Spit中,玩家有5个手牌堆,最多可储存5张牌,顶部牌面朝上,其余牌面朝下。当一张牌从牌堆中移除并放置在游戏堆上时,我希望手牌堆的剩余值“向上移动”,以便列表中的第二个值现在是第一个值

为此,我计划使用队列,但存在一个问题。 在游戏中,当一个手牌堆为空时,你可以从另一个手牌堆中取出一张正面朝下的牌,翻转它,然后将其放入空手牌堆中,这样就没有更多的空手牌堆了。这就是所谓的囤积

这是我的问题,这在队列中是不可能的。这有什么办法吗?或者另一个我可以用来替换这个的表单堆栈?
谢谢您的时间,我期待着您的回答。

似乎列表可以在这里完成这项工作。您可以用一个列表来表示每个手牌堆栈,索引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)