童年记忆第一弹——俄罗斯方块童年记忆第二弹——植物大战僵尸童年记忆第三弹——天天酷跑
我写了第四个童年游戏,突然想到以前玩过的一个很有意思的游戏,叫胖鸟快飞,是一只鸟。通过钢管这个游戏,我们今天就来写写这个游戏吧~
我们使用pygame的基本语法和第三方库python来开发这个游戏。代码行数不超过100行,即使是初学者也能轻松理解。最重要的是,通过开发这个游戏,我们不仅可以稳固python的基础知识,还可以让枯燥的代码变得生动,就像做饭一样,而且我们自己的厨艺永远比别人的好。DEB268C3115F07B212827C09A9093F14.png
Pygame安装:pipinstallpygame;(有编译器的合作伙伴可以在设置中导入)
游戏的形成是运行界面不断刷新,无限循环正好可以实现这个功能,循环内部是游戏的主要模块;
运行结果:(一个黑色背景的窗体,大小为480 * 640)6C044326CDA056A6AE7FDB3CF3EE669D.png。
首先要明白什么是面向对象的概念,用合适的方式构造我们需要的类,方便我们后续的操作;
不知道的小伙伴可以从这里了解相关知识:https://blog.csdn.net/weixin _ 44638960/文章/详情/95233484。
定义完类后,我们可以通过这个模板实例化一个胖鸟对象:bird = bird();
之后我们在构造自己的Draw方法,实现简单的图形绘制;(pygame提供draw来画简单的图像。这里我们画一个简单的矩形。)
python函数的定义和使用:https://blog.csdn.net/weixin _ 44638960/article/details/94551997图片。
运行结果:(窗帘上出现了一个黄色的长方形,是我们的胖鸟,后面我们会做的更生动)0701D54094BF1B2E81DDCC0786DA03E6.png。
那么问题又来了,怎么按下按钮让这只小胖鸟动起来?Pygame提供了判断按键状态的type属性和判断哪个按键被触发的key属性,根据不同的情况响应不同的事件。
是不是开始觉得这是一场游戏了?我们的小胖鸟可以根据按压空间的频率上升或下降(哈哈);
像构造鸟一样,我们同样构造一个管道类;
在使用管道之前,我们需要初始化init。根据纵坐标的计算,我们给胖鸟留了四个空位置,在初始化的时候把这些空位置标记出来,方便我们后面画管道障碍物。下面是我们构造的PipeInit方法;
胖鸟通过空格键上下移动,但管道的移动不受用户控制,移动方向依次为从右向左水平。这里我们采用管道的水平坐标位置随圆周运动依次减少一的方法来实现鸟与管道的相对运动,这些操作可以与管道的绘制同时进行。让我们构造一个绘制管道的方法:
到目前为止,我们已经基本实现了游戏的所有功能,但是每一场游戏都会结束。目前我们的游戏只实现了地图和精灵的移动,没有实现结束游戏的功能。这里我们用一个检查的方法来判断游戏;
用这个方法,我最后一个主要功能就结束了。我们来看看游戏是否和以前有所不同,可玩性也有了质的飞跃(有点激动,开始运行我们的简单试玩吧)6126FD9D46EDCAC78E66C61EC57BFBB7.png。
它是怎么跑的,和我们预想的胖鸟差不多吗?但是这样是不是有点太单调了?让我们开始让整个游戏界面更加生动。前面提到的windowSize.fill()方法默认填充黑色。我们可以通过修改背景的RGB颜色值,将背景颜色更改为我们想要的颜色。
对于这只笨笨的黄色小胖鸟(看起来真的很方),我们来整容一下,导入一张小胖鸟的图片,对原来的长方形做相应的改动,让它脱胎换骨;
游戏向导导入格式:flappy bird = py game . image . Load(" bird . png ")#加载游戏图片;图像
对于比赛比分的提示信息,可以通过pygame自带的字体设置字体大小并添加到幕布中(这里我们只给出比分提示信息的代码,您也可以根据需要填写其他提示信息)。
Font=pygame.font.SysFont('宋体',24);
text = font . render(" games core:"+str(bird . g _ score),True,(255,255,255));
windowsSize.blit(text,Rect(360,10,200,120));#text是填充的文本内容,Rent(x,y,len,width)。
游戏完整代码:
游戏运行截图:ECD6D548DDA22570E6926639F9B20FF0.png
以上是胖鸟快飞的源代码流程。可以写出来玩玩。
我是白白,一个喜欢学习和编程的年轻人。
如需学习资料,请在评论区勾选“1”。
想学python的可以私信关注我~
网友评论