您当前的位置:首页 > IT编程 > python
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:pygame实现键盘的连续监控

51自学网 2021-10-30 22:46:30
  python
这篇教程pygame实现键盘的连续监控写得很实用,希望能帮到您。

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 = Falsemoving_l = Falsemoving_u = Falsemoving_d = Falsewhile 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("上")

这样也是可行的。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持51zixue.net。


python中asyncio异步编程学习
Pandas提取单元格的值操作
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。