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 相关文章推荐
Python的垃圾回收机制深入分析
Jul 16 Python
分析Python中设计模式之Decorator装饰器模式的要点
Mar 02 Python
python批量添加zabbix Screens的两个脚本分享
Jan 16 Python
python3.4用函数操作mysql5.7数据库
Jun 23 Python
python实现自动登录
Sep 17 Python
详解关于Django中ORM数据库迁移的配置
Oct 08 Python
pyqt5 使用label控件实时显示时间的实例
Jun 14 Python
python下PyGame的下载与安装过程及遇到问题
Aug 04 Python
python实现word文档批量转成自定义格式的excel文档的思路及实例代码
Feb 21 Python
浅析Python 序列化与反序列化
Aug 05 Python
Python实现冒泡排序算法的完整实例
Nov 04 Python
python里反向传播算法详解
Nov 22 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的Yii框架入门使用教程
2016/02/15 PHP
PHP Yaf框架的简单安装使用教程(推荐)
2016/06/08 PHP
Yii列表定义与使用分页方法小结(3种方法)
2016/07/15 PHP
EASYUI TREEGRID异步加载数据实现方法
2012/08/22 Javascript
jQuery 滑动方法slideDown向下滑动元素
2014/01/16 Javascript
ANGULARJS中用NG-BIND指令实现单向绑定的例子
2014/12/08 Javascript
JavaScript获取function所有参数名的方法
2015/10/30 Javascript
JavaScript头像上传插件源码分享
2016/03/29 Javascript
jQuery基于函数重载实现自定义Alert函数样式的方法
2016/07/27 Javascript
深入理解jQuery layui分页控件的使用
2016/08/17 Javascript
html中鼠标滚轮事件onmousewheel的处理方法
2016/11/11 Javascript
微信小程序 弹框和模态框实现代码
2017/03/10 Javascript
微信小程序-横向滑动scroll-view隐藏滚动条
2017/04/20 Javascript
node实现简单的反向代理服务器
2017/07/26 Javascript
vue-router2.0 组件之间传参及获取动态参数的方法
2017/11/10 Javascript
JavaScript常用截取字符串的三种方式用法区别实例解析
2018/05/15 Javascript
JS实现倒计时图文效果
2018/11/17 Javascript
vue实现购物车抛物线小球动画效果的方法详解
2019/02/13 Javascript
Vue 的 v-model用法实例
2020/11/23 Vue.js
python with提前退出遇到的坑与解决方案
2018/01/05 Python
Python 实现选择排序的算法步骤
2018/04/22 Python
python中如何使用分步式进程计算详解
2019/03/22 Python
基于Python实现ComicReaper漫画自动爬取脚本过程解析
2019/11/11 Python
pytorch 求网络模型参数实例
2019/12/30 Python
Python实现异步IO的示例
2020/11/05 Python
详解Pytorch显存动态分配规律探索
2020/11/17 Python
CSS3动画之流彩文字效果+图片模糊效果+边框伸展效果实现代码合集
2017/08/18 HTML / CSS
开放系统互连参考模型
2016/06/29 面试题
森林病虫害防治方案
2014/06/02 职场文书
2014年巴西世界杯口号
2014/06/05 职场文书
2014年个人工作总结报告
2014/11/27 职场文书
2014年保育员个人工作总结
2014/12/02 职场文书
保险公司客户经理岗位职责
2015/04/09 职场文书
离婚撤诉申请书范本
2015/05/18 职场文书
2015年校本培训工作总结
2015/07/24 职场文书
「SHOW BY ROCK!!」“雫シークレットマインド”组合单曲MV公开
2022/03/21 日漫