详解pygame捕获键盘事件的两种方式

 更新时间:2021年04月07日 10:54:51   作者:CHQC388  
这篇文章主要介绍了详解pygame捕获键盘事件的两种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

方式1:在pygame中使用pygame.event.get()方法捕获键盘事件,使用这个方式捕获的键盘事件必须要是按下再弹起才算一次。
示例示例:

for event in pygame.event.get(): # 捕获键盘事件
  if event.type == pygame.QUIT: # 判断按键类型
    print("按下了退出按键")

方式2:在pygame中可以使用pygame.key.get_pressed()来返回所有按键元组,通过判断键盘常量,可以在元组中判断出那个键被按下,如果被按下则元组中就会存在这个按键信息。通过这样的方式也可以捕获到键盘的事件,并且不需要按下再弹起的操作,一按下就会有响应,灵活性比较高。

示例代码:

mykeyslist = pygame.key.get_pressed() # 获取按键元组信息
if mykeyslist[pygame.K_RIGHT]: # 如果按键按下,这个值为1
  print("按下了方向右键")
 

总结:
两种方式的比较:方式1的灵活性没有方式2的好,如果对灵活性要求高的游戏,一般建议使用方式2。

pygame按键持续按下响应

在写一个pygame 的一个小的飞机大战程序但是碰到一个小问题,仅此记录

通过键盘事件操控飞机的左右移动:

elif event.type == KEYDOWN:

    # 检测按键是否是a或者left
     if event.key == K_a or event.key == K_LEFT:
       plane_temp.move_left()

虽然能实现移动,但是每一次的移动都需要按一下按钮,使我感觉很难受

想实现可以持续按下,并且可以相应的效果

查资料发现

pygame.key.set_repeat() control how held keys are repeated
set_repeat() -> None set_repeat(delay, interval) -> None When the
keyboard repeat is enabled, keys that are held down will generate
multiple pygame.KEYDOWN events. The delay is the number of
milliseconds before the first repeated pygame.KEYDOWN will be sent.
After that another pygame.KEYDOWN will be sent every interval
milliseconds. If no arguments are passed the key repeat is disabled.

When pygame is initialized the key repeat is disabled.

按键是默认只能按下一次,于是就取了一个巧,查看哪些按键是已进按下的,后通过循环实现对应操作

key_pressed = pygame.key.get_pressed()
  if key_pressed[pygame.K_a] or key_pressed[pygame.K_LEFT]
    plane_temp.move_left()

pygame的对应帮助文档:
https://www.pygame.org/docs/ref/key.html#comment_pygame_key_set_repeat

到此这篇关于详解pygame捕获键盘事件的两种方式的文章就介绍到这了,更多相关pygame捕获键盘内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详解Python中的变量及其命名和打印

    详解Python中的变量及其命名和打印

    这篇文章主要介绍了Python中的变量及其命名和打印,是Python入门学习中的基础知识,需要的朋友可以参考下
    2016-03-03
  • 对python 各种删除文件失败的处理方式分享

    对python 各种删除文件失败的处理方式分享

    下面小编就为大家分享一篇对python 各种删除文件失败的处理方式。具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • 关于Python的json字符串与json模块解读

    关于Python的json字符串与json模块解读

    这篇文章主要介绍了关于Python的json字符串与json模块解读,JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等),这些特性使JSON成为理想的数据交换语言,需要的朋友可以参考下
    2023-07-07
  • Python解决“argument after * must be an iterable”报错问题

    Python解决“argument after * must be an iterable”报错问题

    这篇文章主要介绍了Python解决“argument after * must be an iterable”报错问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • python卸载numpy出现WinError:拒绝访问的解决方案

    python卸载numpy出现WinError:拒绝访问的解决方案

    这篇文章主要介绍了python卸载numpy出现WinError:拒绝访问的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • windows、linux下打包Python3程序详细方法

    windows、linux下打包Python3程序详细方法

    这篇文章主要介绍了windows、linux下打包Python3程序详细方法,需要的朋友可以参考下
    2020-03-03
  • 跟老齐学Python之变量和参数

    跟老齐学Python之变量和参数

    对于变量和参数,不管是已经敲代码多年的老鸟,还是刚刚接触编程的小白,都会有时候清楚,有时候又有点模糊。因为,在实际应用中,它们之间分分离离,比如,敲代码都知道,x=3中x是变量,它不是参数,但是在函数y=3x+4中,x是变量,也是参数。
    2014-10-10
  • python使用tkinter实现透明窗体

    python使用tkinter实现透明窗体

    一直在思索实现一个透明的窗体,然后可以基于这个窗体可以开发出各种好玩的应用(如桌面运动的小人、运动的小球、截图、录制GIF等等),今天无意间居然让我把其中一个最核心的技术难关突破了,我非常高兴,也借这个机会跟大家分享一下。
    2021-05-05
  • python爬虫获取新浪新闻教学

    python爬虫获取新浪新闻教学

    在本篇内容中小编给大家分享的是关于python爬虫获取新浪新闻的相关步骤和知识点,需要的可以跟着学习下。
    2018-12-12
  • 使用pip安装python库的多种方式

    使用pip安装python库的多种方式

    这篇文章主要介绍了使用pip安装python库的几种方式,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-07-07

最新评论