前提条件:

需要安装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开发小游戏(三)-----勇闯地下一百层相关推荐

  1. python趣味编程100_《Python游戏趣味编程》 第8章 勇闯地下一百层

    知乎视频​www.zhihu.com 图书简介可以看这里:童晶:<Python游戏趣味编程>新书上架了​zhuanlan.zhihu.com 本章我们将编写一个勇闯地下一百层的游戏,键盘控 ...

  2. 《Python游戏趣味编程》 第8章 勇闯地下一百层

    8 勇闯地下一百层 图书简介可以看这里: 童晶:<Python游戏趣味编程>新书上架了 本章我们将编写一个勇闯地下一百层的游戏,键盘控制游戏角色左右移动,跳到下方随机生成的砖块上,尝试坚持 ...

  3. [python] 开发小游戏 豆豆吃花瓣

    今天来做一个python游戏 使用python的游戏框架pygame开开发一个自创的豆豆吃花瓣的游戏[还没有取名字?] 首先看下游戏主目录下有些什么文件 就一个img的文件夹,和一个py的文件 img ...

  4. 【Python开发小游戏】安装 pygame

    pygame下载地址: https://www.lfd.uci.edu/~gohlke/pythonlibs/#pygame 在对应文件夹中cmd,pip进行安装: pip install pygam ...

  5. c/c++实现勇闯地下一百层(重点在于实现重力加速度)

    实现步骤: 一块板的上升 多块随机板的上升 小人随着板上升 小人的左右移动 小人的重力感下落 死亡的判断 记录分数 随着分数增加难度上升 程序中的难点: (1)重力加速度的实现: 精髓就是把小人自由下 ...

  6. 第一次用python写小游戏

    记一次用python开发小游戏的经历 在学习if语句和循环时,突然想起初中时玩过一款叫<黑道圣徒3>的游戏,里面有一个文字冒险的小游戏,看样子能用if实现,就想着把它做出来. 游戏玩法 开 ...

  7. Python 打字小游戏开发,来体验不一样的打字游戏乐趣(第一篇)

    Python 打字小游戏开发,来体验不一样的打字游戏乐趣(第一篇) 前言 游戏素材准备 游戏项目结构 项目里面的类说明 Python 打字小游戏开发,来体验不一样的打字游戏乐趣(第二篇) Python ...

  8. python控制台小游戏_学习编程的好方法——控制台游戏

    本文难度:★☆☆☆☆ 题图:控制台RPG游戏--诛仙剑 by 呆呆的码农 一.前言 在我大知乎,有以下基本日常问题:如何学习C语言? 如何学习C++? 如何学习Python? 如何学习XXXX语言? ...

  9. Python 打字小游戏开发,来体验不一样的打字游戏乐趣(完结篇)

    Python 打字小游戏开发,来体验不一样的打字游戏乐趣(完结篇) 资源下载 完整代码 Python 打字小游戏开发,来体验不一样的打字游戏乐趣(第一篇) Python 打字小游戏开发,来体验不一样的 ...

最新文章

  1. 使用Aspose.Pdf for .NET实现PDF文档到Excel、EPS、SVG等的转换
  2. 入职三天,公司给了100块钱叫我走人
  3. GPU算力免费用?百度AI Studio两周年惊喜活动开启
  4. 10 | 案例篇:系统的软中断CPU使用率升高,我该怎么办?
  5. 微型计算机中存储器分成哪几个等级?它们各有什么特点?用途如何?,《微机原理》复习思考题第十二章存储器.DOC...
  6. 蓝牙连接不上车要hfp_鹅厂又要霸屏,连接四部剧将袭,冲着主创颜值不追不行啦...
  7. 路透社2017年度最佳图片,向你展示地球过去的一年
  8. git 查看代码量_学会这三个命令,你就不再是git只会用三板斧的菜鸟了
  9. Codeforces.612E.Square Root of Permutation(构造)
  10. 『007』MySQL
  11. 派生BOM (Variant Bom)操作
  12. 这么优秀的Excel工具类,你难道不用?
  13. 视频直播平台性能测试
  14. linux7删除lv后文件系统异常,使用c-spoc删除lv后出现怪异异常!(已解决)
  15. 开学第一周,超30所高校系主任选择与百度飞桨联办校赛
  16. 新年了,用python编程设计有意义背景图片的一朵玫瑰花给心爱的人吧
  17. 软件设计师笔记-操作系统基本原理
  18. [2]云计算(一)理解云计算
  19. java二次开发流程,源码修改流程(Hadoop)
  20. 数仓出局,中台已凉,数据湖称王!

热门文章

  1. Codeforces 940 E.Cashback (单调队列,dp)
  2. 【圣诞树】用C语言给女友写一个圣诞树
  3. android中群发短信PendingIntent.getBroadcase的注册广播
  4. 虚拟服务器无限网站个数,无限个网站虚拟空间
  5. 英雄联盟手游超燃测试服务器维护,英雄联盟手游“超燃”测试放号开启!我抽中了,却白高兴一场...
  6. Java中abstract类和abstract方法
  7. 我的U3D 学习之旅
  8. android定时器
  9. 什么是手机的基带电路
  10. 艺术不死,只是以生成 AI 的形式存在