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


Posted in Python onNovember 11, 2015

本文实例讲述了python基于pygame实现响应游戏中事件的方法。分享给大家供大家参考,具体如下:

先看一下我做的demo效果:

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

当玩家按下键盘上的:上,下,左,右键的时候,后台会打印出玩家所按键的数字值,而图形会随之移动

这是客观上面存在的现象。

那么啥是事件呢?

你叫我做出定义,我不知道,我只能举个例子说明,例如接下来的代码中,列出来一些关于游戏中的事件

'''
  事件             产生途径              参数
  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程序设计有所帮助。

Python 相关文章推荐
web.py中调用文件夹内模板的方法
Aug 26 Python
Python深入学习之上下文管理器
Aug 31 Python
Python中使用copy模块实现列表(list)拷贝
Apr 14 Python
Python实现自动为照片添加日期并分类的方法
Sep 30 Python
python高斯分布概率密度函数的使用详解
Jul 10 Python
TensorFlow学习之分布式的TensorFlow运行环境
Feb 05 Python
python GUI库图形界面开发之PyQt5美化窗体与控件(异形窗体)实例
Feb 25 Python
Python求凸包及多边形面积教程
Apr 12 Python
python读取xml文件方法解析
Aug 04 Python
Python Selenium XPath根据文本内容查找元素的方法
Dec 07 Python
python numpy中setdiff1d的用法说明
Apr 22 Python
Python字典和列表性能之间的比较
Jun 07 Python
Python基于pygame实现的弹力球效果(附源码)
Nov 11 #Python
Python中pygame安装方法图文详解
Nov 11 #Python
Python基于pygame实现图片代替鼠标移动效果
Nov 11 #Python
python开发之thread线程基础实例入门
Nov 11 #Python
python开发之thread实现布朗运动的方法
Nov 11 #Python
python开发之基于thread线程搜索本地文件的方法
Nov 11 #Python
python开发之tkinter实现图形随鼠标移动的方法
Nov 11 #Python
You might like
PHP配置心得包含MYSQL5乱码解决
2006/11/20 PHP
使用composer安装使用thinkphp6.0框架问题【视频教程】
2019/10/01 PHP
Laravel使用swoole实现websocket主动消息推送的方法介绍
2019/10/20 PHP
window.open被浏览器拦截后的自定义提示效果代码
2007/11/19 Javascript
jQuery Animation实现CSS3动画示例介绍
2013/08/14 Javascript
JS实现让访问者自助选择网页文字颜色的方法
2015/02/24 Javascript
JS控制TreeView的结点选择
2016/11/11 Javascript
jQuery中layer分页器的使用
2017/03/13 Javascript
深入浅析Node.js单线程模型
2017/07/10 Javascript
浅谈Postman解决token传参的问题
2018/03/31 Javascript
详解vue组件基础
2018/05/04 Javascript
使用koa-log4管理nodeJs日志笔记的使用方法
2018/11/30 NodeJs
微信小程序template模板与component组件的区别和使用详解
2019/05/22 Javascript
vue实现商品列表的添加删除实例讲解
2020/05/14 Javascript
[02:23]2016国际邀请赛中国区预选赛wings晋级之路
2016/06/29 DOTA
[03:02]安得倚天剑,跨海斩长鲸——中国军团出征DOTA2国际邀请赛
2018/08/14 DOTA
python使用xauth方式登录饭否网然后发消息
2014/04/11 Python
Python isinstance函数介绍
2015/04/14 Python
Saltstack快速入门简单汇总
2016/03/01 Python
Django的分页器实例(paginator)
2017/12/01 Python
Python实现多条件筛选目标数据功能【测试可用】
2018/06/13 Python
python实现飞机大战微信小游戏
2020/03/21 Python
在python里面运用多继承方法详解
2019/07/01 Python
django使用admin站点上传图片的实例
2019/07/28 Python
python 利用opencv实现图像网络传输
2020/11/12 Python
关于python scrapy中添加cookie踩坑记录
2020/11/17 Python
英国著名的药妆网站:Escentual
2016/07/29 全球购物
马来西亚网上美容店:Hermo.my
2017/11/25 全球购物
Revolution Beauty美国官网:英国知名化妆品网站
2018/07/23 全球购物
管道维修工岗位职责
2013/12/27 职场文书
幼师求职自荐信范文
2014/01/26 职场文书
党的群众路线教育实践活动个人承诺书
2014/05/22 职场文书
如何写早恋检讨书
2014/09/10 职场文书
2014国庆节国旗下演讲稿(精选版)
2014/09/26 职场文书
党员教师群众路线个人整改措施
2014/10/28 职场文书
2015年党员岗位承诺书
2015/04/27 职场文书