前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python之pygame学习键盘事件操作(9)

Python之pygame学习键盘事件操作(9)

作者头像
萌海无涯
发布2019-08-20 11:48:41
15.7K0
发布2019-08-20 11:48:41
举报
文章被收录于专栏:萌海无涯萌海无涯

pygame键盘事件操作

什么是事件呢?按下键盘某个按键,鼠标移动,包括点击关闭按钮都可以算是事件操作。

pygame中事件模块是pygame.event,官方说法是用于与事件和队列进行交互。

不用学习太多,主要学习下常用即可;

pygame.event.get

从队列中获取事件

之前我们就一直在用事件处理,那就是我们每次代码都带上的退出;

代码语言:javascript
复制
for event in pygame.event.get():
    if event.type == pygame.QUIT:
        pygame.quit()
        exit(0)

如果没有任何输入的情况下 event.get()返回的是个空列表

我们点击关闭pygame的窗口返回的事件是

[<Event(12-Quit {})>]

我们可以 遍历列表获取内部数据,

可以查看数据的类型是否是pygame的某种类型,比如退出

如果是这种类型的话,我们可以执行相对于的操作。

我们来说下键盘操作

代码语言:javascript
复制
elif event.type == pygame.KEYDOWN :
    if event.key == pygame.K_UP:
        y -= 1

在事件中判断类型是否是 pygame.KEYDOWN

判断键位是否是我们需要的那个键位

执行对应的操作

但是上面这中操作有个问题就是,我们每次按下这个键之后只能执行一次操作;

我们要移动对象的时候想要按下后连续移动,

我们就需要用到 pygame.key 这个是在pygame 2.0的新功能

该模块包含处理键盘的功能。

按下和释放键盘按钮时,事件队列获取pygame.KEYDOWN和pygame.KEYUP事件。两个事件都有一个键属性,它是表示键盘上每个键的整数ID。

该pygame.KEYDOWN事件具有其他属性unicode和 scancode。unicode表示单个字符串,即输入的完全翻译字符。这考虑了移位和组合键。scancode表示特定于平台的密钥代码。这可能与键盘不同,但对于像多媒体键这样的奇怪键的键选择很有用。

pygame.KEYDOWN。该属性text包含输入。

有许多键盘常量,它们用于表示键盘上的键。以下是所有键盘常量的列表:

代码语言:javascript
复制
KeyASCII      ASCII   Common Name
K_BACKSPACE   \b      backspace
K_TAB         \t      tab
K_CLEAR               clear
K_RETURN      \r      return
K_PAUSE               pause
K_ESCAPE      ^[      escape
K_SPACE               space
K_EXCLAIM     !       exclaim
K_QUOTEDBL    "       quotedbl
K_HASH        #       hash
K_DOLLAR      $       dollar
K_AMPERSAND   &       ampersand
K_QUOTE               quote
K_LEFTPAREN   (       left parenthesis
K_RIGHTPAREN  )       right parenthesis
K_ASTERISK    *       asterisk
K_PLUS        +       plus sign
K_COMMA       ,       comma
K_MINUS       -       minus sign
K_PERIOD      .       period
K_SLASH       /       forward slash
K_0           0       0
K_1           1       1
K_2           2       2
K_3           3       3
K_4           4       4
K_5           5       5
K_6           6       6
K_7           7       7
K_8           8       8
K_9           9       9
K_COLON       :       colon
K_SEMICOLON   ;       semicolon
K_LESS        <       less-than sign
K_EQUALS      =       equals sign
K_GREATER     >       greater-than sign
K_QUESTION    ?       question mark
K_AT          @       at
K_LEFTBRACKET [       left bracket
K_BACKSLASH   \       backslash
K_RIGHTBRACKET ]      right bracket
K_CARET       ^       caret
K_UNDERSCORE  _       underscore
K_BACKQUOTE   `       grave
K_a           a       a
K_b           b       b
K_c           c       c
K_d           d       d
K_e           e       e
K_f           f       f
K_g           g       g
K_h           h       h
K_i           i       i
K_j           j       j
K_k           k       k
K_l           l       l
K_m           m       m
K_n           n       n
K_o           o       o
K_p           p       p
K_q           q       q
K_r           r       r
K_s           s       s
K_t           t       t
K_u           u       u
K_v           v       v
K_w           w       w
K_x           x       x
K_y           y       y
K_z           z       z
K_DELETE              delete
K_KP0                 keypad 0
K_KP1                 keypad 1
K_KP2                 keypad 2
K_KP3                 keypad 3
K_KP4                 keypad 4
K_KP5                 keypad 5
K_KP6                 keypad 6
K_KP7                 keypad 7
K_KP8                 keypad 8
K_KP9                 keypad 9
K_KP_PERIOD   .       keypad period
K_KP_DIVIDE   /       keypad divide
K_KP_MULTIPLY *       keypad multiply
K_KP_MINUS    -       keypad minus
K_KP_PLUS     +       keypad plus
K_KP_ENTER    \r      keypad enter
K_KP_EQUALS   =       keypad equals
K_UP                  up arrow
K_DOWN                down arrow
K_RIGHT               right arrow
K_LEFT                left arrow
K_INSERT              insert
K_HOME                home
K_END                 end
K_PAGEUP              page up
K_PAGEDOWN            page down
K_F1                  F1
K_F2                  F2
K_F3                  F3
K_F4                  F4
K_F5                  F5
K_F6                  F6
K_F7                  F7
K_F8                  F8
K_F9                  F9
K_F10                 F10
K_F11                 F11
K_F12                 F12
K_F13                 F13
K_F14                 F14
K_F15                 F15
K_NUMLOCK             numlock
K_CAPSLOCK            capslock
K_SCROLLOCK           scrollock
K_RSHIFT              right shift
K_LSHIFT              left shift
K_RCTRL               right control
K_LCTRL               left control
K_RALT                right alt
K_LALT                left alt
K_RMETA               right meta
K_LMETA               left meta
K_LSUPER              left Windows key
K_RSUPER              right Windows key
K_MODE                mode shift
K_HELP                help
K_PRINT               print screen
K_SYSREQ              sysrq
K_BREAK               break
K_MENU                menu
K_POWER               power
K_EURO                Euro

键盘还有一个修饰符状态列表,可以通过按位对它们进行组合来组装。

代码语言:javascript
复制
KMOD_NONE, KMOD_LSHIFT, KMOD_RSHIFT, KMOD_SHIFT, KMOD_CAPS,
KMOD_LCTRL, KMOD_RCTRL, KMOD_CTRL, KMOD_LALT, KMOD_RALT,
KMOD_ALT, KMOD_LMETA, KMOD_RMETA, KMOD_META, KMOD_NUM, KMOD_MODE

获取所有键盘按钮的状态

pygame.key.get_pressed()——返回一系列布尔值,表示键盘上每个键的状态。使用键常量值来索引数组。True值表示按下该按钮。

我们可以判断这个按键是否为真,如果为真则表示按下这个按键

代码语言:javascript
复制
key_list = pygame.key.get_pressed()

if key_list[pygame.K_UP]:
    y -= 1
elif key_list[pygame.K_DOWN]:
    y += 1
elif key_list[pygame.K_LEFT]:
    x -= 1
elif key_list[pygame.K_RIGHT]:
    x += 1

这样的话,我们按下某个按键不松开的时候就可以一直移动某个对象了。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-08-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 萌海无涯 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档