当前位置:   article > 正文

python之pygame基本事件(二)_for event in pygame.event.get():

for event in pygame.event.get():

在pygame的世界里,就是由一系列的事件来构成的,我们只需设定一定的操作来产生事件,再按照顺序依次执行即可,就像一旦关闭窗口就有QUIT用来终止程序,我们将学习简单的鼠标,键盘等操作来产生基本的事件


一、常用事件

在正式理解事件之前我们先了解一下有哪些基本的事件
但是记住所有的事件比较困难,我们尝试一下使用代码使其自动输出,代码片段如下:

event = pygame.event.wait()
for event in pygame.event.get():
		print(event)
  • 1
  • 2
  • 3

利用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)
# 设置鼠标位置不离开窗口

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

注意:
一旦设置鼠标不能离开窗口,就会造成无法关闭该页面,鼠标无法操作,所以一定要设置其它按键结束进程
或者ctrl+alt+delete打开设备管理器,关闭python进行即可


三、键盘事件

KEYDOWN 和KEYUP
为两种基本类型,其但其余的普通按键均可用K-XXX来表示。
而其可选的参数有:

参数描述
key按下或放开,为一个数字,例如字母s就是K-s
mod组合键,例如mod & KMOD_CTRL 为真,则表示用户同时按下了ctrl键
unicode表示按下键的unicode值

下面介绍一些基本的按键

KeyName
K_BACKSPACEbackspace
K_PLUSplus sign
K_00
K_aa
K_KP0keypad 0
K_DELETEdelete
K_F1F1
K_UPup arrow
K_DOWNdown arrow
K_RIGHTright arrow
K_LEFTleft 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()

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

在介绍了一些基本的按键之后,我们也需要了解一些按键的基本函数

函数描述
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)
#以列表的形式传入
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

在学完基本事件模块之后我们最需要知道的是我们还有什么途径可以增加我们游戏界面的色彩已经画面


第二篇pygame学习就到此结束啦!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/396600
推荐阅读
相关标签
  

闽ICP备14008679号