感觉游戏审核新政实施后,国内手游市场略冷清,是不是各家的新游戏都在排队等审核。媒体们除了之前竞相追捧《Pokemon Go》热闹了一把,似乎也听不到什么声音了。直到最近几天,突然听见好几人都提到同一个游戏,网上还有人表示朋友圈被它刷屏了。(不过现在微信已经悍然屏蔽了它的分享)

这个游戏就是现在iOS免费榜排名第一的《贪吃蛇大作战》。一个简单到不行的游戏,也不知道怎么就火了。反正一款游戏火了,各路媒体、专家总能说出种种套路来,所以我就不发表意见了。不过这实在是一个挺好实现的游戏,于是一时技痒,拿 Python 做了一个实现。

【动图】

demo 花了大约一整天时间,实现了基本效果(没做加速)。代码已上传 GitHub:

使用了 cocos2d-python 作为游戏引擎。如果要运行代码,需要安装 Python 2.7 和 cocos2d 库。

pip install cocos2d

代码实现上的几个难点:

运动方向的控制。键盘上只有上下左右四个键,要转换到 360 度的运动方向,需要用到不少三角函数运算。

蛇身子的处理。这里我用了一个路径列表,记录蛇头经过的位置,身子则根据路径中的对应数据更新位置。

电脑的运动策略。这里我用的方法是,对于在头部范围内的其他蛇身,计算蛇身与蛇头连线的角度,和自身的运动方向进行比较,如果角度相差很小,就意味着会撞上,于是调整当前运动方向。

运行效率。最大的效率瓶颈在于屏幕上的图片绘制。最开始完成的版本,场上蛇身总量达到 300 左右就卡顿严重了。后来用 cocos 的 BatchNode 替代直接添加,大大减少了图片绘制次数,可保证游戏顺畅运行。但如果玩到分钟很高,依然会出现效率问题,暂时没有解决。

平心而论,Python 并不适合做商业游戏,而用来学习或者开发原型倒也是个不错的选择。现在很流行的手机游戏开发引擎 cocos2d-x,最初就是源于 Python 的版本,也就我这次使用的 cocos2d 库。虽然在功能上有一定差距,但引擎结构是非常接近的,包括其中场景和层的概念、动作、事件、刷新等。

只是心血来潮,随手写写,代码没怎么优化,注释也基本没有。大家凑合看看。如果点赞、转发的人多,之后会考虑继续优化,并专门做一个系列教程。

python 贪吃蛇大作战_Python 实现 贪吃蛇大作战 代码分享相关推荐

  1. python画球轨迹图_python绘制铅球的运行轨迹代码分享

    我们按照面向过程程序设计的思想,使用python编写了程序,追踪铅球在运行过程中的位置信息.下面,修改程序代码,导入turtle模块,将铅球的运行轨迹绘制出来. python3代码如下: from m ...

  2. python简单代码画图-Python竟能画这么漂亮的花,帅呆了(代码分享)

    阅读本文大概需要3分钟 关于函数和模块讲了这么久,我一直想用一个好玩有趣的小例子来总结一下,同时也作为实战练习一下. 趣味编程其实是最好的学习途径,回想十几年前我刚毕业的时候,第一份工作就给手机上写a ...

  3. 用python画花瓣-Python竟能画这么漂亮的花,帅呆了(代码分享)

    阅读本文大概需要3分钟 关于函数和模块讲了这么久,我一直想用一个好玩有趣的小例子来总结一下,同时也作为实战练习一下. 趣味编程其实是最好的学习途径,回想十几年前我刚毕业的时候,第一份工作就给手机上写a ...

  4. python 贪吃蛇大作战_Python实现贪吃蛇大作战

    本文给大家分享的是一个使用cocos2d-python游戏引擎库制作出来的贪吃蛇大作战的游戏代码,基于Python 2.7 和 cocos2d 库,有需要的小伙伴可以参考下 感觉游戏审核新政实施后,国 ...

  5. python numpy 生成矩阵_Python numpy生成矩阵、串联矩阵代码分享

    import numpy 生成numpy矩阵的几个相关函数: numpy.array() numpy.zeros() numpy.ones() numpy.eye() 串联生成numpy矩阵的几个相关 ...

  6. python贪吃蛇小游戏_python开发贪吃蛇小游戏

    3.概要设计 3.1 程序功能模块 由设计应解决的问题可知,本次的设计是使用用方向键来实现一个简易的贪吃蛇小游戏的程序,具体的功能模块如图3-1所示. 图3-1 程序功能模块 Fig.3-1 prog ...

  7. python替换所有标点符号 正则_Python处理中文标点符号大集合

    中文文本中可能出现的标点符号来源比较复杂,通过匹配等手段对他们处理的时候需要格外小心,防止遗漏.以下为在下处理中文标点的时候采用的两种方法: 中文标点集合 比较常见标点有这些: !?。"#$%& ...

  8. python标点符号分中英文嘛_Python处理中文标点符号大集合

    中文文本中可能出现的标点符号来源比较复杂,通过匹配等手段对他们处理的时候需要格外小心,防止遗漏.以下为在下处理中文标点的时候使用的两种方法: 中文标点集合 比较常见标点有这些: !?。"#$%& ...

  9. java python大数据_python与java搞大数据,哪个更有长远优势?

    谢邀. python和java都是生态极其完善的编程语言,学习曲线都较低,在网上都可以找到大量学习资料.python的特点是可以用很少的代码实现一个功能,有一句话叫做人生苦短,快用python.但是p ...

最新文章

  1. 博客非100%原创,在学习道路上,我一直站在别人肩上
  2. 解决Ubuntu系统下git clone下载速度较慢的问题(亲测有效)
  3. 60多套html5移动端模板_美容整形高保真移动端原型模板发布
  4. Android Listview中Button按钮点击事件冲突解决办法
  5. 桔子浏览器电脑版如何登录 桔子浏览器PC版账号登录教程
  6. webpack 报错 path is not defind
  7. VisualStudio2005英文版被SQL2005简体中文版汉化
  8. 基于Simulink的汽车电子驻车系统仿真分析
  9. ABAP 透明表操作备忘 刘欣
  10. 报错:error: not found: value spark val ratings = spark.sparkContext.(解决方案)
  11. cp 命令 提示cp: 略过目录 “/root/temp/sk”
  12. fi sap 凭证冲销 稅_SAP FI 系列 (019) - 会计凭证的冲销和反记账
  13. 爬虫之-bilibili视频下载-接口分析
  14. python opencv gpu加速_让Python下的OpenCV也能GPU加速!part.1
  15. 一键接入 ChatGPT,让你的QQ群变得热闹起来
  16. 深度盘点:整理100个 Pandas 常用函数
  17. memcpy与strcpy的实现与区别
  18. 源码分析 RocketMQ DLedger 多副本存储实现,泛微网络java面试题
  19. 网络加密主要有以下几种方式_针对脱发的治疗主要有以下几种方法
  20. python 更新程序_python业务更新程序

热门文章

  1. 晚上11:45点 ,你进入睡眠状态了吗?
  2. 基于QT实现的多媒体播放器
  3. Webcam.getWebcamByName(“XXX“)的用法/Webcam调用摄像头的方法
  4. Python入门(第一节课)
  5. 手写的汉字评分matlab,基于深度学习的手写汉字美感评分
  6. 分享一个手写汉字数据集
  7. MATLAB打开代码,中文注释乱码的解决方法
  8. RT-Thread-设备(fal)
  9. 聚丙烯酸负载小鼠血清白蛋白(MSA)/大鼠血清白蛋白(RSA)/小麦麦清白蛋白;PAA-MSA/RSA
  10. vue3.0清理定时器无效问题