当前位置: 首页 > news >正文

Python复刻游戏《贪吃蛇大作战》

入门教程、案例源码、学习资料、读者群

请访问: python666.cn

大家好,欢迎来到 Crossin的编程教室 !

曾经有一款小游戏刷屏微信朋友圈,叫做《贪吃蛇大作战》。一个简单到不行的游戏,也不知道怎么就火了,还上了iOS免费榜排名第一。

我用Python做了一个复刻版,效果是这样的:

b616f56d544d33b8f4594ecc9942b012.gif

演示视频

demo 花了大约一整天时间,实现了基本效果(没做加速,没怎么优化,会有一点bug)。代码已上传 GitHub:

https://github.com/crossin/gluttonous

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

pip install cocos2d

代码实现上的几个难点:

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

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

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

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

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

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

作者:Crossin的编程教室


Crossin的第2本书《码上行动:利用Python与ChatGPT高效搞定Excel数据分析》已经上市了。

点此查看上一本《码上行动:零基础学会Python编程》介绍

b31449a149d7c8787ff3dc14ca84e0f2.jpeg

本书从 Python 和 Excel 结合使用的角度讲解处理分析数据的思路、方法与实战应用。不论是希望从事数据分析岗位的学习者,还是其他职业的办公人员,都可以通过本书的学习掌握 Python 分析数据的技能。书中创新性地将 ChatGPT 引入到教学当中,用 ChatGPT 答疑并提供实训代码,并介绍了使用 ChatGPT 辅助学习的一些实用技巧,给学习者带来全新的学习方式。

当当网5折活动进行中

读者朋友们购买后可在后台联系我,加入读者交流群,Crossin会为你开启陪读模式,解答你在阅读本书时的一切疑问。

感谢转发点赞的各位~


_往期文章推荐_

python设计模式|工厂模式

用python写一个简单的贪吃蛇游戏


【教程】: python

【答疑】: 666

http://www.lryc.cn/news/197956.html

相关文章:

  • SpringCloud之Gateway整合Sentinel服务降级和限流
  • 深度学习——深度卷积神经网络(AlexNet)
  • 提高编程效率-Vscode实用指南
  • ES 数据库
  • 面试经典150题——Day14
  • Pika v3.5.1发布!
  • Kotlin中的数组
  • (3) OpenCV图像处理kNN近邻算法-识别摄像头数字
  • 上海亚商投顾:沪指震荡调整 转基因概念股逆势大涨
  • abap中程序跳转(全)
  • 启动速度提升 10 倍:Apache Dubbo 静态化方案深入解析
  • PCB命名规则-allegro
  • [架构之路-240]:目标系统 - 纵向分层 - 应用层 - 应用层协议与业务应用程序的多样化,与大自然生物的丰富多彩,异曲同工
  • 探索数字时代的核心:服务器如何塑造未来并助你成就大业
  • spring6-资源操作:Resources
  • C语言 内存
  • Java设计模式之备忘录模式
  • 深度学习 | Pytorch深度学习实践
  • Elasticsearch7.9.3保姆级安装教程
  • 深入使用探讨 PuppeteerSharp 抓取 LinkedIn 页面的步骤
  • 联合体(共用体)
  • 从零开始:GitFlow详细教程,轻松掌握分支策略
  • 深度学习硬件介绍
  • 利用向导创建MFC
  • MySQL 8.0 OCP认证精讲视频、环境和题库之五 事务、缓存
  • ACL配置
  • 微信小程序修改van-popup的背景颜色
  • SpringCloud-Nacos
  • 动态规划12(Leetcode221最大正方形)
  • 【Git】bad signature 0x00000000 index file corrupt. fatal: index file corrupt