编写一个经典游戏超级玛丽,如果用其他语言可能要上千行代码,而Python简洁的语法和强大的扩展库,使用Python最少只需两百多行就可完成,零基础都可以完成。最后写成的效果如下图:
python开发超级玛丽游戏使用的扩展库是 Pygame Zero(简称Pgzero) 安装:pip install pgzero
下面的几个步骤操作,轻松完成超级玛丽python开发
1、建立游戏场景
建立游戏窗口只需两行代码:
import pgzrun
pgzrun.go()
在Python自带的IDLE编辑器中输入上述代码,运行便可以看到一个游戏窗口
用下面两行代码可以调整一下窗口大小
import pgzrun
HEIGHT=640
WIDTH=1024
pgzrun.go()
为窗口设置一个背景颜色,可以在Pgzero提供的draw()函数中编写代码:
def draw():screen.fill((148, 146, 255))
上述代码用RGB颜色值(148, 146, 255)为游戏窗口生成了一个背景色,并自动显示出来,效果如下:
接下来定义一个文本文件,把游戏场景中各种物体的位置用字母记录下来:
然后在程序中编写代码来读取文件,在相应字符的位置处生成物体,并将生成的物体全部加入到列表objs中。
最后在draw()函数中加入显示物体的代码即可:
def draw():screen.fill((148, 146, 255))for obj in objs:obj.draw()
场景的最终显示效果如下:
2、创建游戏角色
Pgzero中生成一个游戏角色十分简单,只需一行代码即可:
mario=Actor("smario.png",(200,HEIGHT-120))
Actor类是Pgzero提供的角色类,调用该类的构造方法并传入角色图片和位置便可生成一个角色对象,同时在draw()函数中显示该角色即可。修改后的draw()函数如下:
def draw():screen.fill((148, 146, 255))for obj in objs:obj.draw()mario.draw()
现在看看效果:
3、场景与角色的交互
玛丽便能站在地面上,而且可以顶砖块、吃蘑菇、捡金币、踩怪物等等。
以吃金币为例,我们可以编写如下代码:
class Coin(Actor):
def react(self):
if mario.colliderect(self):
sounds.coin.play()
objs.remove(self)
mario.points=mario.points+1
我们首先定义了一个金币类Coin,它继承自Actor类。然后在其中定义了react()方法,该方法判断玛丽是否“吃”到了金币,如果吃到则先播放一个音效,接着将金币对象从objs列表中移除,最后为玛丽增加一个游戏积分。
可以看到,Pgzero为我们提供了非常便捷的API来实现游戏基础功能,比如判断玛丽是否吃到金币,这实际上是个碰撞检测问题,只需调用colliderect()方法即可,而不需要手动编制大量代码。同时播放声音也只用一行代码就可搞定。
通过以上3个步骤,一款超级玛丽游戏就开发成功了,最终运行效果如下:
python开发超级玛丽的源码下载链接:
https://www.aliyundrive.com/s/8uDL2tA3GyY
更多详细的开发过程可以参考《零基础入门Python游戏》一书,该书第7章《超级马里奥》,
本书将从零开始带领读者上手3个独立的Python小游戏的开发过程,包括《飞机大战》《俄罗斯方块》《超级马里奥》。这些游戏简单易学,可以帮助读者通过编写游戏的方式提高Python编程能力,极具趣味性,让朋友们边玩边学!
最后,如果想要用python开发出更多有趣的游戏,全面系统学习Pygame Zero可以参考《趣学Python游戏编程》一书,
该书通过十个经典游戏案例,深入浅出地介绍了游戏编程的基本原理,以及Pygame Zero的具体使用方法。《趣学python编程》语言轻松,通俗易懂,讲解由浅入深,力求将读者阅读和学习的难度降到最低。任何对计算机编程有兴趣的人或者首次接触编程的人,不论孩子还是成人,都可以通过阅读本书来学习python编程。
以上从python的一个经典小游戏开始,介绍了python零基础开发游戏的步骤,并 介绍了两本关于python游戏开发的书,可以给孩子或者正在学习编程的学生使用,当然,如果是高龄人士,也可以用来培养一个爱好,没事编写一些程序养生一下,
感谢大家的观看,我要去练习python开发案例进行养生,陶冶情操去了,