鱼游戏“ NameError”。 'shark'未定义?

问题描述 投票:0回答:1

我正在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)
python pygame pycharm computer-science undefined-reference
1个回答
0
投票

这些行:

 #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()]

不仅加载,然后丢弃结果。

© www.soinside.com 2019 - 2024. All rights reserved.