赞
踩
在pygame的世界里,就是由一系列的事件来构成的,我们只需设定一定的操作来产生事件,再按照顺序依次执行即可,就像一旦关闭窗口就有QUIT用来终止程序,我们将学习简单的鼠标,键盘等操作来产生基本的事件
在正式理解事件之前我们先了解一下有哪些基本的事件
但是记住所有的事件比较困难,我们尝试一下使用代码使其自动输出,代码片段如下:
event = pygame.event.wait()
for event in pygame.event.get():
print(event)
利用for循环将pygame中的所有事件全打印出来
pygame.event.wait()
等到发生一个事件才继续下去
pygame.event.get()
可得到pygame的所有事件
pygame.event.poll()
返回一个真实的事件,或者是一个什么都没发生的事件
执行输出就为我们期望的事件使用列表及方法
MOUSEMOTION
三个参数(buttons, pos, rel)
参数 | 描述 |
---|---|
buttons | 一个含三个数字的元组,分别代表左中右键,为1则按下 |
pos | 位置 |
rel | 现在与上次发生鼠标事件的距离 |
MOUSEBOTTONDOWN
MOUSEBUTTONUP
该事件分别是按下和没有按下,参数有两个(button, pos)
参数 | 描述 |
---|---|
button | 代表按键被操作 |
pos | 位置 |
同时还有一些关于鼠标的函数
函数 | 作用 |
---|---|
pygame.mouse.get_pressed | 返回按键按下情况,返回一元组,分别为(左,中,右),按下则为true |
pygame.mouse.get_rel | 返回相对偏移量,(x,y)方向的一元组 |
pygame.mouse.get_pos | 返回当前鼠标的位置 |
pygame.mouse.set_pos | 设置鼠标位置 |
pygame.mouse.set_visible | 设置鼠标光标是否可见 |
pygame.mouse.get_focused | 如果鼠标在pygame窗口内有效,返回true |
pygame.mouse.set_cursor | 设置鼠标的默认光标样式 |
pygame.mouse.set_visible(False)
#设置鼠标不可见
pygame.event.set_grab(True)
# 设置鼠标位置不离开窗口
注意:
一旦设置鼠标不能离开窗口,就会造成无法关闭该页面,鼠标无法操作,所以一定要设置其它按键结束进程
或者ctrl+alt+delete打开设备管理器,关闭python进行即可
KEYDOWN 和KEYUP
为两种基本类型,其但其余的普通按键均可用K-XXX来表示。
而其可选的参数有:
参数 | 描述 |
---|---|
key | 按下或放开,为一个数字,例如字母s就是K-s |
mod | 组合键,例如mod & KMOD_CTRL 为真,则表示用户同时按下了ctrl键 |
unicode | 表示按下键的unicode值 |
下面介绍一些基本的按键
Key | Name |
---|---|
K_BACKSPACE | backspace |
K_PLUS | plus sign |
K_0 | 0 |
K_a | a |
K_KP0 | keypad 0 |
K_DELETE | delete |
K_F1 | F1 |
K_UP | up arrow |
K_DOWN | down arrow |
K_RIGHT | right arrow |
K_LEFT | left arrow |
代码如下:(可实现背景图的移动)
while True: for event in pygame.event.get(): if event.type == QUIT: exit() if event.type == KEYDOWN: #键盘有没有按下 if event.key == K_LEFT: move_x = -1 elif event.key == K_RIGHT: move_x = 1 elif event.key == K_UP: move_y = -1 elif event.key == K_DOWN: move_y = 1 elif event.type == KEYUP: move_x = 0 move_y = 0 #计算新的坐标 x += move_x y += move_y screen.fill((0,0,0)) screen.blit(background,(x,y)) #在新的位置上画图 pygame.display.update()
在介绍了一些基本的按键之后,我们也需要了解一些按键的基本函数
函数 | 描述 |
---|---|
pygame.key.get_pressed() | 获得所有按下的键值,返回一个元组 |
key.get_focused | 当前激活的pygame窗口 |
key.get_mods | 按下的组合键(Alt + Ctrl + Shift + ’ ’ ) |
key.set_mods | 自己模拟按下组合键的效果(KMOD_ALT + KMOD_CTRL + KMOD_SHIFT ) |
key.set_repeat | 设定允许pygame接受重复按键 |
key.name | 接受按键返回键名 |
即过滤掉我们不感兴趣的事件,常见的为:
pygame.event.set_blocked(事件名)
pygame.event.set_blocked([KEYDOWN, KEYUP])
可传递一个列表,即有很多事件需要处理(若设置参数为none,则所有事件均会打开)
pygame.event.set_allowed()
用来设定允许的事件
即先创造事件再进行传递
下面代码为例:
my_event=pygame.event.Event(KEYDOWN, key=K_SPACE, mod=0,unicode=u' ')
#设置事件传入的基本参数
my_event=pygame.event.Event(KEYDOWN, {"key":K_SPACE,"mod":0,"unicode":u' '})
pygame.event.post(my_event)
#以列表的形式传入
在学完基本事件模块之后我们最需要知道的是我们还有什么途径可以增加我们游戏界面的色彩已经画面
第二篇pygame学习就到此结束啦!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。