首页 > 解决方案 > 名称“播放器”未定义且游戏=游戏()

问题描述

我正在看一个用python编写游戏的教程。在 tuto 上一切都很顺利,但我的程序会产生错误。但是,我完全按照教程中的方式进行操作。由于错误消息,我试图自己找到错误,但我找不到解决方案,所以我求助于您找到解决我的问题的方法。所以,我的项目中有 3 个 .py 文件(main.py、player.py 和 game.py)和一个 .tmx 文件。错误在文件“main.py”和“game.py”中。(PS:这是我第一次使用 StackOverflow)。提前感谢大家。

我认为标题不是很相关,所以很抱歉。

错误:

在此处输入图像描述

主要.py:

import pygame

from game import Game

if __name__ == '__main__':
    pygame.init()
    game = Game()
    game.run()

游戏.py:

import pygame
import pytmx
import pyscroll

class Game:

def __init__(self):
    # fenetre du jeu
    self.screen = pygame.display.set_mode((800, 800))  # taille de la fenetre
    pygame.display.set_caption("Pygamon - By BenCorp")  # nom de la fenetre

    #charger la carte (tmx)
    tmx_data = pytmx.util_pygame.load_pygame('map.tmx')
    map_data = pyscroll.data.TiledMapData(tmx_data)
    map_layer = pyscroll.orthographic.BufferedRenderer(map_data, self.screen.get_size())
    #map_layer.zoom = 2

    #generer le joueur
    self.player = Player()

    #dessiner le groupe de calques
    self.group = pyscroll.PyscrollGroup(map_layer=map_layer, default_layer=1)
    self.group.add(self.player)

def run(self):
    # boucle du jeu
    running = True

    while running:

        self.group.draw(self.screen)
        pygame.display.flip()

        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                running = False

    pygame.quit()

播放器.py:

import pygame

class Player(pygame.sprite.Sprite):

def __init__(self):
    super().__init__()
    self.sprite_sheet = pygame.image.load('player.png')
    self.image = self.get_image(0, 0)
    self.rect = self.image.get_rect()

def get_imaged(self, x, y):
    image = pygame.Surface([32, 32])
    image.blit(self.sprite_sheet, (0, 0), (x, y, 32, 32))
    return image

标签: pythonpygame

解决方案


您必须playergame.py中导入模块:

import player

所以你可以使用Player模块中的类player

self.player = player.Player()

推荐阅读