当前位置: 首页 > news >正文

从零开始学Python游戏编程30-类2

2 实现游戏循环模式的类

在《从零开始学Python游戏编程19-游戏循环模式1》中提到,游戏的循环模式包含5个自定义函数,分别是用来初始化游戏状态和游戏数据的init()函数,用来处理玩家通过键盘、鼠标以及手柄的输入信息的processInput()函数;更新游戏状态和游戏数据的update()函数;显示游戏状态和游戏数据的render()函数;启动游戏的run()函数。我们可以创建一个类,将以上提到的五个参数作为该类的方法,那么这个类就是实现游戏循环模式的类,之后就可以通过这个类实现游戏功能了。

2.1 实现游戏循环模式的类的代码结构

实现游戏循环模式的类的代码结构如图6所示。

图6 实现游戏循环模式的类的代码结构

2.2 __init__()方法

Game类的__init__()方法的代码如图7所示。

图7 __init__()方法的代码

__init__()方法相当于init()函数,完成用来初始化游戏状态和游戏数据,并且定义了Game类的几个属性,表示屏幕的screen、表示时钟的clock、表示矩形左上角横纵坐标的x和y以及表示游戏运行标志的running。这些属性在Game类的其它方法中还要使用。

2.3 processInput()方法

Game类的processInput()方法的代码如图8所示。

图8  processInput()方法的代码

该方法用于处理玩家的输入,与之前提到的自定义函数processInput()的代码类似,只是使用了Game类实例的属性self.running、self.x和self.y等。

2.4 update()方法

update()方法用于更新游戏数据和游戏状态。对于“移动矩形”的游戏来说,游戏数据是矩形左上角的横纵坐标x和y,这两个数据在processInput()方法中已经进行了更新,因此对于update()方法,使用pass表示该方法不做任何动作,代码如图9所示。

图9  update()方法的代码

2.5 render()方法

render()方法用于显示游戏数据和游戏状态,代码如图10所示。

图10 render()方法的代码

其中,第39行中的self.window表示实例的window属性,该属性在图7所示的__init__()方法中定义,表示游戏窗口,该行代码的作用是设置游戏窗口的背景色;第40行代码根据实例的x和y属性,在游戏窗口window中绘制矩形;第41行代码显示绘制好的矩形。

http://www.xdnf.cn/news/24229.html

相关文章:

  • [Java · 初窥门径] Java 语言初识
  • C++动态分配内存知识点!
  • 锁(Mutex)、信号量(Semaphore)与条件量(Condition Variable)
  • 网络编程2
  • 第八周作业
  • alertManager部署安装、告警规则配置详解及告警消息推送
  • 工厂方法模式详解及在自动驾驶场景代码示例(c++代码实现)
  • Linux根据 PID 进行性能分析
  • 三格电子——PROFIBUS DP设备长距离传输和干扰问题解决办法
  • ffprobe 输出 HEVC 码流 Level:标准的 “错位” 与分析的 “归位”
  • javaweb-servlet-继承关系以及service方法、servlet生命周期
  • LabelImg打标工具的下载和使用——YOLO格式篇
  • open CasCade下载
  • RVOS的任务调度优化
  • OJ笔试强训_1至24天
  • `peft`(Parameter-Efficient Fine-Tuning:高效微调)是什么
  • 接口测试的原则、用例与流程
  • Git学习之路(Updating)
  • 《软件设计师》复习笔记(11.3)——需求获取、分析、定义、验证、管理
  • 欧拉系统升级openssh 9.7p1
  • 【AI】实现中文文章摘要的AI模型
  • 【失败】Gnome将默认终端设置为 Kitty
  • 如何在Linux系统中部署C++ Web应用
  • Sa-Token使用指南
  • 1 Celery 简介
  • cpolar 内网穿透 实现公网可以访问本机
  • top100 (6-10)
  • 字符串循环拼接,不能用 + 连接, 需要用 StringBuilder 代替
  • 全球唯一电解方式除湿器 / 加湿器 RS1 ROSAHL 微型 易安装
  • Logisim数字逻辑实训——寄存器设计与应用