列表索引超出范围语法错误
List index out of range syntax error
我正在通过 pygame 创建 2D 战斗。我第一次开始编写游戏代码时发生的错误在之前的同一行代码上又出现了,我设法修复了它,但这次我不确定如何解决。
class player:
def __init__(self):
self.x = 200
self.y = 300
self.y_change = 0
self.ani_speed_init = 8
self.ani_speed = self.ani_speed_init
self.ani_stand =glob.glob("characters\Naruto\Standing\naruto_s*.png")
self.ani_stand.sort()
self.moving = True
self.ani_pos=0
self.ani_max = len(self.ani_stand)-1
下一行代码是发生索引超出范围错误的地方。它位于 player1
class 子程序中的 __init__
中。这行代码在列表的位置 0 加载图像。
self.img_stand = pygame.image.load(self.ani_stand[0])
self.ani_walk = glob.glob("characters\Naruto\Walk\naruto_w*.png")
self.ani_walk.sort()
self.ani_pos=0
self.ani_max_walk = len(self.ani_walk)-1
如果添加了新帧,找出有多少帧以及何时达到最大数量,循环回到精灵数组中的零。
self.img_walk = pygame.image.load(self.ani_walk[0])
self.img = pygame.image.load(self.ani_stand[0])
self.jumping = False
self.velocity_index = 0
self.rect = self.img.get_rect()
self.count = 0
self.update(0)
这是播放器1中的更新功能class。这段代码是我之前第一次成功修改错误的地方
def update(self,pos):
if pos != 0:
self.ani_speed-=1
self.x+=pos
if self.ani_speed == 0:
self.img = pygame.image.load(self.ani_walk[self.ani_pos])
self.ani_speed = self.ani_speed_init
if self.ani_pos == self.ani_max_walk:
self.ani_pos = 0
else:
self.ani_pos += 1
这个 else
块位于 update
函数中,是用于解决解决方案的特定代码部分,但我似乎想不出更合理的解决方案来修复错误。
else:
self.ani_speed-=1
if self.moving:
self.ani_speed = self.ani_speed_init
if self.count==8:
if self.ani_pos >= self.ani_max:
self.ani_pos = 1
else:
self.ani_pos+=1
elif self.ani_pos>3:
self.ani_pos=1
self.img = pygame.image.load(self.ani_stand[self.ani_pos-1])
gameDisplay.blit(self.img,(self.x,self.y))
该错误与 Pygame 无关。您打给 glob
的电话
glob.glob("characters\Naruto\Standing\naruto_s*.png")
returns 一个空数组。检查你的脚本在什么目录下执行,指定路径下的文件是否真实存在
我正在通过 pygame 创建 2D 战斗。我第一次开始编写游戏代码时发生的错误在之前的同一行代码上又出现了,我设法修复了它,但这次我不确定如何解决。
class player:
def __init__(self):
self.x = 200
self.y = 300
self.y_change = 0
self.ani_speed_init = 8
self.ani_speed = self.ani_speed_init
self.ani_stand =glob.glob("characters\Naruto\Standing\naruto_s*.png")
self.ani_stand.sort()
self.moving = True
self.ani_pos=0
self.ani_max = len(self.ani_stand)-1
下一行代码是发生索引超出范围错误的地方。它位于 player1
class 子程序中的 __init__
中。这行代码在列表的位置 0 加载图像。
self.img_stand = pygame.image.load(self.ani_stand[0])
self.ani_walk = glob.glob("characters\Naruto\Walk\naruto_w*.png")
self.ani_walk.sort()
self.ani_pos=0
self.ani_max_walk = len(self.ani_walk)-1
如果添加了新帧,找出有多少帧以及何时达到最大数量,循环回到精灵数组中的零。
self.img_walk = pygame.image.load(self.ani_walk[0])
self.img = pygame.image.load(self.ani_stand[0])
self.jumping = False
self.velocity_index = 0
self.rect = self.img.get_rect()
self.count = 0
self.update(0)
这是播放器1中的更新功能class。这段代码是我之前第一次成功修改错误的地方
def update(self,pos):
if pos != 0:
self.ani_speed-=1
self.x+=pos
if self.ani_speed == 0:
self.img = pygame.image.load(self.ani_walk[self.ani_pos])
self.ani_speed = self.ani_speed_init
if self.ani_pos == self.ani_max_walk:
self.ani_pos = 0
else:
self.ani_pos += 1
这个 else
块位于 update
函数中,是用于解决解决方案的特定代码部分,但我似乎想不出更合理的解决方案来修复错误。
else:
self.ani_speed-=1
if self.moving:
self.ani_speed = self.ani_speed_init
if self.count==8:
if self.ani_pos >= self.ani_max:
self.ani_pos = 1
else:
self.ani_pos+=1
elif self.ani_pos>3:
self.ani_pos=1
self.img = pygame.image.load(self.ani_stand[self.ani_pos-1])
gameDisplay.blit(self.img,(self.x,self.y))
该错误与 Pygame 无关。您打给 glob
glob.glob("characters\Naruto\Standing\naruto_s*.png")
returns 一个空数组。检查你的脚本在什么目录下执行,指定路径下的文件是否真实存在