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根棒显示在距离屏幕最左边(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做个小游戏的更多相关文章
- 上班无聊,自己用python做个小游戏来打发时间
前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取t.cn ...
- Python开发转盘小游戏
Python开发转盘小游戏 Python 一 原理分析 Python开发一个图形界面 有12个选项和2个功能键 确定每个按钮的位置 每个按钮的间隔相同 点击开始时转动,当前选项的背景颜色为红色,其他 ...
- 使用PixiJS做一个小游戏
PixiJS PixiJS使用WebGL,是一个超快的HTML5 2D渲染引擎.作为一个Javascript的2D渲染器,Pixi.js的目标是提供一个快速的.轻量级而且是兼任所有设备的2D库. 官方 ...
- 用Python实现童年小游戏贪吃蛇
贪吃蛇作为一款经典小游戏,早在 1976 年就面世了,我最早接触它还是在家长的诺基亚手机中.
- 教你用Python自制拼图小游戏,一起来制作吧
摘要: 本文主要为大家详细介绍了python实现拼图小游戏,文中还有示例代码介绍,感兴趣的小伙伴们可以参考一下. 开发工具 Python版本:3.6.4 相关模块: pygame模块: 以及一些Pyt ...
- python 小鸡飞行小游戏
python 小鸡飞行小游戏 用空格键控制小鸡飞行 代码 import pygame.freetype import sys import random pygame.init() screen = ...
- 菜鸟做HTML5小游戏 - 翻翻乐
记录下开放过程.做小游戏开发,又要跨平台,flash又不支持iPhone,html5是最好的选择. 先看看最后效果: 好了,开始demo. 1.准备工作: 图片素材(省略...最后代码一起打包) 了解 ...
- 原生js做h5小游戏之打砖块
前言 首先,先说明一下做这个系列的目的:其实主要源于博主希望熟练使用 canvas 的相关 api ,同时对小游戏的实现逻辑比较感兴趣,所以希望通过这一系列的小游戏来提升自身编程能力:关于 es6 语 ...
- 利用Python完成一个小游戏:随机挑选一个单词,并对其进行乱序,玩家要猜出原始单词
一 Python的概述以及游戏的内容 Python是一种功能强大且易于使用的编程语言,更接近人类语言,以至于人们都说它是“以思考的速度编程”:Python具备现代编程语言所应具备的一切功能:Pytho ...
随机推荐
- shell条件判断命令test
- 几种激活Profile的方式
方法一: 选择spring.profiles.active spring.profiles.active=prodspring.profiles.active=dev 方法二: 选择spring.pr ...
- Spring Cloud Contract简介
转载:https://www.jianshu.com/p/e3277824a10a 和dummy service一样 Spring Cloud Contract是个啥? Spring Cloud Co ...
- zabbix入门之定义触发器
zabbix入门之定义触发器 触发器的概念 触发器的定义:界定某特定的item 采集到数据的非合理区间或非合理状态.通常为逻辑表达式. 逻辑表达式(阈值):通常用于定义数据的不合理区间,其结果如下: ...
- Spring之控制反转——IoC、面向切面编程——AOP
控制反转——IoC 提出IoC的目的 为了解决对象之间的耦合度过高的问题,提出了IoC理论,用来实现对象之间的解耦. 什么是IoC IoC是Inversion of Control的缩写,译为控制 ...
- Sass函数:random()函数
random() 函数是用来获取一个随机数 >> random() 0.03886 >> random() 0.66527 >> random() 0.8125 & ...
- 爬虫技术:cookies池的维护
一:为什么要维护cookie 1.登录才能爬取内容 2.爬取频繁会被封号. 3.需要维护多个账号的cookie,实现大规模抓取 二:cookies的要求 1.自动登录更新 2.定期筛选验证 3.提供外 ...
- python3修改文件指定行
方法可以有三个,但其实是一个方法,因为不同的方法都是文件存储的方法,文件修改就只有一个方法: 将文件导入list后,重新写入文件(另一个文件或者当前文件) 1.当前文件读取后,list修改内容,写入另 ...
- find命令进阶(二):对找到的文件执行操作exec
以下面的命令为例: find ~ -type f -name 'foo*' -exec ls -l '{}' ';' 分面两部分,第一部分: find ~ -type f -name 'foo*' 即 ...
- CDH6.3 Centos7
按照官方文档安装即可 CentOS7 上搭建 CDH(6.3.0) 官方文档:https://docs.cloudera.com/documentation/enterprise/6/6.3/topi ...