列表索引超出范围语法错误

时间:2018-01-16 12:26:39

标签: python list pygame index-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子例程的__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

如果添加了新帧,则会找出有多少帧以及何时将精灵数组中的最大ammount循环返回到零。

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类中的更新功能。这段代码是我之前第一次修改错误的地方。

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))

1 个答案:

答案 0 :(得分:2)

错误不需要对Pygame做任何事情。您致电glob

glob.glob("characters\\Naruto\\Standing\\naruto_s*.png")

返回一个空数组。检查脚本执行的目录以及指定路径中的文件是否确实存在。