【发布时间】:2020-11-14 02:27:21
【问题描述】:
我正在使用 Pygame 制作一个游戏,其中会有许多不同的屏幕。我正在制作一个名为 Screen 的课程,它将为您制作自定义屏幕。我需要每个屏幕都有不同的事件和触发器,所以我不能只在类中定义一个函数。我需要为每个屏幕提供单独的函数,这意味着我需要在每个屏幕的类定义之外定义函数。我不知道这是否可能,但很高兴知道。 我还没有走得太远,但这里是代码:
import pygame
class Screen:
def __init__(self, size, bg_color, bg_image):
self.size = size
self.bg_color = bg_color
self.bg_image = bg_image
self.layers = []
self.screen = pygame.display.set_mode(self.size)
# some code was taken out here to save space (it was just some x y width and height getters and setters)
def add_item(self, item, layer=None):
if layer is None:
self.layers.append(item)
else:
self.layers.insert(layer, item)
def remove_item(self, item):
self.layers.remove(item)
def draw(self):
self.screen.fill(self.bg_color)
self.screen.blit(self.bg_image)
for item in self.layers:
self.screen.blit(item, item.pos)
【问题讨论】:
-
也许为屏幕创建一个基类,并使用继承专门化每个屏幕?请发布一个简化示例mvce。
-
你做了什么?
-
一种解决方案是创建一个 Screen 类并在该类中为每个不同的屏幕创建不同的函数。我用 PyGame 制作的游戏就是这样做的
标签: python class pygame class-method pygame-surface