Pygame 鼠标点击和检测

这篇具有很好参考价值的文章主要介绍了Pygame 鼠标点击和检测。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

5.Pygame 鼠标点击和检测

快速准确地从用户那里获取输入是任何游戏的重要组成部分。在本 Pygame 教程中,我们将解释和演示如何检测鼠标点击输入以及许多其他与鼠标相关的功能。

模板代码

这是我们将在本教程中使用的基本模板代码。所以我们每次演示新功能的使用时都不再显示这些基本的代码。

import pygame
from pygame.locals import *
import sys
 
pygame.init()
display = pygame.display.set_mode((300, 300))
FPS_CLOCK = pygame.time.Clock()
 
 
while True:
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            sys.exit()
    //...
    //...
    pygame.display.update()
    FPS_CLOCK.tick(30)

在上面的代码中,我们创建了 Pygame 窗口,设置了游戏和事件循环,并为 Quit 事件创建了一个事件检测并设置了一个时钟。

鼠标按下(输入)

这段代码直接进入游戏循环。get_pressed()函数返回三个值,一个对应鼠标上的每个按钮(滚轮在中间)。您可以将其存储到列表中,或使用以下格式将每个值存储在单独的变量中。

left, middle, right = pygame.mouse.get_pressed()
 
if left:
    print("Left Mouse Key is being pressed")

然后,您可以使用这些值来确定按下的是哪个键。

通过列表索引获取各个键值

mouse_presses = pygame.mouse.get_pressed()
 
if mouse_presses[0]:
    print("Left Mouse Key is being pressed")

以上两段代码,只要按住鼠标,就会一直打印。

下面的代码是演示当鼠标按键按下,再对按按键进行处理。这确保它只打印一次消息,无论您按住它多长时间。

if event.type == pygame.MOUSEBUTTONDOWN:
    mouse_presses = pygame.mouse.get_pressed()
    if mouse_presses[0]:
        print("Left Mouse key was clicked")

这是使用的两种技术,一种用于鼠标单击,一种用于鼠标按下。使用那种方法,取决于你的需求。

鼠标位置

Pygame 中一些与鼠标位置相关的函数。

get_pos()函数返回鼠标光标在屏幕上的坐标。请记住,左上角是 (0 , 0)。

print(pygame.mouse.get_pos())

get_rel() 该函数返回 自上次调用此函数以来的 移动 量 。换句话说,它给出了相对运动。xy

print(pygame.mouse.get_rel())

如果您的鼠标光标静止一段时间,它将返回 (0, 0)。如果将它向右移动 5 个像素,在两次get_rel()调用之间,它将返回 (5, 0)。尝试运行此代码并对其进行调整以查看其效果。

另请记住,帧速率将影响返回值。(较低的帧速率会导致get_rel()通话之间的持续时间增加)。这也是我在本教程的代码中实现帧率限制的原因。

其他鼠标功能

这里有一些其他方便的鼠标相关功能。

首先是set_visible()函数,用于更改鼠标的可见性。简而言之,您可以通过将 False 传递给它来使用它来隐藏鼠标。

flag = 1
 
while 1:
    for event in pygame.event.get():
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_a:
                if flag == 1:
                    pygame.mouse.set_visible(False)
                    flag = 0
                elif flag == 0:
                    pygame.mouse.set_visible(True)
                    flag = 1

上面的代码使用了一个切换系统,可以在您按下“A”键时打开和关闭可见性。尝试自己运行它。

下面的代码使用了 Pygame 2.0 中引入的一个非常方便的功能。对于那些在 2021 年之前安装 Pygame 的人,应该更新 pygame。

if event.type == pygame.KEYDOWN:
    if event.key == pygame.K_1:
        pygame.mouse.set_cursor(pygame.SYSTEM_CURSOR_ARROW)
    if event.key == pygame.K_2:
        pygame.mouse.set_cursor(pygame.SYSTEM_CURSOR_HAND)

上面的代码改变了出现在屏幕上的光标类型。

与其他精灵/矩形碰撞

这是一种非常方便的检测鼠标是否接触精灵的方法。再次尝试运行代码以获得最佳结果。

class Player:
    def __init__(self):
        self.rect = pygame.draw.rect(display, (255, 0, 0), (100, 100, 100, 100))
 
player = Player()
 
while 1:
    for event in pygame.event.get():

        if event.type == pygame.MOUSEBUTTONDOWN:           
            if player.rect.collidepoint(pygame.mouse.get_pos()):
                print("Mouse clicked on the Player")
  
        if event.type == pygame.MOUSEBUTTONUP:
            if player.rect.collidepoint(pygame.mouse.get_pos()):
                print("Mouse released on the Player")

collidepoint()函数,它采用一组坐标,并确定它们是否与rect碰撞文章来源地址https://www.toymoban.com/news/detail-451663.html

到了这里,关于Pygame 鼠标点击和检测的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • pygame 用 load_xbm() 更改鼠标外形

    pygame.cursors.load_xbm()方法传入两个参数:分别传入同一个xbm文件即可 步骤: 1.选择一个png文件,改变图片的大小,推荐24x24,32x32,40x40的鼠标外形(8的倍数) 2.转化为xbm文件格式,可以利用XBM转换器 — Convertio这个网站 3.用 pygame.cursors.load_xbm(\\\'img鼠标X40.xbm\\\',\\\'img鼠标X40.xbm\\\') 这

    2024年01月22日
    浏览(70)
  • Qt鼠标点击事件处理:显示鼠标点击位置(完整示例)

    Qt 入门实战教程(目录) 前驱文章: Qt Creator 创建 Qt 默认窗口程序(推荐) 事件是对各种应用程序需要知道的由应用程序内部或者外部产生的事情或者动作的通称。 例如点击鼠标,按下按键。 在Qt中使用一个对象来表示一个事件,它继承自QEvent类。 如鼠标事件(例如点击

    2024年02月10日
    浏览(56)
  • Android12 部分应用(客户大型游戏)使用鼠标点击无效,鼠标模拟触摸点击

            如标题,在某些较大的游戏应用中,会限制鼠标点击不生效,导致我们的鼠标在系统其他应用上都能使用,就是某个游戏应用无法点击。调试发现,触摸事件不受影响,那么我们可以在当前游戏应用中,点击的时候模拟一下触摸点击,查看是否生效。安卓有一个触摸

    2024年02月02日
    浏览(49)
  • powershell 获取鼠标位置 与 鼠标点击

    2024年02月11日
    浏览(53)
  • Python模拟鼠标点击与实时获取鼠标位置

    鼠标点击会用到pymouse库。 在cmd中运行,使用镜像下载 编译器在运行时可能会报错,会出现No module named win32api问题,这是由于Python是没有自带访问windows系统API的库的,需要下载。 在cmd中运行,使用镜像下载pywin32。 time.sleep(num),num值可以自己进行设置,单位为秒。 程序运行

    2024年02月11日
    浏览(55)
  • 如何模拟自动鼠标点击或记录鼠标和回放

    在日常办公和娱乐中,我们可能经常想让鼠标自动化的多一点,能自动点击或者循环做一些简单的重复性的程序事务。有没有办法来解决这个小问题呢? 你可以使用极速自动鼠标点击器。它是一款鼠标自动点击软件工具,可以极快速的模拟自动鼠标点击或记录鼠标动作,并将

    2024年02月11日
    浏览(44)
  • 10.pygame碰撞检测

    Pygame中的碰撞检测功能可以用于检测两个游戏对象是否相交或重叠。这种技术非常有用,因为它可以使游戏对象之间的交互更加真实和逼真。在本教程中,我们将介绍如何使用Pygame的碰撞检测功能。 首先,我们需要导入pygame和sys模块: 然后,我们需要初始化pygame: 接下来,

    2024年02月14日
    浏览(36)
  • selenium+python:点击元素、alert弹框、鼠标操作(左键点击、右键点击、双击、鼠标悬浮)、下拉选项框、窗口切换等操作的处

    driver=webdriver.Chrome() driver.maximize_window() driver.get(\\\"https://www.baidu.com/\\\") 在进行页面操作时,需要用鼠标进行左键点击、右键点击、双击、鼠标悬浮(比如鼠标移到某个位置就会出现一些元素)、鼠标拖动等操作,这时需要导入ActionChains模块 perform() 执行所有ActionChains 中存储的行为

    2024年02月05日
    浏览(68)
  • 鼠标连点器,怎么玩转鼠标自动点击?

    鼠标连点器是一款非常便捷的工具,可以帮助我们自动进行鼠标点击操作。这种工具尤其适用于一些需要反复点击同一个位置的软件或游戏,在这些情况下手动点击会非常费时费力,而鼠标连点器就能够为我们节省很多宝贵的时间。但是,对于没有使用过鼠标连点器的人来说

    2024年02月09日
    浏览(57)
  • 键盘怎么控制鼠标?键盘控制鼠标实现点击和移动

    鼠标在电脑操作过程中非常重要,可是有时遇到尴尬的问题,就是摸鱼的时候觉得一直点击鼠标声音太大,或者舍友都睡觉了,你突然之间需要浏览一些网页,一直点击鼠标会产生很大的噪声,这时候该怎么办呢?如果你是笔记本,配合鼠标版可以解决。如果你正好有一个静

    2024年02月06日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包