《Python和Pygame游戏开发指南》——2.6 QUIT事件和pygame.quit()函数
本节书摘来自异步社区《Python和Pygame游戏开发指南》一书中的第2章,第2.6节,作者[美]Al Sweigart(斯维加特), 李强 译,更多章节内容可以访问云栖社区“异步社区”公众号查看。
2.6 QUIT事件和pygame.quit()函数Event对象有一个名为type的成员变量(member variable,也叫作属性,attributes或properties),它告诉我们对象表示何种事件。针对pygame.locals模块中的每一种可能的类型,Pygame都有一个常量变量。第9行检查Event对象的type是否等于常量QUIT。记住,由于我们使用了from pygame.locals import *形式的import语句,主要输入QUIT就可以了,而不必输入pygame.locals.QUIT。
如果Event对象是一个停止事件,就会调用pygame.quit()和sys.exit()函数。pygame. quit()是pygame.init()函数的一种相反的函数,它运行的代码会使得Pygame库停止工作。在调用sys.exit()终止程序之前,总是应该先调用pygame.quit()。通常,由于程序退出之前,Python总是会关闭pygame,这不会真的有什么问题。但是,在IDLE中有一个bug,如果一个Pygame程序在调用pygame.quit()之前就终止了,将会导致IDLE挂起。
我们没有if语句来针对其他的Event对象类型运行代码,因此,当用户点击鼠标、按下键盘按键或者导致创建任何其他类型的Event对象的时候,没有事件处理代码。用户可能会做一些事情来创建这些Event对象,但是,这并不会对程序有任何改变,因为程序不会有任何针对这些类型的Event对象的事件处理代码。在第8行中的for循环执行完后,就处理完了pygame.event.get()所返回的所有Event对象,程序继续从第12行开始执行。
第12行调用了pygame.display.update()函数,它把pygame.display.set_ mode()所返回的Surface对象绘制到屏幕上(记住,我们将这个对象存储在了DISPLAYSURF变量中)。由于Surface对象没有变化(例如,没有被本章稍后将会介绍的某些绘制函数修改),每次调用pygame.display.update()的时候,将会重新绘制相同的黑色图像。
这就是整个程序。在第12行代码执行之后,无限的while循环再次从头开始。这个程序只是让一个黑色的窗口出现在屏幕上,不断地检查QUIT事件,然后重复地将这个没有变化的黑色窗口重新绘制到屏幕上,除此之外,什么也不做。接下来,我们来学习像素、Surface对象、Color对象、Rect对象和Pygame绘制函数,以了解如何让一些有趣的内容出现在这个窗口中,而不只是一片黑压压的颜色。
为了练习自己的Python基础语法,我用pygame写了一个打砖块闯关的游戏 这里的BOSS战是我自己想的,打不动的砖块实在是没有什么意思,于是这个版本我更新了两场BOSS战,我们终于可以打BOSS(其实目前只是会动的大砖块)了。我打算实现道具,并为第一个BOSS加上技能,同时为游戏添加BGM,最后为了给我其他没学过Python的同学测评,我将其编译成了。那是一个百无聊赖的夜晚,我回顾了自己自大学以来的经历,感觉生活十分平淡,学习了许多计算机知识,但是似乎什么东西都没有用上。游戏诞生的喜悦,使我改变了最开始只是简单复现的计划,我打算写进去更多的东西,更完整地复现功能,最好还能有点。
异步社区 异步社区(www.epubit.com)是人民邮电出版社旗下IT专业图书旗舰社区,也是国内领先的IT专业图书社区,致力于优质学习内容的出版和分享,实现了纸书电子书的同步上架,于2015年8月上线运营。公众号【异步图书】,每日赠送异步新书。
相关文章
- python keras 神经网络框架 的使用以及实例
- Python脚本扫描给定网段的MAC地址表(scapy或 python-nmap)
- Python脚本写端口扫描器(socket,python-nmap)
- 用python的TK模块实现猜成语游戏(附源码)
- Python游戏server开发日记(一)目标
- 【华为OD机试真题 python】密室逃生游戏【2022 Q4 | 100分】
- 【零基础学python】:清华官方出品的《看漫画学Python》全彩PDF,495页资源分享
- 学python能做什么兼职-初学Python到月入过万最快的兼职途径(纯干货)
- 《python 与数据挖掘 》一1.3 Python开发环境的搭建
- 《Python游戏编程快速上手》——1.2 启动IDLE
- 《Python游戏编程快速上手》——2.2 计算表达式
- 《Python游戏编程快速上手》一1.1 下载和安装Python
- 《Python游戏编程快速上手》一2.2 计算表达式
- 《Python和Pygame游戏开发指南》——1.11 行号和空格
- 《Python和Pygame游戏开发指南》——2.3 建立一个Pygame程序
- 《Python Cookbook(第3版)中文版》——6.3 解析简单的XML文档
- 《Python游戏编程入门》——1.3 Python中的对象
- Python 实现被动收入教程之我如何使用 python 制作我的第一个高级telegram机器人
- 《Python数据科学实践指南》——0.3 为什么是Python
- Python(一)——抓取网页数据(A股股票名称)并存入本地文件
- 《Python数据可视化之matplotlib实践》 源码 第二篇 精进 第七章
- 华为OD机试 - 密室逃生游戏(Python)
- 小学生要学python开发游戏吗
- 小学生python游戏编程arcade----精灵类直接用内存图片给值
- 小学生python游戏编程arcade----原码分析
- 小学生python游戏开发pygame--设置内容整理
- 小学生python游戏编程5----拼图游戏继
- Python的range、enumerate和zip函数用法
- 在不打开excel的情况下用python执行excel
- python六十九课——网络编程之TCP协议
- python之做一个简易的翻译器(一)
- 深度学习 Day 10——使用 Python 和 TensorFlow 构建深度音频分类器