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
投稿
猜你喜欢
- 组件<template><div> <input id="upload_file&quo
- 最近因为编程,需要大量地看一些说明文档,无奈说明文档都是英文的,可把我这个半桶水折腾死了,太多词汇不知道,一个个复制翻译太麻烦了。于是我根据
- 引言语音端点检测最早应用于电话传输和检测系统当中,用于通信信道的时间分配,提高传输线路的利用效率.端点检测属于语音处理系统的前端操作,在语音
- 今天来分享一个“高大上”的技术——使用python编写一个可以用微信远程控制电脑的程序!先来分析一下控制的具体流程:我们使用微信给特定的邮箱
- 1. 图像缩放1.2. 使用命令import cv2# 缩放def resize(img, k, inter):
- 动手写个小组件(组件入门) 这篇文章主要是为想将自己的ASP水平提高的人写的! 把ASP代码变成组件,开发者不仅是加快了ASP的速度,而且也
- 一、设计范式问题: 什么是范式化设计,为什么需要反规范化设计 ?范式来自来自英文Normal From 。开发过程中要设计一个好的数据库逻辑
- 1.GAN简述在GAN中,有两个模型,一个是生成模型,用于生成样本,一个是判别模型,用于判断样本是真还是假。但由于在GAN中,使用的JS散度
- 序章yield item这行代码会产出一个值,提供给next()的调用方;此外还会做出让步,暂停执行生成器,让调用方继续工作,知道需要使用另
- 前言异步函数也是有执行顺序的。本质上来说,JavaScript是单线程语言,不管是在浏览器中还是nodejs环境下。浏览器在执行js代码和渲
- 1 索引索引概念索引是一种特殊的文件,包含着对数据表里所有记录的引用指针。可以对表中的一列或多列创建索引,并指定索引的类型,各类索引有各自的
- 本文实例讲述了Python数据分析之双色球统计单个红和蓝球哪个比例高的方法。分享给大家供大家参考,具体如下:统计单个红球和蓝球,哪个组合最多
- 0. 简介上篇博客介绍了goroutine的创建、执行和退出的过程,并且提及了在协程切换时涉及的调度循环,本篇博客我们就来探究一下其他情形引
- Python 通过pip安装Django详细介绍经过前面的 Python 包管理工具的学习,接下来我们就要基于前面的知识,来配置 Djang
- 本文实例讲述了JS实现选择TextArea内文本的方法。分享给大家供大家参考。具体实现方法如下:<script type="
- 有时候需要对有角度的矩形框内图像从原图片中分割出来。这里的程序思想是,先将图片进行矩形角度的旋转,使有角度的矩形处于水平状态后,根据原来坐标
- 1.下载pyinstaller并解压(可以去官网下载最新版):https://github.com/pyinstaller/pyinstal
- 网站用户为什么注册?这个问题在平时我们讨论的并不多。我们常常单纯的在设想如何简化注册流程,如何从细节的关怀入手避免用户注册时填写错误信息造成
- 本文实例讲述了Vue 实现从小到大的横向滑动效果。分享给大家供大家参考,具体如下:最近项目中遇到一个需求,需要实现横向滑动,并且在滑动过程中
- 当我写下如下sql语句时,我得到了输入@c参数时想得到的结果集。select * from @tb t where t.id in (sel