我正在制作一款需要玩家对抗怪物的游戏。用户可以告诉玩家移动的位置并显示板。董事会只是我设置为空格的列表,然后是当玩家在列表中移动时的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,'','']
如果需要,我会提供更多信息。提前谢谢。
答案 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'