我在制作pygame项目时遇到了障碍。 display.py
文件无法在render()
文件中找到player.py
属性。
Traceback (most recent call last):
File "C:\Users\ethan\Desktop\pyprojects\pygame\display.py", line 34, in <module>
player.render(screen)
AttributeError: Player instance has no attribute 'render'
我尝试删除渲染播放器的引用。它工作,加上屏幕呈现正确。当我重新放入参考时,屏幕无法正常渲染,并且一起崩溃
如果你能帮助我,我们将不胜感激。
这是代码:
Windows 10 Python的2.7 pygame的-1.9.3
display.py
import pygame
from player import *
import sys
pygame.init()
black = (0,0,0)
red = (255,0,0)
green = (0,255,0)
blue = (0,0,255)
white = (255,255,255)
screen_x = 800
screen_y = 600
screen = pygame.display.set_mode([screen_x, screen_y])
pygame.display.set_caption("Test")
clock = pygame.time.Clock()
player = Player(0,0)
gameLoop = True
while gameLoop:
for event in pygame.event.get():
if event.type == pygame.QUIT:
gameLoop = False
print(event)
clock.tick(30)
pygame.display.update()
player.render(screen)
screen.fill(white)
pygame.quit()
player.py
import pygame
from display import *
import sys
class Player:
def __init__(self, x, y):
self.x = x
self.y = y
self.width = 32
self.height = 32
def render(self, window):
pygame.draw.rect(window, (0,0,255), (self.x, self.y, self.width, self.height))
再次感谢!
答案 0 :(得分:1)
我得到了一个不同的错误:
player = Player(0,0) NameError: name 'Player' is not defined
这是因为您从player.py文件中的display
导入并在player.py中定义Player
之前运行display.py文件。
您可以将display.py中的代码放入main
函数中,并在特殊的if子句中调用它:
if __name__ == '__main__':
main()
确保导入显示模块时main
函数不会运行。
或者您可以删除播放器模块中的行from display import *
。如果播放器和显示模块都需要,请将它们放入另一个单独的模块中。