试图把我的pygame曲面放到类中

2024-04-23 16:12:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在编程中大量使用类和OOP,并试图将我的基本游戏窗口设置为一个display类,当调用该类时,它将创建游戏窗口,并完成所有pygame初始化。在

我已经完成了一个视图教程,但很难找到一个封装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

如果我修改我的代码(通过替换class Display(object):-->;class Display(width,height,tilesize),这是我试图传递的值,我会得到一个错误:

^{pr2}$

只是想弄清楚这个错误是在我的语法中,还是在尝试不可能的事情。 谢谢:)

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()

Tags: self游戏错误displayfilesprogramwidthscreen
1条回答
网友
1楼 · 发布于 2024-04-23 16:12:34

myDisplay是缩进的,因此python认为它是Display类的一部分。不能在类的定义内创建类的实例。另外,set_icon需要pygame Surface对象,而不是文件的路径。要解决此问题,请执行以下操作:

    # ...
    icon = pygame.image.load("player.jpg")
    pygame.display.set_icon(icon)
    # ...

最后,您应该更改:

^{pr2}$

为此:

^{3}$

相关问题 更多 >