鱼C论坛

 找回密码
 立即注册
查看: 3153|回复: 3

pygame中的get_pressed()方法

[复制链接]
发表于 2022-11-17 01:44:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 lzb1001 于 2022-11-17 01:45 编辑

在pygame教学中,在响应用户的键盘操作时小甲鱼介绍说有两种方法:

I. 通过检测事件消息:适用于检测偶尔触发的键盘事件!

II. 调用key模块的get_pressed()方法:适用于频繁触发的键盘事件!

而在飞机大战最后一节检测用户的鼠标操作时,一段代码如下:

            # 检测用户的鼠标操作
            # 如果用户按下鼠标左键
            if pygame.mouse.get_pressed()[0]: # get_pressed适用于频繁触发的键盘事件,鼠标是否适用?
                # 获取鼠标坐标
                pos = pygame.mouse.get_pos()
                # 如果用户点击“重新开始”
                if again_rect.left < pos[0] < again_rect.right and \
                   again_rect.top < pos[1] < again_rect.bottom: # 鼠标的横、纵坐标分别在“重新开始”矩形内
                    # 调用main函数,重新开始游戏
                    main() # 运行主模块
                # 如果用户点击“退出游戏”
                elif gameover_rect.left < pos[0] < gameover_rect.right and \
                     gameover_rect.top < pos[1] < gameover_rect.bottom: # 鼠标的横、纵坐标分别在“退出游戏”矩形内,注意:这里要使用elif!!!
                    # 退出游戏,见上面while running循环开头时if event.type == QUIT内的代码
                    pygame.quit()
                    sys.exit()

我的问题或疑惑:

上面的代码中也用到了get_pressed,但所不同的是,这里是检测用户的鼠标操作,而小甲鱼介绍的是键盘操作,所以我想问是否可以套用小甲鱼所说的鼠标的get_pressed适用于频繁触发的鼠标事件呢?但像上面这段代码实现的功能好像又不属于频发触发的事件,不像在飞机大战中玩家必须持续按住键盘上的W\S\A\D或上下左右键来实现我方飞机的实时移动。

不知道大神是否明白我说的意思?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-11-17 14:41:25 | 显示全部楼层
你说的可以检测键盘的应该是 pygame.key.get_pressed,这个函数与 pygame.mouse.get_pressed 函数是两个不同的函数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-17 21:35:23 | 显示全部楼层
tommyyu 发表于 2022-11-17 14:41
你说的可以检测键盘的应该是 pygame.key.get_pressed,这个函数与 pygame.mouse.get_pressed 函数是两个不 ...

你说的可以检测键盘的应该是 pygame.key.get_pressed---对

这个函数与 pygame.mouse.get_pressed 函数是两个不同的函数---我知道

我的意思是:pygame.mouse.get_pressed 是不是 和pygame.key.get_pressed一样,都是适用于频繁触发的事件呢(只不过前者是鼠标事件,后者是键盘事件)呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-17 21:40:54 | 显示全部楼层
lzb1001 发表于 2022-11-17 21:35
你说的可以检测键盘的应该是 pygame.key.get_pressed---对

这个函数与 pygame.mouse.get_pressed 函数 ...

这个可以用来检测鼠标在这个时刻下的状态

但是我不太理解你说的“频繁触发”是什么意思
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-25 15:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表