2D的跑酷游戏有很多,著名的例如Chrome的彩蛋小游戏,手机上的天天酷跑等。打开Chrome浏览器输入 chrome://dino/,按空格激活彩蛋

这篇文章来分析一下这类横版跑酷游戏的主角奔跑,跳跃,二段跳还有滑动的原理,说白了就是如何控制主角, 以及pygame中资源的加载。

游戏的资源

一般情况下,游戏加载音频和图片资源就够了。音频主要是背景音乐和游戏音效。比如跳跃的音效,吃金币的音效,撞墙的音效等。

游戏画布

pygame中游戏画布以左上角为原点(0, 0),往右为x轴正方向,往下为y轴正方向。不同的库,坐标系有可能不同,文中以下部分有关坐标的改变皆以pygame的坐标系做参考。

基础地面高度

定义一个基础的地面高度,base_height,主角的在此高度上运动。

主角坐标

定义主角的位置(x, y)时,这里指主角资源图片的左上角在画布上的位置,y值是base_height 加上主角的高度, x值可以自定义。主角运动时,x值并没有改变,是场景内的其他资源在往左移动,所以造成主角一直向前的错觉。

奔跑

奔跑状态时,主角的位置并没有改变,只是在不停的切换图片,就像视频是由一帧帧的图像组成的一样,快速的切换图片,就可以造成主角奔跑的样子。

滑动

主角的奔跑状态改为滑动状态,需要注意的是,只能从奔跑状态切换至滑动状态,不能由跳跃状态切换至滑动状态,滑动是只是把主角的图片切换成了滑动的图片。

跳越

主角的奔跑状态改为跳跃状态,跳跃时会改变主角的y值,由于是往上,所以y值是减少的。跳跃的状态分为上升和下降,上升时,主角的y值减少,减少的速度越来越慢,下降时,下降的速度越来越快,来模仿重力的作用。

做法就是 定义上升速度,下降速度、加速度和跳跃状态四个值。前三个速度值用来跳跃时y值减少,状态值记录是上升还是下降。

当上升时,上升速度减去加速度,然后主角的y值减去上升速度,这样y值在一直减少,但是每次减少的值越来越少,直到上升速度小于等于0, 主角开始下降。

下降时,下降速度的初始值为0,下降速度加上加速度,主角的y值加上下降速度,y值在一直增大, 直到主角的底部y值等于base_height, 切换为奔跑状态。

二段跳

当主角为跳跃状态时,再次跳跃才可触发二段跳。触发时把跳跃状态置为上升,再次定义上升速度。

代码已上传至coderShenhy/python-games​github.com

重新发布于2020.05.11,之前不知道是不是手滑把之前的文章给删除了。前段时间一直在赶项目,也就没时间去写文章,在此先给大家道个歉,之后会努力更新。

python游戏彩蛋_用python写游戏之2D跑酷游戏(一)相关推荐

  1. 用python写跑酷游戏脚本_用python写游戏之2D跑酷游戏(二)

    这篇文章介绍2D跑酷游戏中,添加地板资源, 给主角附加重力作用,以及添加游戏控制器和游戏场景的切换. 废话不多说,直接开始. 添加地板资源 定义地板类,继承自pygame.sprite.Sprite ...

  2. pygame做的著名游戏_用python写游戏之2D跑酷游戏(一)

    2D的跑酷游戏有很多,著名的例如Chrome的彩蛋小游戏,手机上的天天酷跑等. 打开Chrome浏览器输入 chrome://dino/,按空格激活彩蛋 这篇文章来分析一下这类横版跑酷游戏的主角奔跑, ...

  3. python zen_Python彩蛋--zen of python

    今天早上在公交上浏览博客的时候,发现了python里面的一个小彩蛋--zen of python 一首python之歌 我们来看一看... ​ 是不是很简单,在python shell 里 输入 im ...

  4. python彩蛋_盘点Python的5大彩蛋

    今天我才发现Python原来有5个彩蛋,今天就给大家盘点一下. 1:Hello world Hello world肯定是大家刚学习一门新的程序语言时输出的内容,Python输出Hello world大 ...

  5. vivo android 彩蛋,vivo新系统爆料消息汇总,或将暗藏小游戏彩蛋?

    现如今,许多用户在挑选手机时,不只是看重手机的性能表现,对于手机自带系统,也有一定追求.一款真正好的系统,不仅要使用更加流畅,内容也要足够丰富,这样才能最大限度提升用户的用机体验.近日,有不少消息爆料 ...

  6. 游戏之巅:游戏背后的创业风云

    <游戏之巅:游戏背后的创业风云> 基本信息 原书名:Gamers at work:stories behind the games people play 作者: (美)兰姆塞(Ramsa ...

  7. python是一门面向什么的语言用词语填空_使用pygame写一个古诗词填空通关游戏

    之前写的诗词填空的游戏支持python2,现在对程序进行了修改,兼容支持python2和python3,附下效果图. 下面是两个主程序 idiom_lib.py代码: # -*- coding=utf ...

  8. 我的世界python写游戏_用python写游戏之 Give it up

    <永不言弃 Give It Up>,这是一款极具虐心色彩的音乐题材闯关游戏. 这篇文章就来分析这款游戏原理,并用python写出来一个简易版.废话不多说,直接开始分析. 游戏元素,暂且把主 ...

  9. python彩蛋_隐藏在Python中的15个彩蛋

    在python环境下输入这些命令,就会出现有趣的画面. 比如import this 彩蛋指电影中不仔细寻觅,会被忽略的有趣细节:还有就是影片剧情结束后,在演职员表滚屏时或之后出现的电影片段(通常是一些 ...

最新文章

  1. 微生物组—宏基因组分析专题培训7月开课啦!北京
  2. Quartz.Net—MisFire
  3. MongoDB和MySQL的区别
  4. 【CentOS Linux 7】实验1【VMware安装、新建虚拟机;63个基础命令运行结果图】
  5. JAVA_if或者怎么用_Java条件语句if的使用方法介绍
  6. JAVA简历1到三年
  7. moodle安装过程中可能出现的问题
  8. 解决手机QQ发送文件给电脑端,电脑端无法接收的问题
  9. java programer认证_关于考SUNJAVAPROGRAMMER的几点建议
  10. 互联网上免费电子图书馆网址大全
  11. 使用Markdown编写微信公众号文章
  12. php 二维数组根据某个键值倒叙、升序排序
  13. word中公式编辑器的快捷键
  14. VS2005的R6034错误 (转载)
  15. springboot+vue球员数据统计分析系统java
  16. autojs 手游 脚本UI demo【仅供学习交流】
  17. php隐藏后门,php后门隐藏技巧
  18. 生成10位由大小写字母和数字组成的随机激活码
  19. Ubuntu 11.10与“核高基画饼“
  20. API Gateway(API网关)介绍

热门文章

  1. 舌尖上的家乡——广东云浮/罗定
  2. 最全面的微信小程序渲染图片的方式
  3. 在Linux下如何使用磁带机
  4. 局域网访问提示无法访问检查拼写_访问某一个共享提示windows无法访问,请检查名称的拼写,访问其他共享正常...
  5. 职场新人如何发公司内部邮件
  6. 使用Struts2 开发一个简易的《B2C电子商务网站》 。续集(适合新手)
  7. 笔记本电脑静音键(F1)一直亮且无法播放声音的解决办法
  8. 水龙卷 waterspout
  9. python爬虫实战(四):selenium爬虫抓取阿里巴巴采购批发商品
  10. 收藏别人的《设计模式》