我做了一个寻宝游戏,我需要它,这样一旦一个包含宝箱的广场被访问了3次,它就会变成一个“强盗”。 为了统计一个宝箱被访问的次数,我在宝箱坐标列表中又添加了许多相同的坐标。然后我计划有一个if语句,这样如果任何一个坐标被写了3次,所有3个都将被删除并放入“bandit”列表中。 以下是我的部分代码草案:
# Treasure Chests Collecting Coins #
if (x,y) in TreasureCoords[0:(TCNumber -1)]:
print("You have landed on a treasure chest! You can visit it 2 more times before it becomes a bandit.")
CoinCollection = CoinCollection + 10
TreasureCoords.append(x,y)
#if TreasureCoords.count(any item) > 3:
#remove all copies of item from list
#add item to bandit list
x,y表示用户当前所在的坐标。CoinCollection是一个单独的变量,当用户登陆宝箱或班迪特这样,坐标的数量是无限的,因为用户在游戏的早期就决定了。 那么,我如何复制我的坐标列表,一旦它们出现在列表中3次,然后把它们放到一个新的列表中呢?我想这是最简单的方法来“计算”用户在一个广场上的次数,并把宝箱换成强盗。在
首先。。。您不需要在列表中搜索三次任何坐标。那太浪费了。如果你删除了它们,那么唯一可能出现三次的坐标就是你刚刚访问过的坐标。在
如果你真的想按照你的问题所示去做,只需做一些类似
while (x,y) in TreasureCoords: TreasureCoords.remove((x,y))
的事情。但是,使用dict
可能更容易。甚至可以避免使用单独的变量。假设ItemCoords
最初填充的坐标表示未访问的宝箱:…然后你就可以看看有多少次宝藏被访问了:
^{pr2}$这仍然过于简单。您可能想要一种更面向对象的方法,正如Christian所暗示的那样:
^{3}$我认为在这种情况下,一个对象将是有益的——与其用关于同一事物的事实来跟踪单独的列表,不如使用一个存储所有相关信息的对象列表。在
可能是这样的:
相关问题 更多 >
编程相关推荐