学习Python的最好方法应该是学习一点东西后用一个小项目练练手。
在做游戏的过程中,很多时候需要根据场景按照一定的顺序或规则显示,有些图像信息要在最底层,有些图像需要在最上面显示,那么如何控制图像按要求分层显示呢?pygame提供了一个分层显示的类——LayeredUpdates,利用这个类可以非常简单明了的实现显示需求。
为了简单而且有意义的展示这个功能,本文利用该类来模拟一下windows命令按钮(缺省、获得焦点、点击)。
引入需要的包以及定义全局常量。通常情况下,全局常量应该放在单独的配置文件中,然后import。为简单起见,直接放在文件里。
import pygame
from pygame.sprite import Sprite
from pygame.sprite import Group
from pygame.sprite import LayeredUpdates
from sys import exit
from pygame.rect import Rect
SCREEN_SIZE = (600, 480)
FONT_NAME = "fangsong"
FONT_SIZE = 20
BL_BOTTOM_SIZE = (100, 28)
BL_HOVER_SIZE = (BL_BOTTOM_SIZE[0] - 3, BL_BOTTOM_SIZE[1] - 3)
BL_CLICK_SIZE = (BL_BOTTOM_SIZE[0] - 5, BL_BOTTOM_SIZE[1] - 5)
FONT_COLOR = (0, 0, 0)
定义Lable类:
class Label(Sprite):
def __init__(self, position, size, layer, color, layerGroup, inGroups):
if inGroups is not None:
self.groups = layerGroup, inGroups
else:
self.groups = layerGroup
# 必须使用LayeredUpdates的change_layer()来修改
self._layer = layer
# 必须在_layer之后初始化
super().__init__(self.groups)
self.rect = Rect(position, size)
self.image = pygame.Surface(</