阅读本文大概需要2分钟
Python可以干很多事情,常见的有Web后端开发,机器学习,数据分析等等。其实Python还能做游戏开发,今天逛逛Github发现一个大神用Python做了一个超级玛丽的游戏,清新脱俗,太牛了。
链接:github.com/justinmeister/Mario-Level-1
作者:Justin Armstrong
看一下游戏图
有没有很亲切的感觉,相信很多80后对这款游戏都记忆犹新,一代人的记忆呀。
1.游戏的入口
作者的功力还是蛮深的,整个代码的框架很清晰。看一下它的启动函数:
是不是有一种很清爽的感觉,代码是用非常有名的游戏库pygame写的。这个库来做交互式的游戏非常有用,也很有趣。这里作者还加了cProfile库,不知道是不是用来做计算性能的。
我们来看看main函数里都写了啥:
-
第一个from 引入了setup和tools, 主要是把一些初始化的工作在setup里面全部做完,读取一些配置文件和图片,声音到内存里面。
-
第二个from 主要显示主菜单和主界面。
-
第三个from主要是引入了一些常量的配置,比如颜色红色,黑色,白色,超级玛丽,蘑菇,砖块,硬币的一些状态常量。
-
run_it 是整个游戏的核心类,是用来做整个游戏的控制中心。
-
作者设计了一个状态机,里面设计了5个主要的场景:主菜单,主界面,超时的界面,游戏结束的节目还有循环运行的界面
-
最后运行run_it.main(),调用控制类里面的一个死循环函数,不断监听外部的event,来更新画布,整个的背景其实是循环的。
2.游戏的框架
整个游戏分resource和data两个部分:
-
resource部分主要是存放一些字体啊,图片啊,音乐和声音。
-
data部分主要分组件compents和逻辑处理control部分,这里的逻辑处理部分,作者非常巧妙的用状态机来设计。
一个游戏肯定有不同的角色:
-
比如物体:砖块,城堡,硬币,旗杆,障碍物
-
比如人物:超级玛丽,敌人(乌龟啥的)
-
比如控制和记分:专门计算物体之间的碰撞,记录获得的金币
-
其他:比如提示信息,快速跑等等.
3.游戏的按键控制
基本上跟经典的游戏的控制是一摸一样的,用s表示走,用a表示跳,下左右都是箭头来表示的.
<span style="background-color: rgb(71, 44, 71);">keybinding</span> <span style="color: rgb(249, 38, 114);">= </span>{<br /> <span style="color: rgb(165, 194, 97);">'action'</span><span style="color: rgb(249, 38, 114);">:</span>pg.K_s<span style="color: rgb(204, 120, 50);">,<br /> </span><span style="color: rgb(165, 194, 97);">'jump'</span><span style="color: rgb(249, 38, 114);">:</span>pg.K_a<span style="color: rgb(204, 120, 50);">,<br /> </span><span style="color: rgb(165, 194, 97);">'left'</span><span style="color: rgb(249, 38, 114);">:</span>pg.K_LEFT<span style="color: rgb(204, 120, 50);">,<br /> </span><span style="color: rgb(165, 194, 97);">'right'</span><span style="color: rgb(249, 38, 114);">:</span>pg.K_RIGHT<span style="color: rgb(204, 120, 50);">,<br /> </span><span style="color: rgb(165, 194, 97);">'down'</span><span style="color: rgb(249, 38, 114);">:</span>pg.K_DOWN<br />}
整个游戏我玩了几把还是很不错的,画片还是蛮漂亮的,操作也很流畅,尤其是超级玛丽在空中腾飞的姿势还是很帅的,刷刷刷的顶到云上!
目前只能支持一个玩家玩,当然唯一美中不足的是这款游戏仅在Py2.x上流畅运行。大家可以去下载一下源码,玩一玩然后读一读源码,源码写的非常通熟易懂,结构很清晰,学习一下高手是如何写代码的,相信对大家的功力增长大有裨益。
推荐阅读:
帮你赚到第一桶金的Python代码
这8道Python面试题,你答不答的出来
太好玩了!用Python写个弹球游戏2.0
Python武功如何快速进阶
2017年度电影榜单出炉
本篇文章来源于: 菜鸟学Python
本文为原创文章,版权归知行编程网所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ python将99乘法表放入excel表格的方法12/14
- ♥ Python none 和 0 有什么区别10/18
- ♥ python如何定义字节12/22
- ♥ python3中的%d是什么意思?08/11
- ♥ 选择 perl 或 python12/18
- ♥ 如何在python中注释代码10/02
内容反馈