栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python基于pygame实现响应游戏中事件的方法(附源码)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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程序设计有所帮助。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/34333.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号