我正在通过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))
答案 0 :(得分:2)
错误不需要对Pygame做任何事情。您致电glob
glob.glob("characters\\Naruto\\Standing\\naruto_s*.png")
返回一个空数组。检查脚本执行的目录以及指定路径中的文件是否确实存在。