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根棒显示在距离屏幕最左边(width,5*width)上

2.5飞镖

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

先导入飞镖图片

定义飞镖类

定义添加飞镖的方法

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

2.6 生命值

导入字体

生命图片的显示、导入图片。

2.7 分数

与生命值部分代码相同

先设置初始分数为score = 0

然后显示分数

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

2.8 游戏结束

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

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

2.9 暂停键

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

设置图片的位置

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

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

3、运行结果

3.1 游戏开始

3.2 游戏暂停

3.3 游戏结束

Python做个小游戏的更多相关文章

  1. 上班无聊,自己用python做个小游戏来打发时间

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取t.cn ...

  2. Python开发转盘小游戏

    Python开发转盘小游戏 Python  一 原理分析 Python开发一个图形界面 有12个选项和2个功能键 确定每个按钮的位置 每个按钮的间隔相同 点击开始时转动,当前选项的背景颜色为红色,其他 ...

  3. 使用PixiJS做一个小游戏

    PixiJS PixiJS使用WebGL,是一个超快的HTML5 2D渲染引擎.作为一个Javascript的2D渲染器,Pixi.js的目标是提供一个快速的.轻量级而且是兼任所有设备的2D库. 官方 ...

  4. 用Python实现童年小游戏贪吃蛇

    贪吃蛇作为一款经典小游戏,早在 1976 年就面世了,我最早接触它还是在家长的诺基亚手机中.

  5. 教你用Python自制拼图小游戏,一起来制作吧

    摘要: 本文主要为大家详细介绍了python实现拼图小游戏,文中还有示例代码介绍,感兴趣的小伙伴们可以参考一下. 开发工具 Python版本:3.6.4 相关模块: pygame模块: 以及一些Pyt ...

  6. python 小鸡飞行小游戏

    python 小鸡飞行小游戏 用空格键控制小鸡飞行 代码 import pygame.freetype import sys import random pygame.init() screen = ...

  7. 菜鸟做HTML5小游戏 - 翻翻乐

    记录下开放过程.做小游戏开发,又要跨平台,flash又不支持iPhone,html5是最好的选择. 先看看最后效果: 好了,开始demo. 1.准备工作: 图片素材(省略...最后代码一起打包) 了解 ...

  8. 原生js做h5小游戏之打砖块

    前言 首先,先说明一下做这个系列的目的:其实主要源于博主希望熟练使用 canvas 的相关 api ,同时对小游戏的实现逻辑比较感兴趣,所以希望通过这一系列的小游戏来提升自身编程能力:关于 es6 语 ...

  9. 利用Python完成一个小游戏:随机挑选一个单词,并对其进行乱序,玩家要猜出原始单词

    一 Python的概述以及游戏的内容 Python是一种功能强大且易于使用的编程语言,更接近人类语言,以至于人们都说它是“以思考的速度编程”:Python具备现代编程语言所应具备的一切功能:Pytho ...

随机推荐

  1. wangEditor 文本编辑器

    参考:https://www.cnblogs.com/Scholars/p/8968838.html 下载:http://www.wangeditor.com/ 前端代码: <script ty ...

  2. elasticsearch 深入 —— 相关度控制

    控制相关度 处理结构化数据(比如:时间.数字.字符串.枚举)的数据库, 只需检查文档(或关系数据库里的行)是否与查询匹配. 布尔的是/非匹配是全文搜索的基础,但不止如此,我们还要知道每个文档与查询的相 ...

  3. python车牌精确定位

    #coding=utf-8 import cv2 # 使用的是HyperLPR已经训练好了的分类器 watch_cascade = cv2.CascadeClassifier('model/casca ...

  4. 03.LNMP架构-PHP源码包编译部署详细步骤

    一.环境准备 操作系统:CentOS_Server_7.5_x64_1804.iso 部署组件:yasm+libmcrypt+libvpx+tiff+libpng+freetype+jpeg+libg ...

  5. vue,一路走来(1)--构建vue项目

    2016年12月--2017年5月,接触前端框架vue,一路走来,觉得有必要把遇到的问题记录下来. 那时,vux用的是1.0的vue,然而vue2.0已经出来了,于是我结合了mint-ui一起来做项目 ...

  6. setup PC not sleep when turn off display

  7. Vue-native绑定原生事件

    首先介绍一下是什么意思: 意思就是当你给一个vue组件绑定事件时候,要加上native!如果是普通的html元素!就不需要 <div id = "app"> <m ...

  8. elasticsearch查询与sql对应关系

    must: AND must_not:NOT should:OR

  9. Echarts 自定义数据视图

    toolbox : { show : true, feature : { dataView : { optionToContent : function(option) { // 行名称 var ax ...

  10. .net core webapi添加swagger

    依赖项——右键——管理NuGet程序包——浏览——输入以下内容 Install-Package Swashbuckle.AspNetCore -Pre 双击Properties——点击生成——勾选XM ...