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

从零开始学Python游戏编程31-类3

2.6 run()方法

run()方法的作用是在while循环中调用以上方法,运行游戏。代码如图11所示。

图11 run()方法代码

其中,第43行控制while循环的是实例属性running,在图7所示的__init__()方法中定义;第44-46行代码分别调用了processInput()、update()和render()方法;第47行代码通过实例属性clock设置游戏的帧率。

3 通过实例化Game类运行游戏

在定义了游戏循环模式Game类之后,通过实例化该类,实现游戏的运行,代码如图12所示。

图12 通过实例化Game类运行游戏的代码

其中,图12所示的代码可以看作是整个游戏的主程序,当游戏代码运行后,首先执行的是第48行所示的代码。第48行队Game类进行实例化,即创建了该类的实例game;第49行通过实例game调用run()方法运行游戏;该方法会一直运行,直到当玩家按下了ESC按键或者游戏窗口右上角的关闭按键后,才会结束;第50行代码释放pygame加载的资源,整个游戏结束。

4 游戏完整代码

游戏完整代码如下所示。

import pygameclass Game():def __init__(self):pygame.init()self.window = pygame.display.set_mode((640, 480))pygame.display.set_caption('矩形移动游戏')pygame.display.set_icon(pygame.image.load('1.png'))self.clock = pygame.time.Clock()self.x = 120self.y = 120self.running = Truedef processInput(self):eventList = pygame.event.get()for event in eventList:if event.type == pygame.QUIT:self.running = Falseelif event.type == pygame.KEYUP:if event.key == pygame.K_LEFT:self.x -= 8if event.key == pygame.K_RIGHT:self.x += 8if event.key == pygame.K_UP:self.y -= 8if event.key == pygame.K_DOWN:self.y += 8if event.key == pygame.K_ESCAPE:self.running = Falsedef update(self):passdef render(self):self.window.fill((0,0,0))pygame.draw.rect(self.window, (0,0,255),(self.x, self.y, 400, 240))pygame.display.update()def run(self):while self.running:self.processInput()self.update()self.render()self.clock.tick(60)
game = Game()
game.run()
pygame.quit()

相关文章:

  • 深入简出:KL散度、交叉熵、熵、信息量简介、交叉熵损失
  • ubuntu学习day3
  • QT 文件和文件夹操作
  • 校平机:精密制造的“材料雕刻家“
  • python进阶: 深入了解调试利器 Pdb
  • Logisim数字逻辑实训——计数器设计与应用
  • Node.js 异步调用淘宝API实战:构建高吞吐商品详情数据采集方案
  • Spring 生命周期回调全解:从 @PostConstruct 到 SmartLifecycle 的深度探索
  • 如何批量在多个 Word 文档末尾添加广告页面
  • 【java 13天进阶Day05】数据结构,List,Set ,TreeSet集合,Collections工具类
  • centos下openjdk报:getVersion(FontConfiguration.java)异常,安装fontconfig无效问题的处理
  • day2-小白学习JAVA---java第一个程序
  • 问题:el-tree点击某节点的复选框由半选状态更改为全选状态以后,点击该节点展开,懒加载出来子节点数据以后,该节点又变为半选状态
  • Android 12系统静态壁纸深度定制指南
  • tailwincss
  • ​​从Shell到域控:内网渗透中定位域控制器的8种核心方法​
  • ceph weight 和 reweight 的区别
  • Python语言基础教程(上)4.0
  • 2、SpringAI接入ChatGPT与微服务整合
  • SAP案例:珠海汉胜科技SAP S/4 HANA智能制造实践与价值实现
  • 央视网评论员:婚约不是性许可——山西订婚强奸案背后的性教育盲区
  • 沈辛成评《主动出击》丨科学普及,究竟需要靠谁主动出击
  • 马上评|古籍书店焕新归来,“故纸陈香”滋养依旧
  • 亚洲大厦和一个被音乐剧改变的街区
  • 近千人认购!上海一新盘认购数创今年新高,3月份7个项目开盘“日光”
  • 广西吃了自然保护地划得过多的亏?自治区党委书记要求廓清模糊认识