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("上")

这样也是可行的。

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

(0)

相关推荐

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

    方式1:在pygame中使用pygame.event.get()方法捕获键盘事件,使用这个方式捕获的键盘事件必须要是按下再弹起才算一次. 示例示例: for event in pygame.event.get(): # 捕获键盘事件 if event.type == pygame.QUIT: # 判断按键类型 print("按下了退出按键") 方式2:在pygame中可以使用pygame.key.get_pressed()来返回所有按键元组,通过判断键盘常量,可以在元组中判断出那个键被

  • pygame面向对象的飞行小鸟实现(Flappy bird)

    一些想法 自学python已经有快三个月了 最近这段时间没有怎么写过python 很多东西反而又遗忘了 准备翻以前的笔记复习一下在博客上记录下来 自己也没能够做出什么厉害的东西 小鸟游戏算是目前自己写的最好的一个代码了 基本游戏界面就是这样 分析需要的功能 我的构思是将游戏分成三个部分 初始游戏菜单界面 游戏进行界面 游戏结束界面 游戏里的角色和道具则使用类 小鸟类 管道类 因为是使用pygame模块 我对这个模块也很不熟悉 很多功能都是论坛参考其他大神的 比如 pygame.transform

  • 利用pygame完成动画精灵和碰撞检测

    动画精灵和碰撞检测 一.动画精灵 动画精灵:四处移动的单个图像或图像部分称为动画精灵(sprite),pygame有一个特殊的模块帮助跟踪屏幕上移动的大量图像.利用这个模块,可以更容易地移动图形对象. 具备特征: 图像(image):为动画精灵显示的图片. 矩形区(rect):包含动画精灵的矩形区域. ①.一堆沙滩球都反弹 Pygame 的 sprite 模块提供了一个动画精灵基类Sprite,基于pygame.sprite.Sprite 来创建自己的子类. 这里用了常规的python列表 im

  • python使用pygame创建精灵Sprite

    一 .精灵(Sprite),屏幕上的对象.精灵组是精灵的组合.创建空的精灵组对象: 精灵组可以对其中的所有精灵调用它们各自的更新方法(self.update)来进行更新,如位置更新.碰撞检测.冲突检测等: all_sprites.update() 精灵组可以对其中的所有精灵调用它们各自的DRAW方法(self.update)来绘制精灵: all_sprites.draw(screen) 二.创建精灵 1.创建精灵需要继承基类pg.sprite.Sprite.每个Pygame精灵都必须拥有两个属性

  • pygame实现键盘和鼠标事件的处理

    所谓事件,就是程序上发生的事.例如用户按下键盘上的某个键或者单击.移动鼠标,对于这些事件,游戏程序需要作出反应.如< pygame 图像/图形绘制>中例子,程序会一直运行下去,直到用户关闭窗口而产生一个 QUIT 事件,pygame 会接收用户的各种操作(例如按键盘上的键.移动鼠标等)产生事件.事件随时可能发生,而且量可能会很大,pygame 的做法是把一系列的事件存放到一个队列里逐个处理. 在上节例子中使用了 pygame.event.get() 来处理所有事件,如果使用 pygame.ev

  • 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 eve

  • 使用Python第三方库pygame写个贪吃蛇小游戏

    今天看到几个关于pygame模块的博客和视频,感觉非常有趣,这里照猫画虎写了一个贪吃蛇小游戏,目前还有待完善,但是基本游戏功能已经实现,下面是代码: # 导入模块 import pygame import random # 初始化 pygame.init() w = 720 #窗口宽度 h = 600 #窗口高度 ROW = 30 #行数 COL = 36 #列数 #将所有的坐标看作是一个个点,定义点类 class Point: row = 0 col = 0 def __init__(self

  • Pygame Event事件模块的详细示例

    目录 事件类型 事件处理方法 处理键盘事件 处理鼠标事件 事件(Event)是 Pygame 的重要模块之一,它是构建整个游戏程序的核心,比如鼠标点击.键盘敲击.游戏窗口移动.调整窗口大小.触发特定的情节.退出游戏等等,这些都可以看做是"事件",Pygame 会接受用户产生的各种操作(或事件),这些操作随时产生,并且操作量可大可小,那么 Pygame 是如何处理这些事件的呢? 事件类型 Pygame 定义了一个专门用来处理事件的结构,即事件队列,该结构遵循遵循队列"先到先处理

  • python中的pygame实现接球小游戏

    目录 一.介绍模块 1.Pygame和sys模块 2.random模块 二.相关功能 1.窗口尺寸改变 2.键盘控制挡板 3.鼠标控制 4.挡板接住小球并得分 5.小球未接住小球 6.小球移动 7.显示分数 三.完整代码 一.介绍模块 最小开发框架: 基于python 的Pygame最小开发框架 1.Pygame和sys模块 import pygame #制作游戏时要使用的模块 import sys #python的标准库,对内部各功能模块进行初始化创建,系统模块 2.random模块 需要在屏

  • ARP病毒入侵原理和解决方案

    解决ARP攻击的方法 [故障原因] 局域网内有人使用ARP欺骗的木马程序(比如:传奇盗号的软件,某些传奇外挂中也被恶意加载了此程序). [故障原理] 要了解故障原理,我们先来了解一下ARP协议. 在局域网中,通过ARP协议来完成IP地址转换为第二层物理地址(即MAC地址)的.ARP协议对网络安全具有重要的意义.通过伪造IP地址和MAC地址实现ARP欺骗,能够在网络中产生大量的ARP通信量使网络阻塞. ARP协议是"Address Resolution Protocol"(地址解析协议)

  • 网站源文件被注入了&lt;iframe&gt;代码—ARP欺骗的木马病毒攻击

    最近我的网站突然出现访问的迟钝,并且打开之后杀毒软件立即提示含有木马病毒. 我就很纳闷,运行了4年的网站一直都好好的最近怎么出现病毒提示呢.职业习惯原因打开了网站的源代码查看,原来在网页源代码的头部被加入了<iframe>嵌套框架网页,该网页执行木马程序-- 按照常理我心中一寒:估计是服务器被人攻陷了,所有文件代码被加了此行代码,于是FTP上去,下载文件下来查看却没有该代码. 于是询问服务器管理员含笑,他一听就说:"是中ARP欺骗的病毒攻击了". 那么什么是"AR

  • python实现飞船游戏的纵向移动

    本文实例为大家分享了python实现飞船游戏的纵向移动,供大家参考,具体内容如下 我是跟着书里一步步写到横向移动后 我就想怎么纵向移动,放上自己写的代码,如果有问题的话,请指出来,我也是刚刚学习python,希望可以跟大家多多交流. 新增的就是有关up和down的代码了. 我自己是成功了,肯定有其他的更优化的,那就等我在学习一段时间吧. 附上代码: game_function: import sys import pygame # 监视键盘和鼠标事件 def check_keydown_even

  • java弱口令检测机制解析

    目录 java弱口令检测机制 1. 设计要求 2. 二级系统配置要求 3. 三级系统配置要求 4. java编码 5. 配置文件 java弱口令检测机制 1. 设计要求 应具备检测口令的长度和是否在指定字符集合内的能力. 应具备检测口令字符逻辑相邻的能力,如aBc,abC等. 应具备检测口令字符键盘物理位置相邻的能力,包括横向和左右斜线方向的相邻,如qwer 1qaz 0okm等. 应具备检测口令是否出现在弱口令库中的能力. 应具备检测口令中是否包含用户名(不区分大小写). 应具备相邻单字符多次

随机推荐