【Python游戏编程03--pygame事件与设备轮询】
一、pygame事件
1、pygame事件可以处理游戏中的各种事情,完整的事件列表如下:
QUIT,ACTIVEEVENT,KEYDOWN,KEYDOWN,MOUSEMOTION,MOUSEBUTTONUP,MOUSEBUTTONDOWN,JOYAXISMOTION,
JOYBALLMOTION,JOYHATMOTION........
查看文档:https://fishc.com.cn/thread-62173-1-4.html
2、事实循环事件
while True:
for event in pygame.event.get():
if event.type == QUIT:
sys.exit()
3、键盘事件
键盘事件包括典型的keyup和keydown,当按键按下的时候响应KEYDOWN事件,按键弹起的时候KEYUP事件,通常可以设置一个事件变量,然后根据keyup或者keydown给他赋不同的值
while True:
for event in pygame.event.get():
if event.type == QUIT:
sys.exit()
elif event.type == KEYUP:
key_flag = True
elif event.type == KEYDOWN:
key_flag = False
默认情况下,pygame不会重复的响应一个一直被按下的键,只有在第一次被按下时,才会被响应一次,如果需要重复按键的话执行下面的操作
pygame.key_set.repeat(10)
#参数是一个以毫秒为单位的值
4、鼠标事件
pygame支持一些鼠标事件,他们包括MOUSEMOTION,MOUSEBUTTONUP,MOUSEBUTTONDOWN.
在MOUSEMOTION中包含了一些属性:event.pos,event.rel,event.buttons
pygame.mouse.get_pressed() —— 获取鼠标按键的情况(是否被按下)
pygame.mouse.get_pos() —— 获取鼠标光标的位置
pygame.mouse.get_rel() —— 获取鼠标一系列的活动
pygame.mouse.set_pos() —— 设置鼠标光标的位置
pygame.mouse.set_visible() —— 隐藏或显示鼠标光标
pygame.mouse.get_focused() —— 检查程序界面是否获得鼠标焦点
pygame.mouse.set_cursor() —— 设置鼠标光标在程序内的显示图像
pygame.mouse.get_cursor() —— 获取鼠标光标在程序内的显示图像
for event in pygame.event.get():
if event.type == MOUSEMOTION:
mouse_x,mouse_y = event.pos
move_x,move_y = event.rel
MOUSEBUTTONDOWN里面的属性:
event.type == MOUSEBUTTONDOWN:
mouse_down = event.button
mouse_down_x,mouse_down_y = event.pos
MOUSEBUTTONUP里面的属性:
event.type == MOUSEBUTTONUP:
mouse_up = event.button
mouse_up_x,mouse_up_y = event.pos
https://fishc.com.cn/thread-62179-1-4.html
二、设备轮询
在pygame中除了pygame事件,还可以使用设备轮询的方法来检测是否有事件发生。而且在python里面是没有switch语句的,因此当需要处理的事件过多时,我们肯定不会去一条一条的去写if...elif....else来匹配,而设备轮询正好解决了这个棘手的问题。
1、轮询键盘
在pygame中,使用pygame.key.get_pressed()来轮询键盘接口,这个方法会返回布尔值的一个列表,其中每个键一个标志。使用键常量值来匹配按键,这样的好处就是不必遍历时间系统就可以检测多个键的按下
keys = pygame.key.get_pressed() if keys[K_ESCAPE]: pygame.quit() sys.exit()
2、轮询鼠标
同样,我们可以使用类似的方法去轮询鼠标事件。
这里有3个相关的函数:
(1)pygame.mouse.get_pos(),这个函数会返回鼠标当前的坐标x,y;
(2)pygame.mouse.get_rel();
rel_x ,rel_y = pygame.mouse.get_rel().利用这个函数可以读取鼠标的相对移动。
(3)btn_one,btn_two,btn_three = pygame.mouse.get_pressed();
利用这个函数,可以获取鼠标按钮的状态。比如当左键按下的时候btn_one 的值会被赋值为1,鼠标按键弹起是会被赋值为0。
【Python游戏编程03--pygame事件与设备轮询】的更多相关文章
- python游戏开发:pygame事件与设备轮询
一.pygame事件 1.简介 pygame事件可以处理游戏中的各种事情.其实在前两节的博客中,我们已经使用过他们了.如下是pygame的完整事件列表: QUIT,ACTIVEEVENT,KEYDOW ...
- 【python游戏编程之旅】第三篇---pygame事件与设备轮询
本系列博客介绍以python+pygame库进行小游戏的开发.有写的不对之处还望各位海涵. 在上一篇博客中,我们学习了pygame中的IO.数据http://www.cnblogs.com/msxh/ ...
- 【python游戏编程之旅】第四篇---pygame中加载位图与常用的数学函数。
本系列博客介绍以python+pygame库进行小游戏的开发.有写的不对之处还望各位海涵. 在上一篇博客中,我们学习了pygame事件与设备轮询.http://www.cnblogs.com/msxh ...
- 【python游戏编程之旅】第五篇---嗷大喵爱吃鱼小游戏开发实例
本系列博客介绍以python+pygame库进行小游戏的开发.有写的不对之处还望各位海涵. 我们一同在前几期的博客中已经学到了很多pygame的基本知识了,现在该做个小游戏实战一下了. 前几期博客链接 ...
- pygame模块参数汇总(python游戏编程)
一.HelloWorld pygame.init() #初始函数,使用pygame的第一步: pygame.display.set_mod((600,500),0,32) #生成主屏幕screen:第 ...
- Python游戏编程入门 中文pdf扫描版|网盘下载内附地址提取码|
Python是一种解释型.面向对象.动态数据类型的程序设计语言,在游戏开发领域,Python也得到越来越广泛的应用,并由此受到重视. 本书教授用Python开发精彩游戏所需的[]为重要的该你那.本书不 ...
- Python游戏编程入门3
用户输入:Bomb Catcher游戏本章介绍使用键盘和鼠标获得用户输入.包括如下主题:学习pygame事件学习实时循环学习键盘和鼠标事件学习轮询键盘和鼠标的状态编写Bomb Catcher游戏 1本 ...
- Python游戏编程入门
<Python游戏编程入门>这些文章负责整理在这本书中的知识点.注意事项和课后习题的尝试实现.并且对每一个章节给出的最终实例进行分析和注释. 初识pygame:pie游戏pygame游戏库 ...
- 《Python游戏编程快速上手》|百度网盘免费下载|Python基础编程
<Python游戏编程快速上手>|百度网盘免费下载| 提取码:luy6 Python是一种高级程序设计语言,因其简洁.易读及可扩展性日渐成为程序设计领域备受推崇的语言. 本书通过编写一个个 ...
随机推荐
- iOS - 如何得到UIImage的大小
把UIImage 转换为NSData,然后拿到NSData的大小 NSData * imageData = UIImageJPEGRepresentation(image,); length = [i ...
- 前端自动化构建工具webpack (一)之webpack安装 和 设置webpack.confi.js
目的: 模块化开发,组件化开发,让代码符合开发规范,更高效 webpack作用:从pack,就知道这是包的意思,比较专业点叫做前端自动化打包构建工具,代码错误检查,预处理,文件合并(打包),代码压缩 ...
- 特殊字符url编码以后再解码后出现错误(¬ , ¢, ¤, £)
Url编码的原内容是 “¬ify_url=xxxx” 经过url编码以后再解码回来 “¬”的部分就变成了“¬” 解决方案:把原文里面待url编码的&符号先替换成 ...
- 网络爬虫基础知识(Python实现)
浏览器的请求 url=请求协议(http/https)+网站域名+资源路径+参数 http:超文本传输协议(以明文的形式进行传输),传输效率高,但不安全. https:由http+ssl(安全套接子层 ...
- Linux 命令 which whereis locate find
which: 查询某指令的完整路径 $ which [-a] command -a: 将所有在PATH目录中可以找到的指令均列出. 注意:只搜索PATH下的路径. whereis: 只搜索几个特定目录 ...
- sqlserver开启远程访问
1.通过本地连接数据库,选择数据库——右键——属性 2.在连接选项勾选“允许远程连接到此服务器” 3.打开sqlserver配置管理器 4.到sqlserver网络配置——XXX的协议——TCP/IP ...
- 【转】AngularJS动态生成div的ID
AngularJS动态生成div的ID 原文链接:http://blog.csdn.net/you23hai45/article/details/52348078 1.问题背景 给定一个数组对象,里面 ...
- Cookie:解决HTTP协议无保存状态
客户端 Cookie会根据从服务器端发送的相应报文内一个叫Set-Cookie的首部字段信息,通知客户端保存Cookie.当下次客户端再往该服务器发送请求时,客户端会自动在请求报文中加入Cookie值 ...
- 16.0-uC/OS-III同步
同步 uC/OS-III中用于同步的两种机制:信号量和事件标志组 . 1.信号量 信号量最初用于控制共享资源的访问.信号量可用于ISR与任务间.任务与任务间的同步. “ N”表示信号量可以被累计.初始 ...
- django 1.11 目录
django 信号 django form