Bomb Catcher 游戏
哎呀,好久不见呀,我又来更新了,这次我们玩一个,“接炸弹”的游戏,我们可以通过这个游戏,学会pygame事件,学习实时循环,鼠标事件,学习轮询鼠标设备状态,<( ̄︶ ̄)↗[GO!]
认识Bomb Catcher 游戏
这个游戏非常的简单,使用鼠标在屏幕底端移动红色的“挡板”,以接住从屏幕顶端落下的黄色的“炸弹?”,玩起来是这个样子滴。
实时事件循环
Pygame中的事件处理是在一个实时的循环中完成的。使用一条while语句和一个while语句块来创造循环,只要while条件为真,while语句块中的代码就会重复地执行。
要响应一个Pygame事件,我们必须解析事件并处理每个事件。尽管有可能一次有很多的事件,通常只给出一个事件的简单示例。
鼠标事件
Pygame支持的鼠标事件包括:MOUSEMOTION、MOUSEBUTTONUP和MOUSEBUTTONDOWN。pygame文档对每个事件的属性较少提及,因此,需要花些时间来找到他们,当相应的事件发生的时候,我们可以读取事件中的这些属性。
对于MOUSEMOTION事件,属性是event.pos、event.rel和event.buttons。
for event in pygame.event.get():
if event.type == QUIT:
sys.exit()
elif event.type == MOUSEMOTION:
mouse_x,mouse_y = event.pos
move_x,move_y = event.rel
设备轮询
pygame中的事件系统并非我们可以用来检测用户输入的唯一的办法。我们可以轮询输入设备,看看用户是否与我们的程序交互。
轮询键盘
在Pygame中,使用pygame.key.get_pressed()来轮询键盘接口。该方法返回布尔值的一个列表,这是一个大的标志列表,每个键一个标志。使用相同的键常量值来索引所得到的布尔值数组。一次轮询的好处是,不必遍历事件系统就可以检测多个键的按下。我们可以使用如下代码来代替旧的事件处理程序代码,以检测Escape键:
keys = pygame.key.get_pressed()
if keys[K_ESCAPE]:
sys.exit()
轮询鼠标
我们也可以忽略事件系统并且直接轮询鼠标,如果这能更好地满足你的需求的话。实际上,我们只需要了解3个鼠标函数。第一个是pygame.mouse.get_pos(),它返回表示鼠标的当前位置的x和y值对:
pos_x,pos_y = pygame.mouse.get_pos()
同样,我们可以使用类似的方式来读取鼠标的相对移动:
pygame.mouse.get_rel():
rel_x,rel_y = pygame