在迭代

时间:2018-03-25 15:12:30

标签: python-3.x

我正在制作一款需要玩家对抗怪物的游戏。用户可以告诉玩家移动的位置并显示板。董事会只是我设置为空格的列表,然后是当玩家在列表中移动时的X.

我的意思是:

['','','','X','']

玩家向左移动

['','','X','','']

当玩家到达怪物时,会考虑玩家前进的方向,并且棋盘的那一侧充满了怪物,因此玩家无法在战斗中跑过去。

实施例

['','','monster','X','']
#player moves left
#new list after the list is filled with monsters
['monster','monster','monster','','']

我想知道的是当用户让玩家走进怪物时,我将如何填写该列表?

我现在拥有的内容如下:

#note that num and my two lists are being predefined in this example. 
#Normally there is other code to determine where the monster
#goes and where the user is.

floor1 = ['','','X','','']
floor1_monsters = ['','','monster','','']
num = 2
user = X


if floor1[num] == user and floor1_monsters[num] == 'monster':
  if move == 'left':
    for i in (0,floor1[num]):
      floor[i] = 'monster'

运行时遇到的错误:

TypeError:list indices必须是整数或切片,而不是str

num是分配用于始终保持用户位置的变量。

floor1是包含用户的列表以及将用怪物填充的列表。

用户是' X'。

floor1_monsters是另一个与floor1分开的列表,用于保存怪物所在的位置。

怪物列表和用户列表都是5长,所以num有助于警告用户进入怪物也占据的空间。

运行代码后,我希望floor1看起来像这样:

['monster','monster','monster,'','']

如果需要,我会提供更多信息。提前谢谢。

1 个答案:

答案 0 :(得分:1)

正如评论中匹配所述,floor1[num]将获取索引num列表中的值。这将是值X或值''。他的解决方案:

#note that num and my two lists are being predefined in this example. 
#Normally there is other code to determine where the monster
#goes and where the user is.

floor1 = ['','','X','','']
floor1_monsters = ['','','monster','','']
num = 2
user = "X"
move = "left"


if floor1[num] == user and floor1_monsters[num] == 'monster':
  if move == 'left':
    for i in range(num):
      floor1_monsters[i] = 'monster'

print(floor1_monsters)

如果玩家向左移动,可以验证是否有效。因为这将填充从索引0到索引X的怪物列表,monster重叠。

但是,如果你的玩家朝向正确,并且你想要一个['','','monster','monster','monster']的怪物列表,那么这条路线就会失败。

在这种情况下,您需要从num索引到列表末尾运行迭代。

  if move == 'right':
    for i in range(num, len(floor1_monsters)):
      floor1_monsters[i] = 'monster'