Python pygame项目实战监听退出事件

08-15 186阅读 0评论

1. 事件监听

首先,我们简单回顾一下事件监听,可以简单概括如下:

游戏循环中,我们希望判断用户具体操作只有捕获到用户具体的操作,才能有针对性的做出响应简而言之,在游戏循环中编写一小段代码,通过这一小段代码,判断用户的具体操作行为,这个就叫做监听

注意:我们想在游戏中实现监听退出事件并且退出游戏,其实代码非常固定(代码形式都差不多),因为几乎所有的Pygame游戏都大同小异。

2. 案例演示

2.1 案例大体思路

代码实现大体思路:首先,我们考虑在游戏循环内部再增加一个for循环,来检测一下当前这一时刻到底发生了哪些事件。然后,在循环体内部,再增加一个条件判断,判断一下事件类型是否是pygame定义的QUIT事件(对应的就是用户点击的关闭按钮)。一旦发现用户点击关闭按钮,我们就可以在if语句下方,编写代码退出程序。

pygame.QUIT方法可以将所有pygame的模块做一个卸载exit()将当前执行的程序直接退出,将当前正在执行的程序做一个终止。

2.2 代码演示

具体代码演示如下所示:可以在上一节(本专栏上一篇文章)中代码的基础上进行修改

import pygame pygame.init()  # 创建游戏的窗口 640*642 screen = pygame.display.set_mode((640, 642))  # 绘制背景图像 bg = pygame.image.load("./飞机大战资料/images/background1.jpg") screen.blit(bg, (0, 0))  # 绘制英雄的飞机 hero = pygame.image.load("./飞机大战资料包/images/me1.png") screen.blit(hero, (280, 500))  # 可以在所有绘制工作完成之后,统一调用update方法 pygame.display.update()  # 创建时钟对象 clock = pygame.time.Clock()  # 游戏循环->意味着游戏的正式开始  # 1. 定义rect记录飞机的初始位置 hero_rect = pygame.Rect(280, 500, 102, 126)  # 游戏循环->意味着游戏的正式开始 while True: # 希望无限循环内部的代码每秒钟重复循环60次 # 可以指定循环体内部的代码执行的频率 clock.tick(60)  # 监听事件 for event in pygame.event.Get(): # 判断事件型是否是退出事件 if event.type == pygame.QUIT: print("游戏退出...")  # quit卸载所有的模块 pygame.quit()  # exit()直接终止当前正在执行的程序 exit()  # 2. 修改飞机的位置 hero_rect.y -= 1 # 判断飞机的位置 if hero_rect.y <= -126: hero_rect.y = 642  # 3. 调用blit方法绘制图像 # 先绘制背景,在绘制飞机,就不会留下残影(背景把上一次的飞机遮挡) screen.blit(bg, (0, 0)) screen.blit(hero, hero_rect)  # 4. 调用update方法更新显示 pygame.display.update() pygame.quit()

2.3 运行结果

代码运行结果如下图所示:当运行程序后,点击退出按钮,可以正常终止屏幕中的游戏画面,并且在控制输出如下图结果。

Python pygame项目实战监听退出事件

到此这篇关于Pythonpygame项目实战监听退出事件的文章就介绍到这了,更多相关python监听退出事件内容请搜索云初冀北以前的文章或继续浏览下面的相关文章希望大家以后多多支持云初冀北!

免责声明
本站提供的资源,都来自网络,版权争议与本站无关,所有内容及软件的文章仅限用于学习和研究目的。不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负,我们不保证内容的长久可用性,通过使用本站内容随之而来的风险与本站无关,您必须在下载后的24个小时之内,从您的电脑/手机中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。侵删请致信E-mail:Goliszhou@gmail.com
$

发表评论

表情:
评论列表 (暂无评论,186人围观)

还没有评论,来说两句吧...