Pygame教程07:键盘常量+键盘事件的2种捕捉方式

------------★Pygame系列教程★------------

Pygame教程01:初识pygame游戏模块

Pygame教程02:图片的加载+缩放+旋转+显示操作

Pygame教程03:文本显示+字体加载+transform方法

Pygame教程04:draw方法绘制矩形、多边形、圆、椭圆、弧线、直线和线条等

Pygame教程05:帧动画原理+边界值检测,让小球来回上下运动

Pygame教程06:Event事件的类型+处理方法+监听鼠标事件

Pygame教程07:键盘常量+键盘事件的2种捕捉方式

Pygame教程08:使用键盘方向键,控制小球,上下左右移动。

键盘事件会涉及到大量的按键操作,比如游戏中的上下左右,或者人物的前进、后退等操作,这些都需要键盘来配合实现。键盘事件提供了一个 key 属性,通过该属性可以获取键盘的按键。Pygame将键盘上的字母键、数字键、组合键等按键以常量的方式进行了定义。
1.常用的按键常量:
在这里插入图片描述
2.键盘事件的2种捕获方式
2.1pygame.event.get() 方法:这个方法返回一个包含所有待处理事件的列表。你可以遍历这个列表,检查每个事件的类型,并处理键盘事件。当使用这种方法时,通常需要检查 event.type 是否等于 pygame.KEYDOWN,这表示有键被按下。然后,你可以使用 event.key 来获取被按下的键的标识符。

for event in pygame.event.get(): if event.type == pygame.KEYDOWN:  if event.key == pygame.K_LEFT:  # 处理左键按下事件  print("Left key pressed")

2.2.pygame.key.get_pressed() 方法:这个方法返回一个元组,表示当前所有键盘按键的状态(按下或未按下)。你可以通过检查元组中的特定键位来确定哪个键被按下。这种方法对于需要持续监听按键状态的情况很有用,比如实现角色的持续移动。

keys_pressed = pygame.key.get_pressed()  
if keys_pressed[pygame.K_RIGHT]:  # 如果右键被按下  print("Right key is pressed")

3.键盘事件的示例用法:创建了一个游戏窗口,并在窗口中监听了键盘事件,会在窗口显示你所按的键。当按下特定的键(如左键或右键)时,程序会输出相应的信息到控制台。你可以根据需要修改if event.key ==后面的条件,来检测其他键盘事件。

注意一个小细节:当按字母的时候,输入法要切换成英文状态,不然无法显示所按的字母键。使用shift键即可实现中英的来回切换。
在这里插入图片描述

# @Author : 小红牛
# 微信公众号:WdPython
import sys
import pygame# 初始化pygame
pygame.init()# 设置窗口大小
screen = pygame.display.set_mode((700, 180))
# 设置窗口标题
pygame.display.set_caption('Pygame Keyboard Event Example')
# 设置楷体字体
font = pygame.font.SysFont('kaiti', 50, bold=False, italic=False)# 游戏主循环
while True:# 处理事件队列for event in pygame.event.get():if event.type == pygame.QUIT:  # 如果收到退出事件,则退出循环# 关闭游戏pygame.quit()sys.exit()elif event.type == pygame.KEYDOWN:  # 如果收到键盘按下事件# 清空屏幕screen.fill((0, 0, 0))# 1.窗口显示所按的键key_name = pygame.key.name(event.key)# 渲染文本text_surface = font.render(f'当前按下的是:{key_name}键', True, (255, 255, 255))screen.blit(text_surface, (30, 50))# 2.更新显示pygame.display.update()# 3.特殊的键被按下,就会被监听,如下面的上下左右方向键if event.key == pygame.K_LEFT:print('方向左键,被按下')elif event.key == pygame.K_RIGHT:print('方向右键,被按下')elif event.key == pygame.K_UP:print('方向上键,被按下')elif event.key == pygame.K_DOWN:print('方向下键,被按下')

完毕!!感谢您的收看

----------★★历史博文集合★★----------

我的零基础Python教程,Python入门篇 进阶篇 视频教程 Py安装py项目 Python模块 Python爬虫 Json Xpath 正则表达式 Selenium Etree CssGui程序开发 Tkinter Pyqt5 列表元组字典数据可视化 matplotlib 词云图 Pyecharts 海龟画图 Pandas Bug处理 电脑小知识office自动化办公 编程工具 NumPy Pygame

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/739074.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

理论学习 BatchNorm2d

import torch import torch.nn as nn# With Learnable Parameters m nn.BatchNorm2d(100) # Without Learnable Parameters m nn.BatchNorm2d(100, affineFalse) input torch.randn(20, 100, 35, 45) output m(input)print(output) print(output.shape)这段代码展示了如何使…

2024蓝桥杯每日一题(二分)

一、第一题:教室 解题思路:二分差分 对天数进行二分,在ck函数中用差分方法优化多次区间累加。 【Python程序代码】 n,m map(int,input().split()) a [0] list(map(int,input().split())) d,s,t [0]*(m5),[0]*(m5),[0]*(m5) for…

你还可以通过“nrm”工具,来自由管理“npm”的镜像

你还可以通过“nrm”工具,来自由管理“npm”的镜像 nrm(npm registry manager)是npm的镜像管理工具,有时候国外的资源太慢,使用这个就可以快速地在npm源间切换。 1.安装nrm 在命令行执行命令,npm install…

Docker容器化技术(数据卷的管理)

数据卷 是一个可供容器使用的特殊目录,它将主机操作系统目录直接 映射进容器,类似于 Linux 中的 mount 行为 。 数据卷:可以提供很多有用的特性 数据卷可以在容器之间共事和重用,容器间传递数据将变得高效与方便;对数…

如何选择合适的IP代理,如何为网络爬虫设置代理

目录 前言 1. 代理类型的选择 2. 代理速度 3. 代理稳定性 4. 代理的匿名性 5. 代理的地理位置 总结 前言 在进行网络爬虫任务时,为了避免被目标网站封禁IP或限制访问频率,我们通常会使用代理来隐藏真实的IP地址。选择合适的IP代理对于爬虫的成功…

内部应用解耦神器-Spring事件

大家好,我是程序员牛牛,《AI超级个体: ChatGPT与AIGC实战指南》的参与人,10年Java编程程序员。 1. 概述 在做业务开发过程中,有些复杂点的逻辑,可能代码逻辑会很冗长,举一个很简单的例子,如&am…

【vue.js】文档解读【day 3】 | 条件渲染

如果阅读有疑问的话,欢迎评论或私信!! 文章目录 条件渲染前言:v-ifv-elsev-else-iftemplate中的v-ifv-showv-if vs v-show 条件渲染 前言: 在JavaScript中,我们知道条件控制语句可以控制程序的走向&#…

Failed to fetch dynamically imported module错误解决方案

工作需要,需要搬移某个功能代码到去年的分支,结果报了这个错 花了2个多小时排查,最后发现,是某个ts文件没有搬过来 吐血,怎么不直接提示这个文件不存在呢,让我研究了半天

【JAVA】HashMap扩容性能影响及优化策略

🍎个人博客:个人主页 🏆个人专栏:JAVA ⛳️ 功不唐捐,玉汝于成 目录 前言 正文 结语 我的其他博客 前言 在软件开发中,HashMap是一种常用的数据结构,但在处理大量数据时,其扩容…

SpringBoot配置达梦数据库依赖(达梦8)

maven配置 <!-- 达梦数据库 --><dependency><groupId>com.dameng</groupId><artifactId>DmJdbcDriver18</artifactId><version>8.1.1.193</version></dependency><dependency><groupId>com.alibaba&l…

【力扣 - 最大子数组和】

题目描述 给你一个整数数组 nums &#xff0c;请你找出一个具有最大和的连续子数组&#xff08;子数组最少包含一个元素&#xff09;&#xff0c;返回其最大和。 子数组 是数组中的一个连续部分。 示例 1&#xff1a; 输入&#xff1a;nums [-2,1,-3,4,-1,2,1,-5,4] 输出&…

自动化测试过程中的手机验证码处理!

手机验证码登录很普遍了&#xff0c;那么在自动化测试的时候需要登录&#xff0c;登录不了就意味着很多自动化就没法执行下去了。 到底该怎么处理呢&#xff1f;其实并不难&#xff0c;我们先看下验证码的业务逻辑&#xff0c;在我们“点击获取验证码”按钮的时候&#xff0c;…

一学就懂:安装OLED透明屏拼接屏需要注意什么?

安装OLED透明屏拼接屏时&#xff0c;需要注意以下几个方面&#xff1a; 一、前期准备 测量和规划&#xff1a;对安装区域进行详细测量&#xff0c;确保安装区域的尺寸和结构符合OLED透明屏的要求。同时&#xff0c;规划好拼接屏的数量、位置以及布线和固定方案。 环境评估&am…

Weblogic 常规渗透测试环境

测试环境 本环境模拟了一个真实的weblogic环境&#xff0c;其后台存在一个弱口令&#xff0c;并且前台存在任意文件读取漏洞。分别通过这两种漏洞&#xff0c;模拟对weblogic场景的渗透。 Weblogic版本&#xff1a;10.3.6(11g) Java版本&#xff1a;1.6 弱口令 环境启动后…

(golang)切片何时会创建新切片或影响原切片

什么时候切片操作会影响原切片 // 1.切片后没有触发slice的扩容机制时 什么时候对切片操作会创建新切片不影响原切片 // 2.对切片头元素进行截取的时候 // 3.当使用append时&#xff0c;len > cap则会触发扩容机制 前置&#xff1a; //slice结构体 type SliceHeader struct…

指针篇章-(4)+qsort函数的模拟

学习目录 ———————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————…

​知识图谱:基于嵌入的模型(TransE 、TransH、TransR和TransD)

(一)TransE: Translating Embeddings for Modeling Multi-relational Data. Antoine Bordes, Nicolas Usunier, Alberto Garcia-Duran, Jason Weston, Oksana Yakhnenko. NIPS 2013. 论文地址:http://papers.nips.cc/paper/5071-translating-embeddings-for-modeling-multi-…

[论文笔记]跨语言摘要最新综述:典型挑战及解决方案

https://arxiv.org/abs/2203.12515 跨语言摘要是指为给定的一种语言(例如中文)的文档生成另一种语言(例如英文)的摘要。 图1:四个端到端框架的概述。XLS:跨语言摘要;MT:机器翻译;MS:单语摘要。虚线箭头表示监督信号。无框彩色方块表示相应任务的输入或输出…

Deep Learning for Detecting Robotic Grasps

链接&#xff1a;1301.3592.pdf (arxiv.org) 这个用于从单一RGB-D视图进行机器人抓取检测的算法包括以下步骤&#xff1a; 图像获取&#xff1a; 机器人获取包含待抓取对象的场景的RGB-D图像。 抓取评分&#xff1a; 使用小型深度网络对RGB-D图像中的潜在抓取进行评分。抓取以在…

如何才能做一名渗透测试人员?

学习实践&#xff0c;目前只有这路子&#xff0c;自学9月&#xff0c;成功入圈。下面说一下自己的学习路径&#xff0c;都是摸爬滚打&#xff0c;交了N份钱才学会的。 切记一定要先了解整个渗透测试的流程&#xff0c;记住整个流程口诀&#xff1a;信息收集&打点&#xff…