屏幕.blit(实验室图像,实验室矩形)AttributeError:类型对象“LabClass”没有属性“image”

2024-10-01 05:07:04 发布

您现在位置:Python中文网/ 问答频道 /正文

嗨,我正在做一个新游戏,我想测试它来解决任何问题,使它工作。但是pythonshell一直给我这个消息。你知道吗

你知道吗屏幕.blit(实验室图像,实验室矩形) AttributeError:类型对象“LabClass”没有属性“image”

我想尽一切办法来解决这个问题,但我做不到。有人能帮我吗? 我知道可能有其他问题,我将不得不解决,但我需要帮助这个问题。你知道吗

import pygame
import time

key1_images = ["clear.png", "key1.png"]
guy_images = ["lab.png", "shock.png"]

class LabClass(pygame.sprite.Sprite):
    def __init__(self):
        pygame.sprite.Sprite.__init__(self)
        self.image = pygame.image.load("lab.png")
        self.rect = self.image.get_rect()

class key1Class(pygame.sprite.Sprite):
    def __init__(self):
        pygame.sprite.Sprite.__init__(self)
        self.image = pygame.image.load("clear.png")
        self.rect = self.image.get_rect()
        self.rect.center = [310,250]


def levelUp():
    levelUp = False
    if levelUp == True:
        level = level + 1
        levelUp = False

def zap():
    guy.image = pygame.image.load("shock.png")
    animate()
    time.sleep(2)
    T_text = font.render("Oh no, you were", 1, (255, 0, 0))
    screen.blit(T_text,[220,320])
    pygame.display.flip()


def key1Kill():
    key1.image = pygame.image.load("clear.png")
    animate()
    time.sleep(0.1)
    zap()

def key1Play():
    for event in pygame.event.get():
        if event.type == pygame.MOUSEBUTTONDOWN:
            score = True
            score()
            choose = True
            choose()
            key1.image = pygame.image.load("clear.png")
            animate()
        else:
            key1Kill()
    if level <5:
        clock.tick(10)
        key1die = True
    if key1die == True and score == False:
        key1Kill()
    else:
        key1die = False
    if level >5 and not 10:
        clock.tick(5)
        key1die = True
    if key1die == True and score == False and choose == False:
        key1Kill()
    else:
        key1die = False
    if level >9:
        clock.tick(3)
        key1die = True
    if key1die == True and score == False:
        key1Kill()
    else:
        key1die = False

def choose():
    choose = True
    if choose == True:
        clock.tick(2)
        key = random.randint(1,3)
        if key == 1:
            key1.image = pygame.image.load("key1.png")
            animate()
            key1Play()
            choose = False



def score():
    score = False
    if score == True:
        pointstest = pointstest + 1
        score = False
    if pointstest == 10:
        levelUp = True
        levelUp()

def getLife():
if level >18 and levelUp == True:
        num = random.randint(1,20)
        if num ==(10, 15, 1, 3, 11):
            lives = lives + 1

def getCoin():
    if levelUp == True:
        num2 = random.randint(1,15)
        if num2 ==(1, 5, 15, 3, 7): 
            coins = coins + 1

def animate():
    screen.blit(Lab.image,Lab.rect)
    screen.blit(key1.image,key1.rect)
    pygame.display.flip()







pygame.init()
clock = pygame.time.Clock()
screen = pygame.display.set_mode([640,640])
coins = 0
lives = 0
level = 1
pointstest = 0
Lab = LabClass
key1 = key1Class

while True:
    animate()
    choose()
    getLife()
    getcoin()
    levelUp()
    score()

Tags: rectimageselffalsetrueifpngdef
2条回答

当您这样做时:

Lab = LabClass
key1 = key1Class

您不是在调用这两个类的构造函数,您的意思可能是:

Lab = LabClass()
key1 = key1Class()

尽管似乎还有其他错误(例如,使用random模块时没有导入它)

您需要初始化LabClass。更改:

Lab = LabClass

收件人:

Lab = LabClass()

这样,它就可以通过执行Lab.image来访问image变量。我建议再看看Python Classes Tutorial。你知道吗

相关问题 更多 >