Ps.可去知乎搜索“雨露浅歌”大神,他写的帖子里有详细讲解和源码。dom
游戏概述、玩法:经过键盘的↑键来控制小球往上走,当松开↑键时,小球以必定速度向下掉,小球每越过一根棒加1000分,越过一个飞镖加2000分,当小球碰到棒或者飞镖时,生命减一,同时还设置了暂停键,开始键,本局分数和历史最高分。
字体
游戏准备:安装pygame库spa
pip install pygame 安装pygame设计
安装中3d
安装完成blog
(注: 查看全部库 pip list ; 卸载某库 pip uninstall xxx; 更新某库 pip install --upgrade xxx)队列
经过键盘的↑键来控制小球往上走,当松开↑键时,小球以必定速度向下掉,小球每越过一根棒加1000分,越过一个飞镖加2000分,当小球碰到棒或者飞镖时,生命减一,同时还设置了暂停键,开始键,本局分数和历史最高分。游戏
背景颜色为黑色,游戏名为“跳跃的小球”。事件
实例代码:图片
运行以上程序,就能够看到名为“跳跃的小球”的黑色窗口。
首先咱们须要一张小球的图片,而后导入它而且将它显示在(0,0),也就是左上角的位置,即以左上角为原点,越往右下,坐标就越大,注意这里的坐标对应的是图片的左上角。
定义一个Ball类,用来控制小球的位置,上升下落的速度。小球左边的位置不变,顶部的位置发生变化便可,因此当小球上升时,顶部位置的坐标减少,降低时,顶部位置的坐标增大。
控制部分的代码,当按下↑键时,小球上升,当松开时,小球降低。由于这是一个不断刷新的过程,咱们要写在while循环中。
由于星星是随机分布在屏幕中的,因此咱们要先导入random中的randint方法,并导入星星的图片。
定义星星类
建立多颗星星并让它移动起来,定义一个添加星星的方法
实例化星星队列,调用添加星星的方法经过循环星星队列将30颗星星显示在屏幕上
2.4 棍棒
导入棒的图片
而后定义棒类
添加棒的方法
实例化棒队列,并调用添加棒的方法,经过循环棒队列将20根棒显示在距离屏幕最左边(width,5*width)上
2.5飞镖
飞镖比棒复杂一点点,不过也是差很少的,我都思路是这样的,将下面棒的四种摆放位置依次显示,就造成了飞镖。
先导入飞镖图片
定义飞镖类
定义添加飞镖的方法
而后实例化飞镖队列,并调用添加飞镖的方法,将飞镖显示在屏幕上
导入字体
生命图片的显示、导入图片。
与生命值部分代码相同
先设置初始分数为score = 0
而后显示分数
注意:分数的增长,由于当小球越过棒和飞镖时,分数就增长,故分数的增长和小球、棒和飞镖的距离有关,因此要在显示它们时判断它们的距离。
游戏结束的时候会显示游戏结束,本局得分,历史最高分和再来一遍字样,咱们都要把它们显示出来,由于点击再来一遍是从新开始游戏,为了好肯定它的区域,我采用了以图片显示的方式,而其它的都是以文字方式显示。
显示分数和最高分数,由于要保存最高分数,因此咱们要新建一个文本文件score.txt,设置文本开始所存的分数为prescore=0,最高分为0.
2.9 暂停键
把鼠标移到暂停或者开始键时,按键变亮,当鼠标移除来时,按键变暗,首先导入图片
设置图片的位置
由于当暂停时,除了小球、棒和飞镖不显示,其它的都显示,因此要设置一个暂停变量pause来控制,刚开始咱们固然设置为False。由于分数,生命,星空和暂停或开始键在游戏没结束的时候始终显示,因此把它们放在if not pause:else语句以外。而其余的根据逻辑关系放在指定位置便可,由于当鼠标停在或者按下暂停和开始键时,图片会变化,因此在获取事件循环中要多加几个判断。
在获取事件源中添加逻辑代码
三、运行结果
3.2 游戏暂停
3.3 游戏结束
、