【Pygame 第3课】 游戏中的事件

有人问,为什么突然讲游戏了?有人问,为什么不继续讲python的基础?有人问,为什么不讲爬虫?有人问,为什么不讲算法?……

因为有很多内容,每一块都有想听的人。因为同时不可能推送很多内容。因为我喜欢游戏开发,制作一款游戏的过程很有趣。我会尽量在论坛上补充更多方面的内容。微信上的推送有天生的限制,不能让所有人满足,大家见谅。

上次课讲了游戏最根本的框架,说到在每次循环中会接收玩家的操作。这是游戏中很重要的一个环节--事件响应。

玩家的操作会触发程序中的事件,常见的事件包括:关闭程序、按下键盘、移动鼠标、按下鼠标等等。今天我们挑其中一个来举例说明:“鼠标按下”事件(MOUSEBUTTONDOWN)。

还记得上次课中的这段代码吗:

for event in pygame.event.get():

if event.type == pygame.QUIT:

#接收到退出事件后退出程序

pygame.quit()

exit()

它就是一段事件响应的处理代码。pygame.event.get()会接收所有程序中的事件。当判断这个事件是一个关闭程序(QUIT)的事件时,就将程序关闭。

现在,我们要增加一个事件响应:当玩家点击了鼠标之后,就换一张背景图。

在for循环中新增一段if语句:

if event.type == pygame.MOUSEBUTTONDOWN:

#接收到鼠标按下事件后更换背景

background = pygame.image.load('bg2.jpg').convert()

pygame.image.load().convert()是将图片文件读入程序,后面的.convert()可以省略。

运行程序,在窗口上点击鼠标,背景会变成bg2.jpg的图案。为了显示效果,最好使用和bg.jpg长宽一样的图片。

不过点击了一次之后,背景就不会再变了。而实际上,在你每次点击的时候,程序都会去读取一遍bg2.jpg,这是没有必要。把这个程序的改进留给你们:点击鼠标的时候,背景可以在2张甚至多张图片间切换,另外最好不要每次都去读文件。

面向零基础初学者的编程课

每天5分钟,轻松学编程

回复『 p 』查看python课程

回复『 g 』查看pygame课程

回复『 t 』查看习题

原文发布于微信公众号 - Crossin的编程教室(crossincode)

原文发表时间:2013-08-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏小俊博客

自适应免费开源主题-Dobby

23230
来自专栏AI研习社

Github 项目推荐 | 基于 Three.js 的 web 3D 地球数据可视化的开源组件库

Gio.js 是一个基于Three.js的web 3D地球数据可视化的开源组件库。使用Gio.js的网页应用开发者,可以快速地以申明的方式创建自定义的Web3D...

50920
来自专栏程序员的知识天地

web前端学习:React是什么,为什么要使用它?

React是Facebook内部的一个JavaScript类库,已于1年开源,可用于创建Web用户交互界面。它引入了一种新的方式来处理浏览器DOM。那些需要手动...

20120
来自专栏九彩拼盘的叨叨叨

浏览器控制台生成简书文集的Markdown格式的列表

最近准备给我在简书写的关于web前端的文章做个导航页。那些文章都放在web前端这个文集。 导航内容的是用Markdown来写,内容形式大概下面这样的

9730
来自专栏EAWorld

更真、更强、更快的Web应用-Progressive Web Apps

0.Progressive Web Apps 2016年Progressive Web Apps(文后简称PWA)风劲较大,本文作者详细梳理了PWA现状,希望能...

37870
来自专栏不想当开发的产品不是好测试

nmon在secureCRT下显示乱码问题

# 背景 下载安装了nmon,结果发现显示有问题,如下 ? # 解决 猜测应该是字体编码问题,查阅了解后,是因为CRT设置问题,需要修改下配置,(之前试用xsh...

36760
来自专栏韩伟的专栏

格斗类帧同步游戏的优化

帧同步技术除了可以用来做 MOBA 类游戏,同样可以用来做需要大量快速操作的格斗类游戏,本文就是尝试提出一些解决帧同步方案下格斗游戏的优化措施。

1.1K00
来自专栏企鹅号快讯

Google版小程序来了 渣浪微博没有广告了

还记得小安之前跟大家说不用下载app,就可以直接在手机上运行的谷歌的黑科技吗?最近它小试牛刀,弄出了一款没有广告、信息流按照时间排列的渣浪微博PWA版。 ? 目...

37360
来自专栏云瓣

从Vue.js窥探前端行业

近年来前端开发趋势 1.旧浏览器逐渐淘汰,移动端需求增加: 旧浏览器主要指的是IE6-IE8,它是不支持ES5特性的;IE9+、chrome、sarafi、fi...

39380
来自专栏抠抠空间

vue简介

22800

扫码关注云+社区

领取腾讯云代金券