arrows=[]
badtimer=100
badtimer1=0
badguys=[[640,100]]
healthvalue=196
index=1
for badguy in badguys:
if badguy[0]<-64:
badguys.pop(index)
badguy[0]-=7
index+=1
for badguy in badguys:
screen.blit(badguyimg, badguy)
# 6.3.1 - Attack castle
badrect=pygame.Rect(badguyimg.get_rect())
badrect.top=badguy[1]
badrect.left=badguy[0]
if badrect.left<64:
healthvalue -= random.randint(5,20)
badguys.pop(index)
告诉我错误:
^{pr2}$
你最初的问题就是M.Fabre所说的:你的循环索引在第一个循环中是有效的,而不是第二个循环。要解决这个问题,只需在每个循环之前设置index=0(记住Python从0开始索引)。在
然而,循环中有一个更深层次的问题:在遍历列表时更改坏人会伤害到你。找个时间试试这个测试:
这是一个MCVE的代码。你需要改变你的工作来保持原始列表的完整性。相信我,你的程序没有足够的生命值来承受“指数超出范围”的致命一击。:-)
我推断逻辑是这样的:
我建议两次传球:一次造成伤害(用左作为侧位的表达式)
^{pr2}$。。。还有一秒钟来列一个新的坏人名单。再看一遍名单,只保留那些还在比赛场地上的人:
这能让你暂时摆脱麻烦吗?在
相关问题 更多 >
编程相关推荐