python - 在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]
应该轮询事件并移动和动画角色的代码此代码最初都在一个文件中,一旦我将其中一些移动到另一个文件中,这些错误开始发生如何修复此代码以使其工作
解决方案
您必须为 playerImage 设置初始值,例如在您的init函数中 self.playerImage = None
推荐阅读
- python - 使用 google slides API 创建表格
- python - python中的高效循环算法
- istio - 为 tls 和 MTLS 配置 istio
- c# - 如何重置此数学函数中整数的值?
- huawei-mobile-services - 华为Push Kit - com.huawei.hms.common.ApiException: 6003: 证书指纹错误
- java - Java 泛型导致编译错误“无法推断类型”/Android LiveData 转换
- javascript - 无法在 ReactJS 中使用 img 元素加载图像
- c# - 使用 C# 将命名空间添加到动态 JSON 对象键
- javascript - interact.js:获取矩形而不是鼠标的位置
- android - React Native - 打开设备默认图库应用