首页 > 解决方案 > 在python中将一个类移动到它自己的文件中

问题描述

我有 2 个文件,其中一个是主要文件,另一个是播放器类,我收到这些错误:

Traceback (most recent call last):
File "C:/Users/travi/PycharmProjects/game/main.py", line 15, in <module>
player.player1 = player.player(300, 410, 32, 32)
File "C:\Users\travi\PycharmProjects\game\player.py", line 18, in __init__
self.playerImage
AttributeError: 'player' object has no attribute 'playerImage'

这里是源代码

#file 1############################################
import pygame
import player

pygame.init()

size = WIDTH, HEIGHT = (640, 480)
screen = pygame.display.set_mode(size)

pygame.display.set_caption("Game 2")

FPS = 60
fpsclock = pygame.time.Clock()
animation_speed = 5

player.player1 = player.player(300, 410, 32, 32)
run = True
while run:
pygame.time.delay(50)

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

keys = pygame.key.get_pressed()

if player.player1.active:
    player.player1.frame += 1
if player.player1.frame >= 2:
    player.player1.frame = 0

player.player1.playerImage = player.player1.cells[player.player1.frame + player.player1.dir]


if keys[pygame.K_LEFT] and player.player1.x > player.player1.vel:
    player.player1.x -= player.player1.vel
    player.player1.dir = 3
    player.player1.active = True
elif keys[pygame.K_RIGHT] and player.player1.x < 640 - player.player1.width - player.player1.vel:
    player.player1.x += player.player1.vel
    player.player1.dir = 6
    player.player1.active = True
elif keys[pygame.K_UP] and player.player1.y > player.player1.vel:
    player.player1.y -= player.player1.vel
    player.player1.dir = 9
    player.player1.active = True
elif keys[pygame.K_DOWN] and player.player1.y < 480 - player.player1.height - player.player1.vel:
    player.player1.y += player.player1.vel
    player.player1.dir = 0
    player.player1.active = True
else:
    player.player1.active = False


screen.fill((0, 0, 0))

screen.blit(player.player1.playerImage, (player.player1.x, player.player1.y))

pygame.display.flip()
fpsclock.tick(FPS)

pygame.quit()
##文件2
import pygame

class player():
  def __init__(self, x, y, width, height):
    self.cells = []
    self.x = x
    self.y = y
    self.width = width
    self.height = height
    self.vel = 5
    self.left = False
    self.right = False
    self.dir = 0
    self.walkcount = 0
    self.active = False
    self.frame = 0
    self.spritesheetplayer = 
    pygame.image.load("playerspritesheet.png").convert()
    self.playerImage

def initialize(self):
    for n in range(12):
        width, height = (32, 32)
        rect = pygame.Rect(n * width, 0, width, height)
        image = pygame.Surface(rect.size).convert()
        image.blit(self.spritesheetplayer, (0, 0), rect)
        alpha = image.get_at((0, 0))
        image.set_colorkey(alpha)
        self.cells.append(image)
    self.playerImage = self.cells[0]

应该轮询事件并移动和动画角色的代码此代码最初都在一个文件中,一旦我将其中一些移动到另一个文件中,这些错误开始发生如何修复此代码以使其工作

标签: pythonpygame

解决方案


您必须为 playerImage 设置初始值,例如在您的init函数中 self.playerImage = None


推荐阅读