def display(self): if self.hit == True: self.screen.blit(self.bomb_list[self.image_index], (self.x, self.y)) self.image_num += 1 if self.image_num > 7: self.image_num = 0 self.image_index +=1 elif self.image_index > 3:#出错位置 time.sleep(1) exit() self.image_index = 0 else: self.screen.blit(self.image, (self.x, self.y))
编写飞机大战时添加爆炸效果图片时出错
Traceback (most recent call last): File "C:/Users/Lee/PycharmProjects/untitled9/test.py", line 184, in <module> main() File "C:/Users/Lee/PycharmProjects/untitled9/test.py", line 175, in main hero.display() File "C:/Users/Lee/PycharmProjects/untitled9/test.py", line 47, in display self.screen.blit(self.bomb_list[self.image_index], (self.x, self.y)) IndexError: list index out of range
查了资料以为是list[0]出错,但无论修改上限和下限都有问题
最后发现是逻辑错误,将elif改为if即可,是一个单独的判断语句,没有连带关系
def display(self): if self.hit == True: self.screen.blit(self.bomb_list[self.image_index], (self.x, self.y)) self.image_num += 1 if self.image_num > 7: self.image_num = 0 self.image_index +=1 if self.image_index > 3: time.sleep(1) exit() self.image_index = 0 else: self.screen.blit(self.image, (self.x, self.y))