我正在为一个清单编写代码,当我单击x时,列表中的一个空格被填满,当我点击z时,列表中的一个pos被删除,当我点击c时,列表被打印。我知道代码效率很低,但这只是为了在这个阶段进行测试,所以忽略它深入if语句的程度。不管怎样,如果inv[0]是none行以及该部分中的所有行,我会在if中得到一个错误。错误是“列表索引超出范围”有人知道我做错了什么吗?你知道吗
import pygame, sys
pygame.init()
i= 1
inv = []
#Code below will add an item to that list.
w, h = 1000, 600
DISPLAYSURF = pygame.display.set_mode((w, h))
while True:
DISPLAYSURF.fill((255, 255, 255))
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
elif event.type == pygame.KEYDOWN:
这是为了填补名单上的一个职位
if event.key == pygame.K_x:
if inv[0] == None:
inv[0] = 'an_item'
elif inv[1] == None:
inv[1] = 'an_item'
elif inv[2] == None:
inv[2] = 'an_item'
elif inv[3] == None:
inv[3] = 'an_item'
elif inv[4] == None:
inv[4] = 'an_item'
else:
print("No inventory space")
这是在按下一个键时清空列表中的一个位置。我知道这是低效的,但我不认为它应该影响它:
if event.key == pygame.K_z
if inv[4] == none:
if inv[3] == None:
if inv[2] == None:
if inv[1] == None:
if inv[0] == None:
print('Nothing to drop!')
else: inv[0] None
else:
inv[1] = None
else:
inv[2] = None
else:
inv[3] = None
else:
inv[4] = None
当按下C键时,这句话是用来打印列表的
if event.key == pygame.K_c:
print(inv)
你正在初始化一个没有任何元素的空列表。当触发事件键
K_x
时,将检查第一个条件:if inv[0] == None:
键K_z
的情况更糟,因为在检查if inv[4] == None
时超出了5个元素的界限。你知道吗但是,问题是,没有第0个元素,因为您的列表是空的。相反,您应该创建一个包含5
None
元素的列表,如下所示:d-coder在注释中指出的另一个错误是,在第二个代码列表中,最里面的
if
中的语句在语法上不正确。应该是的我很好奇,你在做一个堆栈,但在这个游戏中没有使用堆栈操作。我在前一篇文章中向您展示了堆栈操作。你知道吗
我给了你发票pop()命令,只需使用发票推送(whateverisbeingpush)
这将大大减少您的代码。你知道吗
相关问题 更多 >
编程相关推荐