详解pygame捕获键盘事件的两种方式
作者:CHQC388 发布时间:2021-02-27 08:51:54
方式1:在pygame中使用pygame.event.get()方法捕获键盘事件,使用这个方式捕获的键盘事件必须要是按下再弹起才算一次。
示例示例:
for event in pygame.event.get(): # 捕获键盘事件
if event.type == pygame.QUIT: # 判断按键类型
print("按下了退出按键")
方式2:在pygame中可以使用pygame.key.get_pressed()来返回所有按键元组,通过判断键盘常量,可以在元组中判断出那个键被按下,如果被按下则元组中就会存在这个按键信息。通过这样的方式也可以捕获到键盘的事件,并且不需要按下再弹起的操作,一按下就会有响应,灵活性比较高。
示例代码:
mykeyslist = pygame.key.get_pressed() # 获取按键元组信息
if mykeyslist[pygame.K_RIGHT]: # 如果按键按下,这个值为1
print("按下了方向右键")
总结:
两种方式的比较:方式1的灵活性没有方式2的好,如果对灵活性要求高的游戏,一般建议使用方式2。
pygame按键持续按下响应
在写一个pygame 的一个小的飞机大战程序但是碰到一个小问题,仅此记录
通过键盘事件操控飞机的左右移动:
elif event.type == KEYDOWN:
# 检测按键是否是a或者left
if event.key == K_a or event.key == K_LEFT:
plane_temp.move_left()
虽然能实现移动,但是每一次的移动都需要按一下按钮,使我感觉很难受
想实现可以持续按下,并且可以相应的效果
查资料发现
pygame.key.set_repeat() control how held keys are repeated
set_repeat() -> None set_repeat(delay, interval) -> None When the
keyboard repeat is enabled, keys that are held down will generate
multiple pygame.KEYDOWN events. The delay is the number of
milliseconds before the first repeated pygame.KEYDOWN will be sent.
After that another pygame.KEYDOWN will be sent every interval
milliseconds. If no arguments are passed the key repeat is disabled.
When pygame is initialized the key repeat is disabled.
按键是默认只能按下一次,于是就取了一个巧,查看哪些按键是已进按下的,后通过循环实现对应操作
key_pressed = pygame.key.get_pressed()
if key_pressed[pygame.K_a] or key_pressed[pygame.K_LEFT]
plane_temp.move_left()
pygame的对应帮助文档:
https://www.pygame.org/docs/ref/key.html#comment_pygame_key_set_repeat
来源:https://blog.csdn.net/CHQC388/article/details/104289046


猜你喜欢
- 本文实例讲述了Python中文竖排显示的方法。分享给大家供大家参考。具体如下:这里将中文竖排显示比如 衣食者人之生利也,然且犹尚有节,葬埋者
- 前言根据加锁的范围,MySQL 里面的锁大致可以分成全局锁,表级锁,行锁。行锁已经在前面几篇文章说过1. 全局锁全局锁就是对整个数据库实例加
- 队列和优先队列(Priority Queue)队列是一种可以完成插入和删除的数据结构。普通队列是先进先出(FIFO), 即先插入的先被删除。
- 具体代码如下所示:<%@ page language="java" import="com.studen
- 文件结构html_downloader.py - 下载网页html内容#!/usr/bin/python# -*- coding: UTF-
- Cookie 模块,顾名思义,就是用来操作Cookie的模块。Cookie这块小蛋糕,玩过Web的人都知道,它是Server与Client保
- 本文实例讲述了PHP邮件发送类PHPMailer用法,并详细讲述了其具体的操作步骤。分享给大家供大家参考。具体步骤如下:1.在服务器安装 s
- 一、分工和流程在土豆网,以项目开发为核心,谁都可以带项目,担任项目经理。一个典型的土豆网项目中,当进入正式开发阶段,通常参与者包括:1名设计
- 前言requests是Python发送接口请求非常好用的一个三方库,由K神编写,简单,方便上手快。但是requests发送请求是串行的,即阻
- 现在IE7已经推出一段时间并且渗透到用户当中,不用等太久我们就可以在页面上使用更高级的CSS。两个最有用的项目将是 Child子和Adjac
- 问题(来自Udacity机器学习工程师纳米学位预览课程)用 Python 实现函数 count_words(),该函数输入字符串 s 和数字
- Python是一种面向对象的语言,但它不像C++一样把标准类都封装到库中,而是进行了进一步的封装,语言本身就集成一些类和函数,比如print
- 很多时候,我们需要对List进行排序,Python提供了两个方法,对给定的List L进行排序:方法1.用List的成员函数sort进行排序
- JSON格式数据简介JSON 全称“JavaScript Object Notation”,译为&a
- 一、背景介绍今天,野鸡大学高(三)班的月考成绩出来了,这里先给大家公布一下各位同学的考试成绩。接着,在给大家公布一下各位同学的生活消费情况。
- 迭代是Python最强大的功能之一,是访问集合元素的一种方式。迭代器是一个可以记住遍历的位置的对象。迭代器对象从集合的第一个元素开始访问,直
- 鲲之鹏的技术人员将在本文介绍一种通过模拟操作微信App的方式采集指定公众号的所有历史数据的方法。通过我们抓包分析发现,微信公众号的历史数据是
- 遇到了这个问题,意思是你的 CPU 支持AVX AVX2 (可以加速CPU计算),但你安装的 TensorFlow 版本不支持解决:1. 如
- PostMessage()def keyHwnd(hwndEx, char): """
- 1. 为什么需要Simhash?传统相似度算法:文本相似度的计算,一般使用向量空间模型(VSM),先对文本分词,提取特征,根据特征建立文本向