学习Python开发小游戏(三)-----勇闯地下一百层
前提条件:
需要安装pygame,pgzero,numpy(windows:1.19.3)
功能:
1.初始化界面显示5个砖块和角色图片
2.键盘控制角色的左右移动,当角色不在砖块上时显示角色下降
3.角色在砖块上移动时显示角色行走的效果
4.统计角色闯过的层数,每闯过一层分数加1,同时在界面显示分数
5.游戏失败,界面显示对应信息,同时停止游戏
附:
代码中涉及到的素材来自异步社区:《Python游戏趣味编程》一书中提供的素材:https://www.epubit.com/bookDetails?id=UB72096d97d6149
以下是代码:
import pgzrun, randomTITLE = '勇闯地下一百层'
WIDTH = 600
HEIGHT = 800# 导入角色
roles = []
for i in range(10):roles.append(Actor(str(i + 1)))
# 初始化显示的角色的图片
role_index = 4
# 初始化角色显示的位置
role_x = WIDTH / 2
role_y1 = HEIGHT / 4
for r in roles:r.x = role_xr.y = role_y1
# 导入砖块,初始化5个砖块
bricks = []
for i in range(5):brick = Actor('brick')brick.pos = random.randint(180, 420), 150 * (i + 1)bricks.append(brick)# 移动速度
speed_role = 5 # 角色下降速度
speed_brick = 1 # 砖块上升速度
speed_go = 0 # 角色自身移动的速度
# 游戏是否结束
is_loose = False
# 分数
score = 0
# 角色的上一帧的y坐标
role_y = roles[role_index].ydef draw():# 清除游戏画面screen.clear()screen.fill('white')# 绘制角色roles[role_index].draw()# 绘制砖块for bk in bricks:bk.draw()# 当前得分screen.draw.text('当前得分:' + str(score), (200, 750), fontsize=30, fontname='s', color='green')if is_loose:screen.draw.text('Game Over !', (150, 300), fontsize=50, fontname='s', color='red')def update():global is_loose, speed_role, speed_brick, score, role_y, role_index, role_x, role_y1, speed_go# 角色是否站在砖块上is_player_on_brick = False# 游戏失败直接返回if is_loose:return# 角色和砖块的位置for bk in bricks:# 砖块重复出现if bk.y < 0:bk.pos = random.randint(180, 420), HEIGHT# 角色是否站在砖块上if abs(roles[role_index].bottom - bk.top) < 5 and bk.left - roles[role_index].left < roles[role_index].width * 2 / 3 and roles[role_index].right - bk.right < roles[role_index].width * 2 / 3:is_player_on_brick = True# 角色站在砖块上时,角色和砖块一块上移for i in range(len(roles)):roles[i].bottom = bk.top# 得分情况if role_y < roles[role_index].y:score += 1# 角色的移动if keyboard.left or keyboard.a:# 角色左移,x坐标减4role_x -= 4# 如果当前显示的角色图片是面朝右显示,则将其置为往左显示if role_index < 5:role_index = 4for i in range(len(roles)):roles[i].x = role_xspeed_go += 1if speed_go % 4 == 0:role_index += 1if role_index > 9:role_index = 5if keyboard.right or keyboard.d:# 角色右移,x坐标加4role_x += 4# 如果当前显示的角色图片是面朝左显示,则将其置为往右显示if role_index > 4:role_index = 5for i in range(len(roles)):roles[i].x = role_xspeed_go += 1if speed_go % 4 == 0:role_index += 1if role_index > 4:role_index = 0# 更新角色上一帧的y坐标role_y = roles[role_index].y# 如果角色不在任意一块砖上,角色下降if not is_player_on_brick:roles[role_index].y += speed_role# 砖块上移for bk in bricks:bk.y -= speed_brick# 判定游戏失败的条件if roles[role_index].top < 0 or roles[role_index].bottom > HEIGHT:speed_role = 0speed_brick = 0is_loose = Truepgzrun.go()
游戏效果:
学习Python开发小游戏(三)-----勇闯地下一百层相关推荐
- python趣味编程100_《Python游戏趣味编程》 第8章 勇闯地下一百层
知乎视频www.zhihu.com 图书简介可以看这里:童晶:<Python游戏趣味编程>新书上架了zhuanlan.zhihu.com 本章我们将编写一个勇闯地下一百层的游戏,键盘控 ...
- 《Python游戏趣味编程》 第8章 勇闯地下一百层
8 勇闯地下一百层 图书简介可以看这里: 童晶:<Python游戏趣味编程>新书上架了 本章我们将编写一个勇闯地下一百层的游戏,键盘控制游戏角色左右移动,跳到下方随机生成的砖块上,尝试坚持 ...
- [python] 开发小游戏 豆豆吃花瓣
今天来做一个python游戏 使用python的游戏框架pygame开开发一个自创的豆豆吃花瓣的游戏[还没有取名字?] 首先看下游戏主目录下有些什么文件 就一个img的文件夹,和一个py的文件 img ...
- 【Python开发小游戏】安装 pygame
pygame下载地址: https://www.lfd.uci.edu/~gohlke/pythonlibs/#pygame 在对应文件夹中cmd,pip进行安装: pip install pygam ...
- c/c++实现勇闯地下一百层(重点在于实现重力加速度)
实现步骤: 一块板的上升 多块随机板的上升 小人随着板上升 小人的左右移动 小人的重力感下落 死亡的判断 记录分数 随着分数增加难度上升 程序中的难点: (1)重力加速度的实现: 精髓就是把小人自由下 ...
- 第一次用python写小游戏
记一次用python开发小游戏的经历 在学习if语句和循环时,突然想起初中时玩过一款叫<黑道圣徒3>的游戏,里面有一个文字冒险的小游戏,看样子能用if实现,就想着把它做出来. 游戏玩法 开 ...
- Python 打字小游戏开发,来体验不一样的打字游戏乐趣(第一篇)
Python 打字小游戏开发,来体验不一样的打字游戏乐趣(第一篇) 前言 游戏素材准备 游戏项目结构 项目里面的类说明 Python 打字小游戏开发,来体验不一样的打字游戏乐趣(第二篇) Python ...
- python控制台小游戏_学习编程的好方法——控制台游戏
本文难度:★☆☆☆☆ 题图:控制台RPG游戏--诛仙剑 by 呆呆的码农 一.前言 在我大知乎,有以下基本日常问题:如何学习C语言? 如何学习C++? 如何学习Python? 如何学习XXXX语言? ...
- Python 打字小游戏开发,来体验不一样的打字游戏乐趣(完结篇)
Python 打字小游戏开发,来体验不一样的打字游戏乐趣(完结篇) 资源下载 完整代码 Python 打字小游戏开发,来体验不一样的打字游戏乐趣(第一篇) Python 打字小游戏开发,来体验不一样的 ...
最新文章
- 使用Aspose.Pdf for .NET实现PDF文档到Excel、EPS、SVG等的转换
- 入职三天,公司给了100块钱叫我走人
- GPU算力免费用?百度AI Studio两周年惊喜活动开启
- 10 | 案例篇:系统的软中断CPU使用率升高,我该怎么办?
- 微型计算机中存储器分成哪几个等级?它们各有什么特点?用途如何?,《微机原理》复习思考题第十二章存储器.DOC...
- 蓝牙连接不上车要hfp_鹅厂又要霸屏,连接四部剧将袭,冲着主创颜值不追不行啦...
- 路透社2017年度最佳图片,向你展示地球过去的一年
- git 查看代码量_学会这三个命令,你就不再是git只会用三板斧的菜鸟了
- Codeforces.612E.Square Root of Permutation(构造)
- 『007』MySQL
- 派生BOM (Variant Bom)操作
- 这么优秀的Excel工具类,你难道不用?
- 视频直播平台性能测试
- linux7删除lv后文件系统异常,使用c-spoc删除lv后出现怪异异常!(已解决)
- 开学第一周,超30所高校系主任选择与百度飞桨联办校赛
- 新年了,用python编程设计有意义背景图片的一朵玫瑰花给心爱的人吧
- 软件设计师笔记-操作系统基本原理
- [2]云计算(一)理解云计算
- java二次开发流程,源码修改流程(Hadoop)
- 数仓出局,中台已凉,数据湖称王!
热门文章
- Codeforces 940 E.Cashback (单调队列,dp)
- 【圣诞树】用C语言给女友写一个圣诞树
- android中群发短信PendingIntent.getBroadcase的注册广播
- 虚拟服务器无限网站个数,无限个网站虚拟空间
- 英雄联盟手游超燃测试服务器维护,英雄联盟手游“超燃”测试放号开启!我抽中了,却白高兴一场...
- Java中abstract类和abstract方法
- 我的U3D 学习之旅
- android定时器
- 什么是手机的基带电路
- 艺术不死,只是以生成 AI 的形式存在