【问题标题】:Queue in which values can be removed that aren't on top可以删除不在顶部的值的队列
【发布时间】:2016-08-03 03:56:37
【问题描述】:

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

为此,我计划使用队列,但这样做有问题。 在游戏中,当一个手堆为空时,您可以从另一个手堆中取出一张面朝下的牌,翻转后放入空手堆,这样就不会再有空手堆了。这称为储存。

这是我的问题,这在队列中是不可能的。有解决办法吗?或者我可以用来替换它的另一个表单堆栈? 感谢您抽出宝贵时间,期待您的回答。

【问题讨论】:

    标签: stack queue pygame playing-cards


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2011-12-04
      • 2020-09-09
      • 2021-01-19
      • 1970-01-01
      • 1970-01-01
      • 2011-05-28
      • 1970-01-01
      • 1970-01-01
      • 2013-02-13
      相关资源
      最近更新 更多