这篇文章主要介绍了python基于pygame实现响应游戏中事件的方法,实例分析了Python基于pygame针对键盘及鼠标事件的响应方法,具有一定参考借鉴价值,需要的朋友可以参考下
本文实例讲述了python基于pygame实现响应游戏中事件的方法。分享给大家供大家参考,具体如下:
先看一下我做的demo效果:
当玩家按下键盘上的:上,下,左,右键的时候,后台会打印出玩家所按键的数字值,而图形会随之移动
这是客观上面存在的现象。
那么啥是事件呢?
你叫我做出定义,我不知道,我只能举个例子说明,例如接下来的代码中,列出来一些关于游戏中的事件
- '''
- 事件 产生途径 参数
- 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
- '''
如鼠标按下事件,鼠标放开事件,键盘按下事件.....
这些事件的发生都伴随着一个动作的发生,正是因为有动作的发生,所以我们才可以扑捉到这些动作,从而做出相应的反应
如,我们按下键盘的左键,图片就向左移动一段距离...
代码部分如下:
- #handle the key event
- import pygame
- from pygame.locals import *
- from sys import exit
- '''
- 事件 产生途径 参数
- 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__ = {'name' : 'Hongten',
- 'mail' : 'hongtenzone@foxmail.com',
- 'QQ' : '648719819',
- 'Version' : '1.0'}
- BG_IMAGE = 'C://py//ball.png'
- pygame.init()
- screen = pygame.display.set_mode((500, 500), 0, 32)
- bg = pygame.image.load(BG_IMAGE).convert()
- x, y = 0, 0
- move_x, move_y = 0, 0
- while 1:
- for event in pygame.event.get():
- #print(event.type)
- if event.type == QUIT:
- exit()
- if event.type == KEYDOWN:
- print(event.key)
- #event.key返回的是一个数字值,而K_LEFT,K_UP,K_RIGHT,K_DOWN等都是常量,
- #他们代表的也是一个数字值,这些数字值可以用:print(event.key)获取到
- #如:K_LEFT = 276
- # K_UP = 273
- #所以下面的代码可以替换为:
- #if event.key == 276:
- # move_x = -10
- if event.key == K_LEFT:
- move_x = -10
- elif event.key == K_UP:
- move_y = -10
- elif event.key == K_RIGHT:
- move_x = 10
- elif event.key == K_DOWN:
- move_y = 10
- elif event.type == KEYUP:
- move_x = 0
- move_y = 0
- x += move_x
- y += move_y
- #print(x, y)
- screen.fill((0, 0, 0))
- screen.blit(bg, (x, y))
- pygame.display.update()
完整实例代码代码点击此处本站下载。
希望本文所述对大家Python程序设计有所帮助。
新闻热点
疑难解答