pygame实现键盘的连续监控_python

来源:脚本之家  责任编辑:小易  

pygame对键盘的连续监听,供大家参考,具体内容如下

大家请看下面这一段代码:

for event in pygame.event.get():
  if event.type == pygame.QUIT:
   exit()
  elif event.type == pygame.KEYDOWN:
   if event.key == pygame.K_RIGHT:
    print("右")
   if event.key == pygame.K_UP:
    print("上")
   if event.key == pygame.K_DOWN:
    print("下")
   if event.key == pygame.K_LEFT:
    print("左")

大家首次监控键盘事件一般都会写出这样的代码我们着重来看一下对键盘上下左右键的监控。我们运行代码块我们会发现这几行代码和我们的想法是不一样的,我们在开发游戏的时候,我们大部分时候希望是可以连续控制,这样可以大大减少我们的手部疲劳,对玩家们也会非常的友好,但是我们现在的代码块,是敲一下键盘响应一次事件。所以我们要对代码进行改进,改进的方法有以下两种,大家可以根据自己的理解进行选择。

方法一:设置中间变量

moving_r = False
moving_l = False
moving_u = False
moving_d = False
while True:
 for event in pygame.event.get():
  if event.type == pygame.QUIT:
   exit()
  elif event.type == pygame.KEYDOWN:
   if event.key == pygame.K_RIGHT:
    moving_r = True
   if event.key == pygame.K_UP:
    moving_u = True
   if event.key == pygame.K_DOWN:
    moving_d = True
   if event.key == pygame.K_LEFT:
    moving_l = True
  elif event.type == pygame.KEYUP:
   if event.key == pygame.K_RIGHT:
    moving_r = False
   if event.key == pygame.K_UP:
    moving_u = False
   if event.key == pygame.K_DOWN:
    moving_d = False
   if event.key == pygame.K_LEFT:
    moving_l = False
 if moving_r:
  print("右")
 elif moving_u:
  print("上")
 elif moving_d:
  print("下")
 elif moving_l:
  print("左")

引入四个moving变量将四个变量的初值均设为Flase,用pygame的KEYDOWN和KEYUP方法来改变四个变量的值,以此来实现对键盘的连续监控,这种方法虽然很好理解,但是如果是小白对代码的重构不是很熟悉会显得非常缀余。

方法二:运用pygame中get_pressed()

# 键盘的连续监听
 Key_pressed = pygame.key.get_pressed()
 if Key_pressed[K_UP]:
  print("上")
 if Key_pressed[K_DOWN]:
  print("下")
 if Key_pressed[K_LEFT]:
  print("左")
 if Key_pressed[K_RIGHT]:
  print("右")

这样也是能连续监听键盘事件,但是这里需要注意一下if半段语句后面是中括号并非是小括号,第二个要注意的地方便是键盘名称,如果直接输入K_UP等是会报错的,有两种解决办法一种是导入pygame的方法:

from pygame import *

这样就不会报错了,另一种是在K_UP 前面加上pygame如:

if Key_pressed[pygame.K_UP]:
  print("上")

这样也是可行的。


  • 本文相关:
  • python词云库wordcloud使用方法详解(解决中文乱码)
  • python实现爬取逐浪小说的方法
  • python入门:argparse浅析 nargs=''+''作用
  • 使用python批量修改文件名的代码实例
  • numpy.linspace函数具体使用详解
  • 使用python-pptx包批量修改ppt格式的实现
  • pytorch 扩展tensor维度、压缩tensor维度的方法
  • python3标准库glob文件名模式匹配的问题
  • python实现连续变量最优分箱详解--cart算法
  • python提取页面内url列表的方法
  • python怎么实现键盘检测的持续输入
  • 请问Python 使用pyhook 实现监控键盘鼠标和键盘,...
  • python怎么监控键盘事件
  • python中的pygame库为什么在事件检测完后进行多次循环
  • python怎样实现键盘事件
  • python,pygame键盘输入方面代码,求思路
  • Python 键盘事件的监听为什么像这样总是出现未响应
  • 用python的pygame,但每次程序一运行,pygame wind...
  • Python怎么实现按住键盘的某个键,就运行这个代码
  • python中使用pygame怎么实现sprite的鼠标操控
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全vbsdos/bathtahtcpythonperl游戏相关vba远程脚本coldfusionruby专题autoitseraphzonepowershelllinux shellluagolangerlang其它首页python使用pynput库操作、监控你的鼠标和键盘python实现监控键盘鼠标操作示例【基于pyhook与pythoncom模块】python监控键盘输入实例代码python中使用pyhook实现键盘监控的例子python使用pyhook监控键盘并实现切换歌曲的功能python词云库wordcloud使用方法详解(解决中文乱码)python实现爬取逐浪小说的方法python入门:argparse浅析 nargs=""+""作用使用python批量修改文件名的代码实例numpy.linspace函数具体使用详解使用python-pptx包批量修改ppt格式的实现pytorch 扩展tensor维度、压缩tensor维度的方法python3标准库glob文件名模式匹配的问题python实现连续变量最优分箱详解--cart算法python提取页面内url列表的方法python入门教程 超详细1小时学会pycharm 2020最新永久激活码(附python 列表(list)操作方法详解python 元组(tuple)操作详解python 字典(dictionary)操作详解python strip()函数 介绍pycharm 使用心得(一)安装和首pycharm 2020年最新激活码(亲测python 中文乱码问题深入分析python中使用xlrd、xlwt操作exce详解python io编程用python写脚本,实现完全备份和增量备份的python实现通讯录功能python字符串split及rsplit方法原理详解实例讲解python函数式编程python加载带有注释的json文件实例python内存管理机制原理详解python中np是做什么的django自定义模板标签过程解析python unittest基本使用方法代码实例
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved