|
网上找了些pygame的资料,今天开始继续补充pygame模块。
前面的event的事件判断不能执行的原因找到了,先要对pygame进行初始化,一是执行pygame.init(),二是导入pygame的常量from pygame.locals import *
看-will的博客,看到事件的一种写法,挺有意思,今天就小结这个。
需求:游戏中需要用上下左右方向键来控制角色hero的移动,
——由于python没有switch case语法,-will用python的字典,然后用in判断
——用到的事件类型(event.type)有键盘按下和抬起(pygame.KEYDOWN \ pyagme.KEYUP),按键event.key判断(pygame.K_LEFT、pygame.K_RIGHT、pygame.K_UP、pygame.K_DOWN)
代码如下:
offset={ pygame.K_LEFT:0, pygame.K_RIGHT,pygame.K_UP, pygame.K_DOWN:0 }
...
while True:
...
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key in offset:
offset[ event.key ] = 3
elif event.type == pygame.KEYUP:
if event.key in offset:
offset[ event.key ] = 0
offset_x = offset[ pygame.K_RIGHT] - offset [ pygame.k_LEFT]
offset_y = offset[ pygame.K_DOWN] - offset [ pygame.K_UP]
hero_pos = [ hero_pos[0]+offset_x, hero_pos[1]+offset_y ]
——判断键盘是否按下,如果键盘被按下,再判断是否是“上下左右”键,是的话将offset字典中相应的key赋值为3,如左方向键按下的话,offset[ pygame.K_LEFT]=3,按键抬起时offset字典所有项的值归0;这样可以计算键盘按下时的一个循环中,角色x和y方向的移动量(上面最后三句,有正负)。 |