You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python开发Pygame游戏报错:name 'Player' is not defined

修复方案

核心错误原因

报错NameError: name 'Player' is not defined的直接原因是game.py文件中使用了Player类,但没有导入定义该类的player模块,除此之外你的代码还存在几处语法问题会导致后续运行报错,全部修复步骤如下:

具体修复步骤

  • 在game.py的导入语句区域新增导入行:from player import Player
  • 修正game.py的缩进错误:Game类下的__init__、run方法必须整体缩进4个空格,Python对缩进敏感,未对齐会直接触发语法错误
  • 修正game.py中的HTML转义字符问题:把代码中的"替换为正常的英文双引号"
  • 修正player.py中的方法名不匹配问题:__init__中调用的方法是get_image,但实际定义的方法名是get_imaged,需要统一二者命名,否则会触发属性找不到的错误
  • (可选优化)在player.py的get_image方法中添加image.set_colorkey((0,0,0)),可以去除玩家素材的黑色背景,显示效果更正常

修正后的代码示例

game.py

import pygame
import pytmx
import pyscroll
from player import Player

class Game:
    def __init__(self):
        # fenetre du jeu
        self.screen = pygame.display.set_mode((800, 800))  # 窗口大小
        pygame.display.set_caption("Pygamon - By BenCorp")  # 窗口标题

        # 加载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

        # 生成玩家实例
        self.player = Player()

        # 绘制图层组
        self.group = pyscroll.PyscrollGroup(map_layer=map_layer, default_layer=1)
        self.group.add(self.player)

    def run(self):
        # 游戏主循环
        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()

player.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_image(self, x, y):
        image = pygame.Surface([32, 32])
        image.blit(self.sprite_sheet, (0, 0), (x, y, 32, 32))
        image.set_colorkey((0,0,0)) # 去除黑背景
        return image

main.py代码无问题,无需修改。

内容的提问来源于stack exchange,提问作者Flu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 18:15:03