我试图在我的编程中开始大量使用类和OOP,并尝试将我的基本游戏窗口设置为显示类,当调用时创建游戏窗口,并完成所有游戏动初始化。
我已经完成了一个视图教程,但我很难找到一个将pygame.display调用封装到一个类中的方法。这是因为/ /不应该/ pygame正常工作吗?
我在玩这个游戏时遇到的最常见的错误是
Traceback (most recent call last):
File "C:\Program Files (x86)\Wing IDE 101 5.0\src\debug\tserver\_sandbox.py", line 13, in <module>
File "C:\Program Files (x86)\Wing IDE 101 5.0\src\debug\tserver\_sandbox.py", line 27, in Display
NameError: name 'Display' is not defined
如果我修改我的代码(通过替换类Display(对象): - &gt; class Display(width,height,tilesize),这是我试图传递的值,我得到一个错误:
NameError: name 'width' is not defined
只是想弄清楚错误是否在我的语法中,或者我是否尝试尝试不可能的错误。 谢谢:))
import pygame
from pygame.locals import *
#Constants
TILESIZE = 32
MAPWIDTH = 16
MAPHEIGHT = 16
#variables
playing = True
#Creates Display Window
class Display(object):
def __init__(self, width, height, tilesize):
pygame.init()
pygame.display.set_icon("player.jpg")
pygame.display.set_caption("FarmTown Version 1.0")
self.SCREEN_WIDTH = width * tilesize
self.SCREEN_HEIGHT = height * tilesize
self.myScreen = pygame.display.set_mode([SCREEN_WIDTH, SCREEN_HEIGHT])
def update():
pygame.display.flip()
#Set Up Everything To Play
myDisplay = Display(MAPWIDTH, MAPHEIGHT, TILESIZE)
#Game Loop Begins
while playing:
#Display the surface
myDisplay.update()
答案 0 :(得分:0)
myDisplay是缩进的,因此python认为它是Display类的一部分。您无法在该类的定义中创建类的实例。此外,set_icon需要一个pygame Surface对象,而不是文件的路径。要解决这个问题,请执行以下操作:
# ...
icon = pygame.image.load("player.jpg")
pygame.display.set_icon(icon)
# ...
最后,你应该改变这个:
self.myScreen = pygame.display.set_mode([SCREEN_WIDTH, SCREEN_HEIGHT])
到此:
self.myScreen = pygame.display.set_mode([self.SCREEN_WIDTH, self.SCREEN_HEIGHT])