Python做个小游戏

Ps.可去知乎搜索“雨露浅歌”大神,他写的帖子里有详细讲解和源码。

游戏概述、玩法:通过键盘的↑键来控制小球往上走,当松开↑键时,小球以一定速度向下掉,小球每越过一根棒加1000分,越过一个飞镖加2000分,当小球碰到棒或者飞镖时,生命减一,同时还设置了暂停键,开始键,本局分数和历史最高分。

游戏准备:安装pygame库

pip install pygame 安装pygame

安装中

安装完成

(注: 查看所有库 pip list ;  卸载某库 pip uninstall xxx;  更新某库 pip install --upgrade xxx)

1、游戏玩法

通过键盘的↑键来控制小球往上走,当松开↑键时,小球以一定速度向下掉,小球每越过一根棒加1000分,越过一个飞镖加2000分,当小球碰到棒或者飞镖时,生命减一,同时还设置了暂停键,开始键,本局分数和历史最高分。

2、设计思路

2.1 游戏背景和游戏名

背景颜色为黑色,游戏名为跳跃的小球

实例代码

运行以上程序,就可以看到名为跳跃的小球的黑色窗口。

2.2 小球

首先我们需要一张小球的图片,然后导入它并且将它显示在(0,0),也就是左上角的位置以左上角为原点,越往右下,坐标就越大,注意这里的坐标对应的是图片的左上角。

 

定义一个Ball用来控制小球的位置,上升下落的速度。小球左边的位置不变,顶部的位置发生变化即可,所以当小球上升时,顶部位置的坐标减小,下降时,顶部位置的坐标增大。

 

控制部分的代码,当按下键时,小球上升,当松开时,小球下降。因为这是一个不断刷新的过程,我们要写在while循环中。

 

2.3 星空

因为星星是随机分布在屏幕中的,所以我们要先导入random中的randint方法并导入星星的图片。

 

定义星星类

 

创建多颗星星并让它移动起来,定义一个添加星星的方法

 

实例化星星队列,调用添加星星的方法通过循环星星队列将30颗星星显示在屏幕上

 

2.4 棍棒

导入棒的图片

 

然后定义棒类

 

添加棒的方法

 

实例化棒队列,并调用添加棒的方法通过循环棒队列将20根棒显示在距离屏幕最左边(width5*width)

 

2.5飞镖

飞镖比棒复杂一点点,不过也是差不多的,我都思路是这样的,将下面棒的四种摆放位置依次显示,就形成了飞镖。

先导入飞镖图片

 

定义飞镖类

 

定义添加飞镖的方法

 

然后实例化飞镖队列,并调用添加飞镖的方法将飞镖显示在屏幕上

 

2.6 生命值

导入字体

 

生命图片的显示导入图片

 

2.7 分数

与生命值部分代码相同

 

先设置初始分数为score = 0

然后显示分数

 

 注意:分数的增加,因为当小球越过棒和飞镖时,分数就增加,故分数的增加和小球、棒和飞镖的距离有关,所以要在显示它们时判断它们的距离

 

2.8 游戏结束

游戏结束的时候会显示游戏结束,本局得分,历史最高分和再来一遍字样,我们都要把它们显示出来,因为点击再来一遍是重新开始游戏,为了好确定它的区域,我采用了以图片显示的方式,而其它的都是以文字方式显示。

 

显示分数和最高分数因为要保存最高分数,所以我们要新建一个文本文件score.txt,设置文本开始所存的分数为prescore=0,最高分为0.

 

2.9 暂停键

把鼠标移到暂停或者开始键时,按键变亮,当鼠标移除来时,按键变暗首先导入图片

 

设置图片的位置

 

因为当暂停时,除了小球、棒和飞镖不显示,其它的都显示,所以要设置一个暂停变量pause来控制,刚开始我们当然设置为False。因为分数,生命,星空和暂停或开始键在游戏没结束的时候始终显示,所以把它们放在if not pauseelse语句之外。而其他的根据逻辑关系放在指定位置即可因为当鼠标停在或者按下暂停和开始键时,图片会变化,所以在获取事件循环中要多加几个判断

在获取事件源中添加逻辑代码

 

 3、运行结果

3.1 游戏开始

 

3.2 游戏暂停

3.3 游戏结束

 


原文地址:https://www.cnblogs.com/weixinyu98/p/10809425.html