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

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

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

相关文章

【Java探索之旅】数据类型与变量,字面常量,整型变量

🎥 屿小夏 : 个人主页 🔥个人专栏 : Java入门到精通 🌄 莫道桑榆晚,为霞尚满天! 文章目录 📑前言一、字面常量二、数据类型三、变量3.1 变量概念3.2 语法格式 四、整型变量4.1 整型变…

运维随录实战(13)之docker搭建mysql集群(pxc)

了解 MySQL 集群之前,先看看单节点数据库的弊病 大型互联网程序用户群体庞大,所以架构需要特殊设计。单节点数据库无法满足大并发时性能上的要求。单节点的数据库没有冗余设计,无法满足高可用。单节点 MySQL无法承载巨大的业务量,数据库负载巨大常见 MySQL 集群方案 Re…

.NET高级面试指南专题十六【 装饰器模式介绍,包装对象来包裹原始对象】

装饰器模式(Decorator Pattern)是一种结构型设计模式,用于动态地给对象添加额外的职责,而不改变其原始类的结构。它允许向对象添加行为,而无需生成子类。 实现原理: 装饰器模式通过创建一个包装对象来包裹原…

云原生之容器编排实践-ruoyi-cloud项目部署到K8S:Nginx1.25.3

背景 前面搭建好了 Kubernetes 集群与私有镜像仓库,终于要进入服务编排的实践环节了。本系列拿 ruoyi-cloud 项目进行练手,按照 MySQL , Nacos , Redis , Nginx , Gateway , Auth ,…

DDoS和CC攻击的原理

目前最常见的网络攻击方式就是CC攻击和DDoS攻击这两种,很多互联网企业服务器遭到攻击后接入我们德迅云安全高防时会问到,什么是CC攻击,什么又是DDoS攻击,这两个有什么区别的,其实清楚它们的攻击原理,也就知…

C#,数值计算,用割线法(Secant Method)求方程根的算法与源代码

1 割线法 割线法用于求方程 f(x) 0 的根。它是从根的两个不同估计 x1 和 x2 开始的。这是一个迭代过程,包括对根的线性插值。如果两个中间值之间的差值小于收敛因子,则迭代停止。 亦称弦截法,又称线性插值法.一种迭代法.指用割线近似曲线求…

【JavaScript 漫游】【033】Cookie 总结

文章简介 本篇文章为【JavaScript 漫游】专栏的第 033 篇文章,主要记录了浏览器模型中 Cookie 相关的知识点。 Cookie 概述 Cookie 是服务器保存在浏览器的一小段文本信息,一般大小不能超过4KB。浏览器每次向服务器发出请求,就会自动附上这…

gensim 实现 TF-IDF;textRank 关键词提取

目录 TF-IDF 提取关键词 介绍 代码 textRAnk 提取关键词 这里只写了两种简单的提取方法,不需要理解上下文,如果需要基于一些语义提取关键词用 LDA:TF-IDF,textRank,LSI_LDA 关键词提取-CSDN博客 TF-IDF 提取关键词…

【框架学习 | 第三篇】Spring上篇(Spring入门、核心功能、Spring Bean——>定义、作用域、生命周期、依赖注入)

文章目录 1.Spring简述1.1什么是Spring框架?1.2Spring的核心功能1.2.1 IOC(1)IOC介绍(2)控制?反转? 1.2.2 AOP(1)AOP介绍(2)专业术语(…

BadUsb制作

BadUsb制作 一个树莓派pico kali监听 需要的文件 https://pan.baidu.com/s/1_kyzXIqk9JWHGHstTgq7sQ?pwd6666 1.将pico插入电脑 2.将Bad USB固件中的文件复制到pico中,pico会重启 3.将Bad USB目录文件复制进去(打开Bad USB目录文件复制) …

Spring Boot单元测试与热部署简析

1 Spring Boot的简介 Spring Boot是一个用于构建独立的、生产级别的Spring应用程序的框架。它简化了Spring应用程序的开发过程,提供了自动配置和默认配置,使得开发者只需专注于业务逻辑的实现,而不用去关注繁琐的配置问题。 Spring …

伪分布Hadoop的安装与部署

1.实训目标 (1)熟悉掌握使用在Linux下安装JDK。 (2)熟悉掌握使用在Linux下安装Hadoop。 (3)熟悉掌握使用配置SSH免密登录。 2.实训环境与软件 环境 版本 说明 Windows 10系统 64位 操作电脑配置 …

HTML 学习笔记(一)开始

一、介绍: 首先引用百度百科的一段话作为介绍:   HTML的全称为超文本标记语言,是一种标记语言。它包括一系列标签,通过这些标签可以将网络上的文档格式统一,使分散的Internet资源连接为一个逻辑整体。HTML文本是由HTML命令组成的描述性文本…

[贰],万能开篇HelloWorld

1,新建项目 File/New/Project Android/Android Application Project 输入程序名字HelloWorld Next Next 选择Blank Activity 修改为HelloWorldActivity 2,异常点 2.1,异常1:No resource found that matches the given name The…

如何在Windows系统使用固定tcp公网地址ssh远程Kali系统

文章目录 1. 启动kali ssh 服务2. kali 安装cpolar 内网穿透3. 配置kali ssh公网地址4. 远程连接5. 固定连接SSH公网地址6. SSH固定地址连接测试 简单几步通过[cpolar 内网穿透](cpolar官网-安全的内网穿透工具 | 无需公网ip | 远程访问 | 搭建网站)软件实现ssh 远程连接kali! …

ubuntu23.10安装搜狗拼音

1.添加fcitx仓库 sudo add-apt-repository ppa:fcitx-team/nightly 更新: sudo apt-get update 安装fcitx sudo apt-get install fcitx fcitx安装成功 切换输入系统为fcitx

设计模式 代理模式

代理模式主要使用了 Java 的多态,主要是接口 干活的是被代理类,代理类主要是接活, 你让我干活,好,我交给幕后的类去干,你满意就成,那怎么知道被代理类能不能干呢? 同根就成&#xff…

Android14之解决报错:No module named selinux(一百九十三)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

Win32汇编操作数据库学习

1 连接数据库 使用odbc连接;在此层次没有ado或dao技术,只有odbc; 先写一个asm只是连接数据库; .386.model flat, stdcalloption casemap :none ; case sensitiveinclude windows.inc include user32.inc includelib user32.l…

R语言复现:中国Charls数据库一篇现况调查论文的缺失数据填补方法

编者 在临床研究中,数据缺失是不可避免的,甚至没有缺失,数据的真实性都会受到质疑。 那我们该如何应对缺失的数据?放着不管?还是重新开始?不妨试着对缺失值进行填补,简单又高效。毕竟对于统计师来说&#…