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

news2024/11/15 2:11:58

------------★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.coloradmin.cn/o/1516165.html

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

相关文章

Redis到底是单线程还是多线程!,【工作感悟】

无论你是做 Python,PHP,JAVA,Go 还是 C#,Ruby 开发的,都离不开使用 Redis。 大部分程序员同学工作中都有用到 Redis,但是只限于会简单的使用,对Redis缺乏整体的认知。 无论是在大厂还是在中小…

Java面试题之线程

1. 进程和线程的区别 进程是资源分配的基本单位;线程是任务调度执行的基本单位;进程的创建和销毁消耗的资源都比线程要多;多个进程之间的内存资源是独立的;在一个进程中多个线程之间的内存资源是共享的; 一个进程中包…

Shell常用脚本:文件或目录一键同步到多台服务器

注意: 将本地文件,同步到【/opt/module/script/xsyncByFileIp.txt】里面的目标机器 xsyncByFile.sh #!/bin/bash# 入参参数个数 argsCount$#if(($argsCount0)); thenecho "同步失败:请输入待同步的文件或者目录" exit; fiecho &q…

分享几个Google Chrome谷歌浏览器历史版本下载网站

使用selenium模块的时候,从官网下载的谷歌浏览器版本太高,驱动不支持,所以需要使用历史的谷歌浏览器版本 ,这里备份一下以防找不到了。 驱动下载地址:https://registry.npmmirror.com/binary.html?pathchromedriver 文…

低代码与AI:构建面向未来的智能化应用

引言 在当今数字时代,技术的快速发展为各行各业带来了前所未有的机遇和挑战。企业和组织面临着如何迅速开发和交付高质量应用的需求,同时还需要应对日益复杂的业务需求和用户期望。在这样的背景下,低代码与人工智能(AI&#xff0…

打卡学习kubernetes——了解k8s基本概念

目录 1 Container 2 Pod 3 Node 4 Namespace 5 Service 6 Label 7 Annotations 8 Volume 1 Container Container(容器)是一种便携式、轻量级的操作系统级虚拟化技术。它使用namespace隔离不同的软件运行环境,并通过镜像自包含软件的运行环境,从而…

如何打造“标准化的仓库”?4个环节5大方面看这里...

仓库管理,在保障企业物流运作效率、降低运营成本、提高客户服务质量等方面发挥着不可替代的作用。标准化、规范化管理作为仓库管理中的重要手段,不仅能够提高管理效率,还能够有效地降低管理风险,使仓库运作更加安全、稳定、高效。…

数据结构:图及相关算法讲解

图 1.图的基本概念2. 图的存储结构2.1邻接矩阵2.2邻接表2.3两种实现的比较 3.图的遍历3.1 图的广度优先遍历3.2 图的深度优先遍历 4.最小生成树4.1 Kruskal算法4.2 Prim算法4.3 两个算法比较 5.最短路径5.1两个抽象存储5.2单源最短路径--Dijkstra算法5.3单源最短路径--Bellman-…

VScode(Python)使用ssh远程开发(Linux系统树莓派)时,配置falke8和yapf总结避坑!最详细,一步到位!

写在前面:在Windows系统下使用VScode时可以很舒服的使用flake8和yapf,但是在ssh远程开发树莓派时,我却用不了,总是出现问题。当时我就开始了漫长的探索求知之路。中间也请教过许多大佬,但是他们就讲“能用不就行了&…

51、WEB攻防——通用漏洞验证码识别复用调用找回密码重定向状态值

文章目录 回显状态判断用户名重定向验证码回显显示验证码简单机制验证码复用验证码智能识别验证码接口调用安全修复建议 回显状态判断 request前端判断不安全(前端接收验证的返回值来进行判断),使用burp的Response to this request可以抓取返回包~ 这种…

C#,数值计算,希尔伯特矩阵(Hilbert Matrix)的算法与源代码

Hilbert, David (1862-1943) 1 希尔伯特(Hilbert) 德国数学家,在《几何学基础》中提出了第一套严格的几何公理(1899年)。他还证明了自己的系统是自洽的。他发明了一条简单的空间填充曲线,即埃里克魏斯汀的数学世界,即希尔伯特曲线,埃里克魏斯汀的数学世界,并证明了不…

OpenCASCADE开发指南<七>:OCC 中的数学基本类型和数学算法

1 标准对象的集合容器 在处理现实问题时,经常将问题抽象成一个数学模型,接着对模型求解, 然后将解提取出来以解决现实问题。 其实在 CAD 软件中, 主要解决的就是数学模型。因此,本节将描述 OCC 的数学基本类型和数学算…

短剧小程序开发:探索剧情新纪元,随时随地畅享精彩短剧

随着移动互联网的快速发展,人们对碎片化时间的利用越来越高效。短剧小程序应运而生,为用户带来了一种全新的娱乐方式。我们致力于开发一款功能丰富、体验优越的短剧小程序,让您随时随地畅享精彩剧情。 短剧小程序将汇聚众多优质短剧资源&…

科技成果鉴定测试如何进行?第三方检测机构进行鉴定测试的好处

科技成果鉴定测试,作为科技领域中一项重要的质量检验手段,具有广泛的应用范围。旨在为科技成果的研发者和使用者提供客观、科学、权威的鉴定结果,从而评估科技成果的技术水平和市场竞争力。   科技成果鉴定测试是对科技成果进行系统、全面的…

【小工具】一键美化nvidia-smi,查看GPU运行状态,无须配置

pip install nvitop可以在远程console看,是动态的。 鼠标滚轮控制显示哪个进程。

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:Web)上篇

提供具有网页显示能力的Web组件,ohos.web.webview提供web控制能力。 说明: 该组件从API Version 8开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。示例效果请以真机运行为准,当前IDE预览器不支持。 需要权…

大型污水处理站运维公司怎么选择

大型污水处理站运维公司的选择是关乎环境保护和城市发展的重要决策。在如今污水治理领域日益重要的背景下,选择一家专业的运维公司对于确保污水处理站的高效运行、提高处理效果和保护环境具有关键意义。那么,我们应该如何选择适合自己的大型污水处理站运…

OpenCV读取tensorflow神经网络模型:SavedModel格式转为frozen graph的方法

本文介绍基于Python的tensorflow库,将tensorflow与keras训练好的SavedModel格式神经网络模型转换为frozen graph格式,从而可以用OpenCV库在C 等其他语言中将其打开的方法。 如果我们需要训练并使用一个神经网络模型,一般情况下都是首先借助Py…

如何保证缓存与数据库的双写一致性?(史上最全)

目录 一、面试官心理分析 1. Cache Aside Pattern 2. 最初级的缓存不一致问题及解决方案 3. 比较复杂的数据不一致问题分析 一、面试官心理分析 你只要用缓存,就可能会涉及到缓存与数据库双存储双写,你只要是双写,就一定会有数据一致性的问…

django-comment-migrate 模型注释的使用

django-comment-migrate 的使用 django-comment-migrate 是一个 Django 应用,用于将模型注释自动迁移到数据库表注释中。它可以帮助您保持数据库表注释与模型定义的一致性,并提高代码的可读性。 安装 要使用 django-comment-migrate,您需要…