Pygame中获取键盘按键的方法

news/2024/4/29 5:44:38/文章来源:https://blog.csdn.net/hou09tian/article/details/131499340

1 事件与队列

在Pygame中,将用户对游戏的操作叫做“事件”。键盘按键是一种事件,鼠标点击和游戏手柄的输入也是一种事件。在Pygame的子模块locals中,对这些事件进行了定义。当用户通过键盘、鼠标或者游戏手柄对游戏进行操作后,产生的这些事件都会被放在队列中。

2 获取键盘按键的基本原理

在Pygame中获取按键的基本原理就是从队列中取出这些事件,如果是键盘事件,则继续判断用户按下的是哪个键,根据不同的按键进行不同的处理。

3 代码实现

3.1 模块导入

需要导入Pygame模块以及Pygame模块下的locals子模块,代码如下所示:

import pygame
from pygame.locals import *

3.2 从队列中取出事件

从队列中取出事件的代码如下所示:

while True:for event in pygame.event.get():

其中,while True语句表示在游戏运行过程当中,能够不断地获取用户产生的事件;pygame.event.get()函数的作用是从队列中取出所有的事件,并将其保存到变量event中。

3.3 判断是否是键盘事件

在while循环中,对获取到的事件event进行判断,代码如下所示:

if event.type == KEYUP:

其中,event.type表示事件的类型,KEYUP在pygame.locals中定义,表示键盘中的某个键被按下。

3.4 根据不同的按键进行不同的处理

当判断出是键盘按键事件后,接下来判断用户按下的是键盘中的哪个按键,根据不同的按键进行不同的处理。我们要实现的功能是用户按下按键中的数字1键,则在屏幕上显示数字1;按下的是数字2键,则显示数字2,以此类推。代码如下所示:

if  event.key == pygame.K_1:number = '1'
elif event.key == pygame.K_2:number = '2'
elif event.key == pygame.K_3:number = '3'
elif event.key == pygame.K_4:
number = '4'

其中,event.key表示按键对应的值,pygame.K_1到pygame_K_4分别表示数字1键到数字4键对应的值。变量number是要显示的内容。

3.4 创建屏幕和要显示的内容

请参考《Pygame显示文字》。

4 完成代码

在Pygame中获取键盘输入的完整代码如下所示:i

import pygame
from pygame.locals import *
import syspygame.init()
screen = pygame.display.set_mode((600,500))
font = pygame.font.Font(None, 100)
number = '0'while True:for event in pygame.event.get():if event.type == QUIT:sys.exit()elif event.type == KEYUP:if event.key == pygame.K_ESCAPE:sys.exit()elif event.key == pygame.K_1:number = '1'elif event.key == pygame.K_2:number = '2'elif event.key == pygame.K_3:number = '3'elif event.key == pygame.K_4:number = '4'elif event.key == pygame.K_RETURN:number = 'RETURN'screen.fill((0,0,200))imgText = font.render(number, True, (255,255,255))screen.blit(imgText, (300, 200))pygame.display.update()

运行该代码后,当按下1~4这四个数字键,在屏幕中就会显示相应的数字,如图1所示。

图1 显示按键对应的数字

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

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

相关文章

Stable Diffusion 模型界面介绍

Stable Diffusion 模型界面介绍 界面1 图1 Stable Diffusion 模型界面1 ①:选择的模型,及Stable Diffusion进行生成图片是使用的模型。其中.ckpt为大模型 ②:prompt --> 正向提示词。表示你的想法,你想要生成一副什么样的图…

IMX6ULL 移植篇-uboot 网络命令NFS

一. uboot 网络操作命令 本文介绍 nfs 命令的使用,具体是:通过 NFS服务向开发板下载 zImage内核镜像文件。 二. nfs 命令 nfs命令使用的目的:为了方便开发板调试。 nfs(Network File System) 网络文件系统,通过 nfs 可以在计算…

Redis【实战篇】---- 达人探店

Redis【实战篇】---- 达人探店 1. 达人探店 - 发布探店笔记2. 达人探店 - 查看探店笔记3. 达人探店 - 点赞功能4. 达人探店 - 点赞排行榜 1. 达人探店 - 发布探店笔记 发布探店笔记 探店笔记类似点评网站的评价,往往是图文结合。对应的表有两个: tb_bl…

记录力扣热题-100——从链表中找到刷题感觉

目录 一. 🦁 前言二. 🦁 解题过程1. 题目2. 思路一3. 思路二 三. 🦁 文末活动内容简介本书结构关于代码 一. 🦁 前言 狮子此前已经很久没有碰过算法题了,对于之前好不容易攒起来的题感又没了…最近准备面试&#xff0…

这些代码,差点把我气出内伤

先问大家一个小问题:你觉得看别人代码累,还是自己写代码累? 我相信有很多朋友会说,当然是自己写代码累了,要思考逻辑、要动手敲键盘,身心俱疲啊;但是,如果你需要经常阅读别人的代码…

leetcode 141.环形链表(快慢指针追击问题)

⭐️ 往期相关文章 💫链接1:链表分割 💫链接2:链表中倒数第k个结点(快慢指针问题) 💫链接3:leetcode 876.链表的中间结点(快慢指针问题) 💫链接4:leetcode 206.反转链表 &#x1f4…

vue echarts k线图 子功能设置

1 图中自定义选择区间, 手动鼠标拉取区间显示 2 底部数据选择条 dataZoom: [{type: inside,xAxisIndex: [0, 1],start: 98,end: 100},{show: true, // 这个是打开数据 选择条xAxisIndex: [0, 1],type: slider,top: 85%,start: 98,end: 100}], 3 鼠标在 k线图 选择区域 显示 的…

简历石沉大海!这份新鲜出炉的测试用人需求分析报告揭示了原因

最近有朋友吐槽简历投递后石沉大海,而主动打电话面试的除了外包还是外包。软件测试就业形势真的这么糟糕了? 小酋决定用数据揭开真相。因此小酋选取“软件测试”、“自动化测试”、“测试开发”作为搜索关键词,统计了 无忧网 近一个月用人市…

118.浏览器支持和修复Safari浏览器的Flexbox漏洞

在我们之前的文章中,我们介绍了测试的步骤 虽然现在大部分新版本的浏览器都能支持99%的CSS属性,但是不排除的是仍然有一些用户使用老的IE浏览器或者版本较低的浏览器去浏览我们的网页,这样我们的网站可能无法按照我们的预期工作&#xff1b…

[HNOI2008] 越狱

1.介绍 原题链接(回去补上,教练把锣鼓禁了qwq谴责这种行为!!!) 一句话题意:房间1到房间n中,求存在相邻两个房间的宗教相同的可能性总和 就这?省选?哪个省的?湖南的?我…

学习小波分析的一些资料

Papers Wavelets and Subband Coding (2007) - M. Vetterli, J. Kovačević Tutorials A Really Friendly Guide to Wavelets (1999) - C. Valens [CiteSeerX][Mirror]A Practical Guide to Wavelet Analysis (1998) - C. Torrence , G. P. Compo [CiteSeerX]Basics of Wav…

hadoop --- MapReduce

MapReduce定义: MapReduce可以分解为Map (映射) Reduce (规约) , 具体过程: Map : 输入数据集被切分成多个小块,并分配给不同的计算节点进行处理Shuffle and Sort:洗牌和排序,在 Map 阶段结束后&#xf…

日本 NFT 项目概览与特点总结

日本的 NFT 市场 日本的 NFT 市场起源于与国内动漫和娱乐偶像的合作,重点关注本土文化,文化成为日本 NFT 项目的重要基石。 关键要点: 日本的 NFT 产业具有三个特点:广泛的知识产权(IP)、低 FUD 水平以及…

看完就会,从抓包到接口测试的全过程解析

一、为什么抓包 从功能测试角度 通过抓包查看隐藏字段 Web 表单中会有很多隐藏的字段,这些隐藏字段一般都有一些特殊的用途,比如收集用户的数据,预防 CRSF 攻击,防网络爬虫,以及一些其他用途。这些隐藏字段在界面上…

在idea中使用Git技术

1.配置git环境 打开idea,点击file->setting->搜索git, 将git的安装路径填写进去 2.去gitee创建一个远程仓库 3.拉入一个.gitignore文件,过滤掉不需要管理的文件 4.在idea进行如下操作 5.选择要提交的内容 目前只是保存在了本地仓库 6.推送到远端…

28-大文件上传(了解)

一、是什么? 🚗🚗🚗不管怎样简单的需求,在量级达到一定层次时,都会变得异常复杂。 文件上传简单,文件变大就复杂 上传时,以下几个注意点会影响用户体验 服务器处理数据的能力请求超…

Mycat2 使用教程(三)原始数据导入分库分表【MySQL分库分库分表】

Mycat2 使用教程(三)原始数据导入分库分表【MySQL分库分库分表】 本文主要描述mycat2完成分库分别数据源配置后,将数据导入的过程mysql 分库分表如果是新项目,则不用考虑本文内容mycat2如何配置分库分表?见上文 1.计…

5个网站帮你找到免费优质的视频素材

5个免费可商用视频素材网站,建议收藏! 潮点视频 https://shipin520.com/shipin-mb/all-def-267-all-all-all-all-all-0-1.html?from_code2510 潮点视频是一个提供优质高清、无水印的视频素材网站,站内有大量的AE模板、PR模板、实拍素材、视…

自定义 MVC 框架思想

目录 一、MVC设计模式 1. 什么是MVC 2. 三层架构与MVC的区别 二、自定义MVC框架 1. 为什么要学习自定义MVC框架 2. 自定义MVC的工作原理 3. 自定义MVC框架的优势 三、自定义MVC实例流程 1. mvc三层架构的弊端 2. 自定义MVC的工作流程 2.1 子控制器(…

打包时未添加livepusher模块

我们的项目采用的是混入开发,html5, 使用到了安卓离线打包,其中使用到了livepusher模块,本来没什么难事的,很简单的一个问题,但是中文的官方文档却介绍错了包名,一直在郁闷为啥不行,痛苦啊。本来…