网络编程
位置:首页>> 网络编程>> Python编程>> pygame实现键盘的连续监控

pygame实现键盘的连续监控

作者:money_wife  发布时间:2023-09-26 11:17:10 

标签: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 = 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("上")

这样也是可行的。

来源:https://blog.csdn.net/epic_wife/article/details/115446156

0
投稿

猜你喜欢

  • 最近经常需要出一些临时性的报表,于是就用python 的smtplib 和email 两模块写了个小程序,当数据处理完后通过邮箱把报表文件从
  • 前言故事要从上面这张表情包开始讲起,看到这张表情包之后,我突发奇想,觉得可以将室友上班摸鱼的照片拼接起来,做成表情包叫他起床 激励他学习!!
  • 相信大家都遇到过这种情况,下载文件的时候遇到压缩包又没有密码,或者说自己设置的加密密码,但是忘记了,就很难受~但是~在Python程序员面前
  • 简介Python 的序列(sequence)通常指一个可迭代的容器,容器中可以存放任意类型的元素。列表和元组这两种数据类型是最常被用到的序列
  • python运行或调用另一个py文件或参数1. 运行另一个py文件(1)在file_A.py中运行file_B.py文件import oso
  • 问:握怎样测试 MySQL安装?答:可以通过以下命令测试MySQL服务器是否工作:C:\> C:\Program Files\MySQ
  • 1. 创建微信公众号首先,你需要注册一个微信公众号。访问微信公众平台,使用你的微信账号登录,并按照提示创建一个新的公众号。2. 开通微信公众
  • 项目简介鉴于项目保密的需要,不便透露太多项目的信息,因此,简单介绍一下项目存在的难点:海量数据:项目是对CSV文件中的数据进行处理,而特点是
  • 做为一个编程爱好者,也作为一个小站长(asp之家),中国站长站(www.chinaz.com)我时不时的都会去灌一下。当然发现好的文章我也不
  • 自动扫雷一般分为两种,一种是读取内存数据,而另一种是通过分析图片获得数据,并通过模拟鼠标操作,这里我用的是第二种方式。一、准备工作1.扫雷游
  • 如下所示:# 选取等于某些值的行记录 用 == df.loc[df['column_name'] == some_value
  • 这篇文章主要介绍了Python如何使用字符打印照片,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可
  • 公布到网页上的Email经常会被一些工具自动提取,一些非法用户就会利用所提取的Email大肆发送垃圾邮件。这些工具大多都是查找链接中“mai
  • 1.1.1 摘要 Join是关系型数据库系统的重要操作之一,SQL Server中包含的常用Join:内联接、外联接和交叉联接等。如果我们想
  • go设置GOROOT和GOPATHgo 里面有两个非常重要的环境变量 GOROOT 和 GOPATH,其中 GOROOT 是安装 go 的路
  • 在程序中定义一个变量时,这个变量是有作用范围的,变量的作用范围被称为它的作用域。根据定义变量的位置,变量分为两种:局部变量:在函数中定义的变
  • 交互设计就是研究人与物体之间如何互动的问题,比如按电梯时,按钮立即高亮,同时屏幕上显示电梯现在所在楼层数,这个过程就是交互设计,而电梯按钮用
  •  在SQL查询中,关键词Like可提供模糊查询功能,它通常与通配符一起使用。1 Like条件适用数据库字段类型 &nbs
  • 本文实例讲述了Python常用字符串替换函数strip、replace及sub用法。分享给大家供大家参考,具体如下:今天在做一道今年秋季招聘
  • 本文实例讲述了python排序方法。分享给大家供大家参考。具体如下:>>> def my_key1(x):... &nbs
手机版 网络编程 asp之家 www.aspxhome.com