【pygame入门】-- 事件

来源:互联网 发布:安卓软件挂 编辑:程序博客网 时间:2024/06/07 21:11

事件

事件简单理解起来就是我们的操作,比如鼠标点击一下产生事件,然后计算机处理事件


事件类型

  • 将所有产生的事件类型放在队列中,使用 pygame.event.get() 获取此队列
for event in pygame.event.get():        if event.type == QUIT:            #接收到退出事件后退出程序            exit()
  • 事件类型event.type,不用记,随时查
事件 产生途径 参数 QUIT 用户按下关闭按钮 none ATIVEEVENT Pygame被激活或者隐藏 gain, state KEYDOWN 键盘被按下 unicode, key, mod KEYUP 键盘被放开 key, mod MOUSEMOTION 鼠标移动 pos, rel, buttons MOUSEBUTTONDOWN 鼠标按下 pos, button MOUSEBUTTONUP 鼠标放开 pos, button JOYAXISMOTION 游戏手柄(Joystick or pad)移动 joy, axis, value JOYBALLMOTION 游戏球(Joy ball)?移动 joy, axis, value JOYHATMOTION 游戏手柄(Joystick)?移动 joy, axis, value JOYBUTTONDOWN 游戏手柄按下 joy, button JOYBUTTONUP 游戏手柄放开 joy, button VIDEORESIZE Pygame窗口缩放 size, w, h VIDEOEXPOSE Pygame窗口部分公开(expose) none USEREVENT 触发了一个用户事件 code

命令行显示事件

"""__author__ = 'pinsily'__mtime__ = '2017/4/30'# coding your code is here!"""import pygamefrom pygame.locals import *from sys import exitpygame.init()screen = pygame.display.set_mode((640, 480), 0, 32)# store event listevent_text = []while True:    event = pygame.event.wait()    event_text.append(str(event))    if event.type == QUIT:        exit()    # print event in console    for text in reversed(event_text):        print(text)    pygame.display.update()

鼠标事件

  • MOUSEMOTION事件含有三个参数
    • buttons : 一个含有三个数字的元组,三个值分别代表左键、中键和右键,1就是按下了
    • pos : 就是位置了
    • rel : 代表了现在距离上次产生鼠标事件时的距离

键盘时间

  • 参数描述如下:
    • key – 按下或者放开的键值,使用K_xxx来表示,比如字母a就是K_a,还有K_SPACE和K_RETURN等
    • mod – 包含了组合键信息,如果mod & KMOD_CTRL是真的话,表示用户同时按下了Ctrl键。类似的还有KMOD_SHIFT,KMOD_ALT
    • unicode – 代表了按下键的Unicode值,基本不用
# -*- coding:utf-8 -*-"""__author__ = 'pinsily'__mtime__ = '2017/4/30'# coding your code is here!"""bg_image = 'photo-4.jpg'import pygamefrom pygame.locals import *from sys import exitpygame.init()screen = pygame.display.set_mode((640, 480), 0, 32)background = pygame.image.load(bg_image).convert()x, y = 0, 0move_x, move_y = 0, 0while True:    for event in pygame.event.get():        if event.type == QUIT:            exit()        if event.type == KEYDOWN:            # 键盘有按下?            if event.key == K_LEFT:                # 按下的是左方向键的话,把x坐标减一                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.event.set_blocked(事件名)# 或者加上集合pygame.event.set_blocked([KEYDOWN, KEYUP])
  • 允许
pygame.event.set_allowed()
0 0
原创粉丝点击