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

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

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

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

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

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

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

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

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

Pygame教程08:使用键盘方向键,控制小球,上下左右移动。
1.Pygame常用的事件类型有哪些:

QUIT:当用户关闭窗口时触发此事件。通常,你会在游戏的主循环中检测这个事件,并据此退出游戏。
ACTIVEEVENT:当pygame获得或失去焦点时触发此事件。这对于需要在不同应用之间切换时暂停或恢复游戏的程序来说很有用。
KEYDOWN 和 KEYUP:当用户按下或释放键盘上的键时触发这些事件。你可以通过event.key属性来获取被按下或释放的键的常量名称。
MOUSEMOTION:当鼠标移动时触发此事件。你可以通过event.pos获取鼠标的当前位置,以及通过event.rel获取鼠标相对于上一次事件的相对移动距离。
MOUSEBUTTONDOWN 和 MOUSEBUTTONUP:当用户按下或弹起鼠标按钮时触发这些事件。你可以通过event.pos获取鼠标的当前位置,以及通过event.button获取被按下或释放的鼠标按钮的编号(1为左键,2为中键,3为右键)。
此外,还有其他一些事件类型,如JOYAXISMOTION、JOYBALLMOTION、JOYHATMOTION等,这些主要与游戏手柄输入相关。
这些事件类型都是由pygame.event.EventType枚举类定义的。你可以使用pygame.event.get()函数来获取事件队列中的所有事件,并在游戏的主循环中逐一处理它们。为了确保不丢失任何重要事件,尤其是退出命令信号(pygame.QUIT),你的程序应该在每一帧都处理事件,并将已处理的事件从事件队列中移除。
2.Pygame.event处理事件的方法
在这里插入图片描述
3.鼠标事件的示例用法:当鼠标移动、按下或释放按钮时,程序会输出相应的信息到控制台,或执行相应的事件代码。下面代码中鼠标按下就会一个黄色的圆,鼠标移动的时候,在移动的位置随机颜色的圆。
在这里插入图片描述

# @Author : 小红牛
# 微信公众号:WdPython
import sys
from random import randint
import pygame

# 初始化 Pygame
pygame.init()

# 1.设置窗口大小
screen = pygame.display.set_mode((800, 600))
pygame.display.set_caption('鼠标事件的用法')
# 游戏主循环
while True:
    # 处理事件
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            # 关闭游戏
            pygame.quit()
            sys.exit()

        elif event.type == pygame.MOUSEBUTTONDOWN:
            print('1.鼠标按下的坐标和类型:', event.pos, event.button)
            # 获取鼠标当前位置
            x1, y1 = event.pos
            # 在鼠标按下的位置画圆
            pygame.draw.circle(screen, (255, 255, 0), (x1, y1), 50)
            # 处理完一定更新,不然无法显示
            pygame.display.update()

        elif event.type == pygame.MOUSEBUTTONUP:
            print('2.鼠标弹起')
        elif event.type == pygame.MOUSEMOTION:
            print('3.鼠标移动的坐标和相对移动距离:', event.pos, event.rel)
            x2, y2 = event.pos
            # 随机生成 RGB 颜色值
            r = randint(0, 255)
            g = randint(0, 255)
            b = randint(0, 255)
            pygame.draw.circle(screen, (r, g, b,), (x2, y2), 50)
            # 更新显示
            pygame.display.update()

完毕!!感谢您的收看

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

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

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

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

相关文章

「璞华精选」品牌展区成为亮点,引领海外优质生活新潮流!

展会概况 3月07-09日,CCF 2023上海春季百货展在上海新国际博览中心圆满收官。以“聚焦品牌引流行业”为定位目标的CCF上海国际日用百货(春季)博览会,立足上海,辐射全球商贸,链接行业市场全局,赋…

mysql数据库中查询重复数据和去重数据

文章目录 1.查找重复数据2. 查到重复组的唯一数据3.删除重复数据4.注意重复的内容和删除的记录数是否一致 1.查找重复数据 select gene_entrez_id,count(*) a from diag_gene GROUP BY gene_entrez_id HAVING a > 12. 查到重复组的唯一数据 原理 分组后如果组内多个数据…

地下管网的“守门员”:智能井盖监控器

井盖,作为城市道路上的关键组成部分,其重要性不言而喻。一旦井盖未能得到妥善安装或及时维护,可能会引发一系列安全问题。井盖可能会开盖、松动或移位,这些状况不仅构成了交通隐患,还可能导致地下管网的损坏&#xff0…

SpringBoot(静态资源访问+Rest风格请求)

文章目录 1.静态资源访问1.基本介绍2.快速入门1.新建一个maven项目2.引入依赖 pom.xml3.创建文件目录4.Application.java5.创建四个可以存放静态资源的文件夹6.通过浏览器访问(这四个都可以访问) 3.注意事项和细节1.关于静态资源的访问管理2.修改静态资源…

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的癌症图像检测系统(深度学习模型+UI界面代码+训练数据集)

摘要:本篇博客深入介绍了如何借助深度学习技术开发癌症图像检测系统,以提高医疗诊断的精度和速度。系统基于先进的YOLOv8算法,并对比分析了YOLOv7、YOLOv6、YOLOv5的性能,如mAP和F1 Score。详细解释了YOLOv8的原理,并附…

Restormer: Efficient Transformer for High-Resolution Image Restoration

Abstract 由于卷积神经网络(CNN)在从大规模数据中学习可概括的图像先验方面表现良好,因此这些模型已广泛应用于图像恢复和相关任务。最近,另一类神经架构 Transformer 在自然语言和高级视觉任务上表现出了显着的性能提升。虽然 T…

纯血鸿蒙来画龙!基于HarmonyOS ArkTS来操作SVG图片

大家好,龙年报喜,大地回春,作为程序员,以代码之名,表达对于龙年的祝福。本节将演示如何在基于HarmonyOS ArkTS的Image组件来实现画一条中国龙,祝大家“码”上“鸿”福到! 创建应用 选择空模板…

多线程 - 技术面手撕代码(java)

编写一个程序,开启 3 个线程,这三个线程的 ID 分别为 A、B、C,每个线程将自己的ID 在屏幕上打印10 遍,要求输出的结果必须按顺序显示,如: ABCABCABC… public class Main {private static final Object lock new Obj…

【Python程序开发系列】介绍一款轻量级高自由度web框架-NiceGUI

这是我的第237篇原创文章。 一、引言 NiceGui 是一个轻量级的 Python 前端框架,旨在简化用户界面的创建。它侧重于提供简单、直观的界面,特别适用于小型项目和快速原型设计。 然而,NiceGui 并不是一个专为构建复杂项目而设计的框架。对于大型…

SAP ERP销售应收成本科目确定

一、概述 ERP作为业财一体软件,其中最核心的就是业务与财务模块的自动集成,无需财务进行手工做账,提高工作效率的同时降低人工操作产生的误差。今天浅浅的分享一下SD模块生成会计凭证时,借贷项确定的系统配置。一般项目上借贷项、科目都有FICO提供,但是具体的集成配置是在…

App 测试必备 - 建议所有测试人收藏!

移动端App性能测试需要关注多个方面,包括响应时间、稳定性、内存使用、CPU使用率、网络性能、电池消耗以及设备兼容性等。通过综合考虑这些方面,并在不同条件下进行全面的测试,可以确保应用程序在各种情况下都能够提供优质的用户体验&#xf…

软件测试中的AI-为什么它在软件自动化测试中很重要?

通俗地说,人工智能(AI)是计算机科学的一个领域,它专注于使机器“智能化”。所谓智能,就是使系统能够像人类一样学习和做出决策。因此,人工智能机器将能够学习如何在特定情况下做出反应,然后根据…

在 Android 上恢复已删除文件的 5 种简单方法

您可能会因为意外删除、未完成的 Android 更新、手机意外关机等原因而丢失 Android 上的重要数据。新技术的发展使许多手机功能或程序能够从内部恢复丢失的数据。 在 Android 上恢复已删除文件的 5 种简单方法 然而恢复成功率的不确定性也成为人们克服数据丢失困境的重要考虑因…

阿里云国际放行DDoS高防回源IP

如果源站服务器上设置了IP白名单访问控制(如安全软件、安全组),由于设置了DDoS高防后,回源IP是高防回源IP段,您需要将DDoS高防的回源IP段的地址加入安全软件和安全组的白名单中,避免DDoS高防的回源流量被误…

springboot268码头船只货柜管理系统

码头船只出行和货柜管理系统的设计与实现 摘要 针对于码头船只货柜信息管理方面的不规范,容错率低,管理人员处理数据费工费时,采用新开发的码头船只货柜管理系统可以从根源上规范整个数据处理流程。 码头船只货柜管理系统能够实现货柜管理…

学生时期学习资源同步-1 第一学期结业考试题6

原创作者:田超凡(程序员田宝宝) 版权所有,引用请注明原作者,严禁复制转载

【深度学习实践】HaGRID,YOLOv5,手势识别项目,目标检测实践项目

文章目录 数据集介绍下载数据集将数据集转换为yolo绘制几张图片看看数据样子思考类别是否转换下载yolov5修改数据集样式以符合yolov5创建 dataset.yaml训练参数开始训练训练分析推理模型转换onnx重训一个yolov5s后记 数据集介绍 https://github.com/hukenovs/hagrid HaGRID&a…

推荐3款新发现的宝藏软件,全是黑科技,用起来超爽

Seer 对于熟悉macOS的用户来说,Quick Look功能无疑是一大便利,只需在Finder中轻按空格键,即可轻松预览大多数常见文件。 Seer 在Windows系统中,原生并没有提供类似的功能。幸运的是,有一些优秀的第三方软件能够填补这…

(学习日记)2024.03.11:UCOSIII第十三节:使用优先级的流程 (持续更新)

写在前面: 由于时间的不足与学习的碎片化,写博客变得有些奢侈。 但是对于记录学习(忘了以后能快速复习)的渴望一天天变得强烈。 既然如此 不如以天为单位,以时间为顺序,仅仅将博客当做一个知识学习的目录&a…

基本数据类型介绍

整数类型:byte、short、int、long Java各整数类型有固定的表数范围和字段长度,不受具体操作系统的影响,以保证Java程序的可移植性。 定义long类型的变量,赋值时需要以"l"或"L"作为后缀。 Java程序中变量通常…
最新文章