我正在pygame上做游戏,我遇到了一个问题,我试图找出我面临的问题。而且我不知道解决方案。我收到以下错误消息:
if(shark.vel > 0 and fish.x < shark.x + shark.width and fish.x>=shark.x and fish.y <= shark.y + shark.height and fish.y >= shark.y):
NameError:未定义名称'shark'。这是我的程序如果有人能帮助我,我会很高兴。
class enemy (object):
walkRight= pygame.image.load('shark\R\R1.png').convert()
pygame.image.load('shark\R\R2.png').convert()
pygame.image.load('shark\R\R3.png').convert()
pygame.image.load('shark\R\R4.png').convert()
pygame.image.load('shark\R\R5.png').convert()
pygame.image.load('shark\R\R6.png').convert()
pygame.image.load('shark\R\R7.png').convert()
pygame.image.load('shark\R\R8.png').convert()
pygame.image.load('shark\R\R9.png').convert()
pygame.image.load('shark\R\R10.png').convert()
pygame.image.load('shark\R\R11.png').convert()
pygame.image.load('shark\R\R12.png').convert()
pygame.image.load('shark\R\R13.png').convert()
pygame.image.load('shark\R\R14.png').convert()
pygame.image.load('shark\R\R15.png').convert()
pygame.image.load('shark\R\R16.png').convert()
pygame.image.load('shark\R\R17.png').convert()
pygame.image.load('shark\R\R18.png').convert()
pygame.image.load('shark\R\R19.png').convert()
walkLeft = pygame.image.load('shark\L\L1.png').convert()
pygame.image.load('shark\L\L2.png').convert()
pygame.image.load('shark\L\L3.png').convert()
pygame.image.load('shark\L\L4.png').convert()
pygame.image.load('shark\L\L5.png').convert()
pygame.image.load('shark\L\L6.png').convert()
pygame.image.load('shark\L\L7.png').convert()
pygame.image.load('shark\L\L8.png').convert()
pygame.image.load('shark\L\L9.png').convert()
pygame.image.load('shark\L\L10.png').convert()
pygame.image.load('shark\L\L11.png').convert()
pygame.image.load('shark\L\L12.png').convert()
pygame.image.load('shark\L\L13.png').convert()
pygame.image.load('shark\L\L14.png').convert()
pygame.image.load('shark\L\L15.png').convert()
pygame.image.load('shark\L\L16.png').convert()
pygame.image.load('shark\L\L17.png').convert()
pygame.image.load('shark\L\L18.png').convert()
pygame.image.load('shark\L\L19.png').convert()
def __init__(self, x, y, width, hight, start, end):
self.x = x
self.y = y
self.width = width
self.height = height
self.start = start
self.end = end
self.walkCount = 0
self.vel = 7
def draw(self, surface):
self.move()
if self.walkCount +1 >=57:
self.walkCount = 0
if self.vel > 0:
surface.blit(pygame.transform.scale(self.walkRight[self.walkCount//3,], (self.width, self.height)),(self.x, self.y))
self.walkCount +=1
else:
surface.blit(pygame.transform.scale(self.walkLeft[self.walkCount//3,], (self.width, self.height)),(self.x, self.y))
self.walkCount += 1
def move(self):
if self.vel > 0:
if self.x < self.end + self.vel:
self.x += self.vel
else:
self.vel = self.vel * -1
self.x += self.vel
self.walkCount = 0
def redrawwindow():
global fish
surface.blit (poisson, (0,0))
fish.draw(surface)
shark.draw(surface)
shark1.draw(surface)
shark2.draw(surface)
shark3.draw(surface)
global vie
if(shark.vel > 0 and fish.x < shark.x + shark.width and fish.x>=shark.x and fish.y <= shark.y + shark.height and fish.y >= shark.y):
vie= vie-1
fish = player(0, 0, 64, 64)
elif(shark.vel < 0 and fish.x+fish.width > shark.x and fish.x<=shark.x and fish.y<= shark.y + shark.height and fish.y>= shark.y):
vie= vie-1
fish = player(0, 0, 64, 64)
if vie ==0:
print ("Game Over")
pygame.display.update()
#mainloop
fish = player(300,410,64,64)
shark= enemy(-389,410,170,71,-389, 1360)
shark1= enemy(900,180, 170,71 ,-120, 1360)
shark2= enemy(600,300, 170,71 ,-300, 1360)
shark3= enemy(300,550, 170,71 ,-500, 1360)
这些行:
#mainloop
fish = player(300,410,64,64)
shark= enemy(-389,410,170,71,-389, 1360)
shark1= enemy(900,180, 170,71 ,-120, 1360)
shark2= enemy(600,300, 170,71 ,-300, 1360)
shark3= enemy(300,550, 170,71 ,-500, 1360)
在其中分配/定义这些各种对象的位置位于程序的末尾。在您尝试在上面的行中使用它们之后。
您可能需要在def redrawwindow():
之前就需要这些行,
不过还有两件事。我不确定这是否是复制粘贴问题,但是您缩进敌人的班级是错误的。另外,我非常确定您希望所有这些负载都成为列表分配的一部分。像这样:
walkRight= [pygame.image.load('shark\R\R1.png').convert(),
pygame.image.load('shark\R\R2.png').convert(),
pygame.image.load('shark\R\R3.png').convert(),
pygame.image.load('shark\R\R4.png').convert(),
pygame.image.load('shark\R\R5.png').convert(),
pygame.image.load('shark\R\R6.png').convert(),
pygame.image.load('shark\R\R7.png').convert(),
pygame.image.load('shark\R\R8.png').convert(),
pygame.image.load('shark\R\R9.png').convert(),
pygame.image.load('shark\R\R10.png').convert(),
pygame.image.load('shark\R\R11.png').convert(),
pygame.image.load('shark\R\R12.png').convert(),
pygame.image.load('shark\R\R13.png').convert(),
pygame.image.load('shark\R\R14.png').convert(),
pygame.image.load('shark\R\R15.png').convert(),
pygame.image.load('shark\R\R16.png').convert(),
pygame.image.load('shark\R\R17.png').convert(),
pygame.image.load('shark\R\R18.png').convert(),
pygame.image.load('shark\R\R19.png').convert()]
walkLeft = pygame.image.load('shark\L\L1.png').convert(),
pygame.image.load('shark\L\L2.png').convert(),
pygame.image.load('shark\L\L3.png').convert(),
pygame.image.load('shark\L\L4.png').convert(),
pygame.image.load('shark\L\L5.png').convert(),
pygame.image.load('shark\L\L6.png').convert(),
pygame.image.load('shark\L\L7.png').convert(),
pygame.image.load('shark\L\L8.png').convert(),
pygame.image.load('shark\L\L9.png').convert(),
pygame.image.load('shark\L\L10.png').convert(),
pygame.image.load('shark\L\L11.png').convert(),
pygame.image.load('shark\L\L12.png').convert(),
pygame.image.load('shark\L\L13.png').convert(),
pygame.image.load('shark\L\L14.png').convert(),
pygame.image.load('shark\L\L15.png').convert(),
pygame.image.load('shark\L\L16.png').convert(),
pygame.image.load('shark\L\L17.png').convert(),
pygame.image.load('shark\L\L18.png').convert(),
pygame.image.load('shark\L\L19.png').convert()]
不仅加载,然后丢弃结果。