pygame研究之利用sprite的UI架构实现

在制作pygame游戏时,为了实现暂停功能并创建简洁的UI,作者发现需要编写大量代码来处理鼠标交互。受到pygame sprite类的启发,作者设计了一个类,以提高UI控件的可遍历性和判断鼠标点击的通用性。该类通过自定义事件与游戏其他部分通信,允许方便地扩展添加更多控件。资源链接提供了一个示例代码。
摘要由CSDN通过智能技术生成

       学着网上的代码写了个战机游戏,但在暂停游戏的时候,发现实现一个简单按钮竟然要写那么多的代码,而且进行鼠标交互时,这些代码掺杂在原有的游戏代码中,实现看着太丑陋了,就想着抽象一个类出来,网上查了一些资料,特别是pygame的UI实现,各种方式都有,但是感觉都只是为了解决具体问题而写的代码段,通用性不太好,当时正沉迷于pygame的精髓sprite类中,就觉得这个东西应该是可以解决困局的好工具,于是就有了下面的代码。

import pygame as pg
# 所有全局常量(下面全部大写的都是全局常量)
from Setting import *

class ButtonSprite(pg.sprite.Sprite):
    def __init__(self, _ID, _backpic, _pos_x, _pos_y):
        # 重载父类
        super().__init__()
        # 具体动作
        self.ID = _ID
        self.image = pg.image.load(_backpic)
        self.rect = self.image.get_rect()

        if _pos_x >= 0:
            self.rect.x = _pos_x
        elif _pos_x == -1:
            self.rect.x = (SCREEN_RECT.width - self.rect.width) // 2

        if _pos_y >= 0:
            self.rect.y = _pos_y
        elif _pos_y == -1:
          
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值