我正在通过 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
如果添加了新帧,则找出有多少帧以及何时达到最大数量循环回到精灵数组中的零。
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))