我正在尝试让动画发挥作用。但是当我运行游戏时,我按下键进行打孔,当它完成动画时,游戏会出现错误
\Desktop\python projects\Ultamate Brawl\Ultamite BRAWL.py", line 41, in redrawGameWindow win.blit(PunchR[punchcount//2], (xcor, ycor)) IndexError: list index out of range [Finished in 6.4s]
我看着我的代码,看起来很好
def redrawGameWindow():
global punchcount
global walkcount
win.blit(bg, (-70,0))
if walkcount + 1 >= 27:
walkcount = 0
if punch == True:
if punchcount > 49:
punchcount = 1
win.blit(PunchR[punchcount//2], (xcor, ycor))
punchcount += 1
elif isjump:
win.blit(superjump, (xcor,ycor))
elif left:
if walkcount > 49:
walkcount = 1
win.blit(walkLeft[walkcount//4], (xcor, ycor))
walkcount += 1
elif right:
win.blit(walkRight[walkcount//4], (xcor,ycor))
walkcount += 1
else:
win.blit(char, (xcor,ycor))
pygame.display.update()
我建议,以评估在列表中元素的个数PunchR
由len()
。设置punchcount=0
订阅是否会超出范围。因此,您的算法与列表的长度无关:
if punchcount//2 >= len(PunchR):
punchcount = 0
win.blit(PunchR[punchcount//2], (xcor, ycor))
punchcount += 1
如果只想运行一次动画,则必须设置punch = False
到达列表末尾的时间:
if punch == True:
if punchcount//2 >= len(PunchR):
punchcount = 0
punch = False
win.blit(PunchR[punchcount//2], (xcor, ycor))
punchcount += 1
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句