lzb1001 发表于 2022-11-17 01:44:32

pygame中的get_pressed()方法

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

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

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

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

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

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

我的问题或疑惑:

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

不知道大神是否明白我说的意思?

tommyyu 发表于 2022-11-17 14:41:25

你说的可以检测键盘的应该是 pygame.key.get_pressed,这个函数与 pygame.mouse.get_pressed 函数是两个不同的函数

lzb1001 发表于 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一样,都是适用于频繁触发的事件呢(只不过前者是鼠标事件,后者是键盘事件)呢?

tommyyu 发表于 2022-11-17 21:40:54

lzb1001 发表于 2022-11-17 21:35
你说的可以检测键盘的应该是 pygame.key.get_pressed---对

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

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

但是我不太理解你说的“频繁触发”是什么意思{:10_282:}
页: [1]
查看完整版本: pygame中的get_pressed()方法