前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >2018年8月3日pygame的安装和快速入门,飞机大战

2018年8月3日pygame的安装和快速入门,飞机大战

作者头像
武军超
发布2018-09-27 11:24:10
3K1
发布2018-09-27 11:24:10
举报
  1. 主要内容
  2. 游戏开发
    1. 面向对象的编程(设计开发)练习
    2. 项目的开发流程步骤
    3. 阶段项目开发:图形化游戏项目
      1. 飞机大战/坦克大战/贪吃蛇/打砖块/俄罗斯方块.
  3. 课堂笔记
  4. 准备工作

开发目标:飞机大战

需要资源:飞机大战需要的各种资源图片

游戏原理:~让图片产生动画,动画效果还原游戏场景!

操作细节:让图片在很短的时间进行切换,完成一个模拟动画的效果!

需要技术:pygame:python中提供的专门用于游戏开发的一个模块!

不是系统标准模块,第三方模块

安装第三方模块:命令行~

windows:管理员权限运行命令行-: pip install pygame

pip: python install package

pygame快速入门

pygame游戏模块

  1. 安装:pip install pygame
  2. 任意游戏
    1. 游戏开始时:加载pygame中各种资源:pygame.init()
    2. 游戏结束时:卸载pygame中各种资源:pygame.quit()
  3. 游戏界面
    1. 游戏窗口:pygame.display模块进行处理操作
      1. set_mode(area, flags, depth):窗口对象
        1. area:游戏区域,元组(宽度,高度)
        2. flags:整数参数,控制是否全屏等..
        3. depth:图片颜色深度[8bit/16bit/24bit/32bit]
      2. set_caption(title_name)
        1. title_name:游戏窗口标题
    2. 加载图片:pygame.image
      1. load(path):将指定路径的图片,添加到内存中
    3. 渲染图片
      1. 窗口对象.blit(img, (x, y)):添加一个图片到游戏窗口的某个位置
      2. 窗口对象.update():将添加到游戏窗口的对象,渲染到界面上展示
  4. 游戏资源位置对象:pygame.Rect(left, top, width, height)

2D游戏中,所有的游戏资源都有四个具体的数据表示它在屏幕中的展示

距离屏幕左边的距离:left 也称为x坐标

距离屏幕上边的距离:top 也称为y坐标

资源本身的宽度:width

资源本省的高度:height

pygame中提供了一个用于表示这四个数据的对象:位置对象:pygame.Rect

rect = pygame.Rect(x, y, width, height)

获取左边的距离:rect.left | rect.x

获取上边的距离:rect.top | rect.y

获取元素的尺寸:rect.size

获取中间的位置:rect.centerx | rect.centery

位置对象Rect可以直接在屏幕对象的blit(资源, 位置)中进行使用

screen.blit(hero, (196, 500))à screen.blit(hero, hero_rect)

  1. 游戏核心操作

游戏运行过程中-> 核心~图片在运动-> 大量的图片在运动

          • 抽象:图片在运动

游戏:图片、位置、速度

pygame将所有的任意的游戏操作开发中用到的对象:封装一个类型

精灵对象[图片、位置、速度][更新]

pygame.sprite.Sprite

QUSTION:如果游戏中出现了大量的图片~每个图片都是一个精灵对象~

精灵组对象[添加精灵]->更新->渲染->将组中的所有精灵,全部渲染到窗口中!

pygame.sprite.Group

更新(update->调用所有精灵对象update)、渲染draw(screen)

所有的2D游戏开发:都是图片的转换!

图片对象[图片路径、位置、运动速度][ 更新位置 ]

游戏精灵对象——表示2D游戏中,任意的一个游戏元素

为了方便我们操作大量的游戏元素[游戏精灵]:精灵组对象

精灵组对象管理游戏中出现的所有精灵对象!

  1. 游戏正式开始

游戏背景处理:

游戏背景的运动,需要两张一样的图片上下叠加,完成整体运动效果图。

游戏背景:也是游戏资源的一种,所以让 背景 继承游戏精灵类型

游戏背景类型中,初始化方法定义背景的图片信息,重写update()方法完成自定义运动

windows中pygame的安装 pip install pygame easy_install pygame python -m pip install pygame python -m easy_install pygame   ubuntu中pygame的安装 python的标准模块中不包含pip,需要单独安装 apt-get install python-pip  安装python2的pip apt-get install python3-pip 安装python3的pip   pip install pygame   安装给python2环境的模块 pip3 install pygame  安装给python3环境的模块

  1. 英雄飞机出场

我方英雄飞机,也是游戏资源的一种

但是运动方式需要通过键盘进行控制

英雄飞机~也定义成一种类型,继承游戏精灵类型,速度设置0,暂时不重写update()方法

  1. 事件操作

事件:发生的一个操作行为,如用户按下了鼠标左键!

操作:事件的响应,事件发生之后的处理方式[函数/方法]

pygame处理事件:pygame.event

获取所有的当前窗口中发生的事件:pygame.event.get() -> list

pygame对于键盘的交互方式,提供pygame.key

完成对用户键盘按下、抬起,按住等各种事件的直接处理

  1. 控制游戏刷新帧

常规情况下,当画面每秒刷新24+以上,肉眼看到连续的动画!

正常游戏处理过程中,要求画面刷新帧在50+以上!

个人PC屏幕刷新60~

pygame怎么控制游戏的刷新帧

默认情况,没有控制:循环游戏场景会短时间以最大的速度循环!极浪费系统性能

pygame提供了一个时钟操作:通过时钟操作~精确控制循环刷新帧

pygame.time

time.tick(每秒刷新帧) 让当前循环游戏场景每秒运行几次

主要定义在游戏场景循环中,用于控制游戏场景刷新!

  1.  英雄子弹操作

子弹:一个独立的对象,依赖于英雄飞机

所以将子弹精灵组对象,做成英雄飞机的一个属性

子弹:如果飞出边界~销毁

销毁一个对象[python中如果一个对象不再使用自动销毁(没有变量指向)]

pygame提供了精灵对象的操作方式

可以将对象自己从精灵组中移除同时销毁

可以调用对象的kill()函数!

在子弹的继承的update()函数中,重写边界判断,一旦超出边界~移除自己!

  1. 敌方飞机出场!

敌方飞机~类型,敌人精灵-> 创建多个敌人-> 精灵组-> 渲染展示窗口中!

多长时间出现一个敌机?定时

出现的位置?顶部随机

  1. 定时器:间隔一定的事件,自动触发操作[事件]
  2. 自定义事件:pygame不可能包含所有游戏中可能发生的行为,所以提供了一个自定操作的事件:pygame.USEREVNET,确保用户在操作过程中,不会和系统中自己的事件冲突!
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年08月11日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档