Python游戏编程实践2:魔塔

  • 前言
  • 运行

前言

在逗游游戏盒上玩了一个名叫《魔塔》的游戏,感觉颇有心得体会。“与其临渊羡鱼,不如退而结网”,使用Python语言编写了一个类似的命令行小游戏,为了简单起见,图片、动画、音乐都没有制作。本着开源的精神,源代码已上传到GitCode,有兴趣的朋友不妨下载到电脑上试玩一下。

我的系统是优麒麟22.04.2 LTS(Jammy Jellyfish),Python版本是Python 3.10.6,windows系统也能运行,但有些加粗的字体和字体的颜色显示不正常。

其中用到了一个python的包xlrd,用来读取excel中的数据。这个包安装起来很简单,在命令行输入pip install xlrd即可。

xlrd包详细说明请参考:Python操作Excel表格的模块xlrd的简单介绍_幸福的达哥的博客-CSDN博客

运行

我的游戏不需要安装,只需打开linux的终端,输入run_magic_tower.py即可运行,但还需要data.xls、ColorPrinter.py这两个文件在同一目录下。data.xls是个excel表格,用来存储游戏数据。ColorPrinter.py用来在终端显示彩色字符。

如何在linux终端显示字体颜色请参考:关于如何在终端设置有颜色的字体_终端字体颜色_黄思博呀的博客-CSDN博客

运行成功如下图所示。

python run_magic_tower.py
*******************************************
欢迎来到《魔塔(The magic tower)》。(版本:1.0)
你的英雄: 一位素有侠义之心的剑客。
背景:你听到人们风传说在漆黑的夜晚,一座旷野的高塔中传来隐约的嚎叫声。你决定前去一探究竟。
*******************************************
新游戏(n), 读取进度(o), 退出(x or other):
n
*******************************************
你的位置: 魔塔入口
提示:
1. 魔塔共有16层,将第16层的怪全部清空即获得胜利。
2. 详细帮助请键入【 h 】。
*******************************************
> 英雄属性(c), 英雄装备(e), 显示杀怪记录(x), 背包(u), 商店(m), 保存游戏([), 游戏日志(l), 前进至魔塔第1层(n), 帮助(h), 退出(0):

英雄属性界面:

姓名:【 百里玄一 】
等级:【 1 】,血量:【 1000 】,攻击力:【 10 】,防御力:【 10 】,经验值:【 0/70 】,铜币:【 0 】
闪避率:【 0% 】,重击率(重击倍数):【 3%(3) 】,连击率(连击次数):【 3%(2) 】

英雄装备界面:

基础装备:1. 背心:【 上衣 】, 2. 裤子:【 长裤 】
主要装备:
3. 头盔:【  】, 4. 胸甲:【  】, 5. 手套:【  】, 6. 颈部:【  】
7. 披风:【  】, 8. 腰带:【  】, 9. 鞋子:【  】
10. 盾牌:【  】, 11. 武器:【  】
12. 戒指1:【  】, 13. 戒指2:【  】, 14. 戒指3:【  】
> 查看装备(id), 离开(l):

商店界面:

你的位置: 商店【 等级1 】,在商店已经消费:【 0/500 】.
【 商人 】你好!
> 买药水(b), 买装备(e), 精炼装备(f), 重铸装备(r), 退炼装备(c), 卖(s), 离开(l): e
1. 上衣 (7铜币), 2. 长裤 (7铜币), 3. 小刀 (7铜币), 4. 铁剑 (56铜币), 5. 木盾 (21铜币), 6. 皮帽 (21铜币), 7. 皮靴 (21铜币), 8. 蝙蝠毛披风 (28铜币), 9. 布甲 (7铜币), 10. 皮甲 (56铜币), 11. 皮手套 (28铜币), 12. 蝙蝠毛腰带 (28铜币), 13. 木指环 (247铜币), 14. 塑料项链 (407铜币),
> 买哪个('item_id', or 'item_id num'), 显示商品描述('show item_id'), 离开(l):

战斗是自动进行的:

选中了怪27:【 绿史莱姆 】
开始战斗,计算哪方先攻击:0
英雄先攻击.
【 百里玄一 】对【 绿史莱姆 】造成【 11 】伤害.
【 绿史莱姆 】对【 百里玄一 】造成【 8 】伤害.
【 百里玄一 】对【 绿史莱姆 】造成【 8 】伤害.
【 绿史莱姆 】对【 百里玄一 】造成【 5 】伤害.
【 百里玄一 】对【 绿史莱姆 】造成【 9 】伤害.
【 百里玄一 】发动连击,对【 绿史莱姆 】造成【 9 】额外伤害!
【 绿史莱姆 】对【 百里玄一 】造成【 7 】伤害.
【 百里玄一 】发动重击,对【 绿史莱姆 】造成【 18 】伤害!
绿史莱姆被击败了.
战斗结束.
本次战斗造成总伤害:【 55 】,本次战斗受到总伤害:【 20 】
【 百里玄一 】得到1经验值!!
【 百里玄一 】得到1铜币!!
【 百里玄一 】得到银矿石 1个!!

在商店消费达一定数量可以提升商店等级,从而购买更高级的装备:

你的位置: 商店【 等级7 】,在商店已经消费:【 129296/240000 】.
【 商人 】你好!
> 买药水(b), 买装备(e), 精炼装备(f), 重铸装备(r), 退炼装备(c), 卖(s), 离开(l): e
1. 上衣 (7铜币), 2. 长裤 (7铜币), 3. 小刀 (7铜币), 4. 铁剑 (56铜币), 5. 精制铁剑 (112铜币), 6. 青铜剑 (168铜币), 7. 银剑 (224铜币), 8. 金剑 (280铜币), 9. 骑士剑 (336铜币), 10. 木盾 (21铜币), 11. 铁盾 (49铜币), 12. 银盾 (98铜币), 13. 金盾 (147铜币), 14. 骑士盾 (196铜币), 15. 皮帽 (21铜币), 16. 铁盔 (112铜币), 17. 银盔 (168铜币), 18. 金盔 (224铜币), 19. 剑士皮帽 (280铜币), 20. 皮靴 (21铜币), 21. 铁靴 (42铜币), 22. 银靴 (63铜币), 23. 金靴 (84铜币), 24. 剑士之靴 (105铜币), 25. 蝙蝠毛披风 (28铜币), 26. 狐狸毛披风 (56铜币), 27. 凤凰毛披风 (84铜币), 28. 骑士披风 (112铜币), 29. 旅行者披风 (140铜币), 30. 布甲 (7铜币), 31. 皮甲 (56铜币), 32. 铁甲 (112铜币), 33. 银甲 (168铜币), 34. 金甲 (224铜币), 35. 剑士外套 (280铜币), 36. 皮手套 (28铜币), 37. 铁制护手 (56铜币), 38. 银制护手 (84铜币), 39. 金制护手 (112铜币), 40. 剑士手套 (140铜币), 41. 蝙蝠毛腰带 (28铜币), 42. 狐狸毛腰带 (56铜币), 43. 凤凰毛腰带 (84铜币), 44. 骑士腰带 (112铜币), 45. 剑士腰带 (140铜币), 46. 木指环 (247铜币), 47. 石英指环 (494铜币), 48. 银指环 (741铜币), 49. 金指环 (988铜币), 50. 旅人指环 (1235铜币), 51. 塑料项链 (407铜币), 52. 铜项链 (654铜币), 53. 银项链 (901铜币), 54. 金项链 (1148铜币), 55. 旅人项链 (1395铜币),
> 买哪个('item_id', or 'item_id num'), 显示商品描述('show item_id'), 离开(l):

高级装备具有词条属性,这是模仿《地下城堡3:魂之诗》:

基础装备:1. 背心:【 上衣 】, 2. 裤子:【 长裤 】
主要装备:
3. 头盔:【 剑士皮帽(精炼3) 】, 4. 胸甲:【 剑士外套(精炼3) 】, 5. 手套:【 剑士手套(精炼3) 】, 6. 颈部:【 旅人项链(精炼3) 】
7. 披风:【 旅行者披风(精炼3) 】, 8. 腰带:【 剑士腰带(精炼2) 】, 9. 鞋子:【 剑士之靴(精炼2) 】
10. 盾牌:【 骑士盾(精炼2) 】, 11. 武器:【 骑士剑(精炼2) 】
12. 戒指1:【 旅人指环(精炼2) 】, 13. 戒指2:【 旅人指环(精炼2) 】, 14. 戒指3:【 旅人指环(精炼2) 】
> 查看装备(id), 离开(l): 3
名称:【 剑士皮帽(精炼3) 】,描述:【 武艺精湛的剑士戴的皮帽 】,防御力:【 47 】
精炼等级:【 3/15 】
词条1:【 攻击无视敌方10%防御力 】
词条2:【 血量高于1万,伤害+10% 】

穿戴一身高级装备后,状态瞬间拉满了:

姓名:【 百里玄一 】
等级:【 43 】,血量:【 94285 】,攻击力:【 4216 】,防御力:【 2088 】,经验值:【 21/70 】,铜币:【 20 】
闪避率:【 33% 】,重击率(重击倍数):【 23%(3) 】,连击率(连击次数):【 24%(2) 】
状态1. 敌方目标阵亡后,伤害提升【 30% 】: 剩余【 10 】回合.
状态2. 敌方目标阵亡后,立即恢复【 170 】血量: 剩余【 9999 】回合.
状态3. 闪避率+【 6% 】,重击率+【 4% 】,重击倍数+【 2 】,连击率+【 9% 】,伤害+【 11% 】: 剩余【 9999 】回合.
状态4. 每场战斗中,抵挡1次伤害: 剩余【 9999 】回合.
状态5. 血量高于1万,伤害+【 42% 】: 剩余【 9999 】回合.
状态6. 攻击无视敌方【 15% 】防御力: 剩余【 9999 】回合.
状态7. 防御力高于200,伤害+【 10% 】: 剩余【 9999 】回合.

轻松打败Boss怪:

八爪章鱼被击败了.
战斗结束.
本次战斗造成总伤害:【 85668 】,本次战斗受到总伤害:【 1408 】
【 百里玄一 】得到18经验值!!
【 百里玄一 】得到2715铜币!!
【 百里玄一 】得到银矿石 1个!!
恭喜,你赢了!Final制作者:下唐人
制作工具:Python 3.10.6
运行系统:优麒麟22.04.2 LTS(Jammy Jellyfish)
剧本来源:《魔塔小游戏》,逗游游戏盒
装备设计参考:《地下城堡3:魂之诗》app
制作时间:2023年3月

完整的源代码已经上传到GitCode,链接在这里:下唐人 / magic_tower · GitCode

参考资料:

  1. 新新魔塔_新新魔塔中文版专区_攻略_秘籍_逗游网

Python游戏编程实践2:魔塔相关推荐

  1. Python游戏编程实践3:魔法洞穴2

    Python游戏编程实践3:魔法洞穴2 前言 运行 前言 之前在TapTap上玩了一个名叫<魔法洞穴2>的小游戏,感觉很有意思,就使用Python语言编写了一个类似的命令行小游戏,为了简单 ...

  2. Python游戏编程实践1:鲁蒂亚的世界

    Python游戏编程实践1:鲁蒂亚的世界 前言 运行 前言 在逗游游戏盒上玩了一个名叫<鲁蒂亚的世界>的小游戏,感觉颇有心得体会."与其临渊羡鱼,不如退而结网",使用P ...

  3. python游戏编程入门书籍推荐-游戏编程入门书籍推荐:想要游戏编程尽快入门这些书不要错过...

    游戏编程一直都是编程之中的一大热点,这也是由于游戏本身的火热造成的结果,所以每年都有很多人在关注着游戏编程.介于此小编今天就来将一些好的游戏编程入门书籍推荐给大家,希望对想要了解和学习游戏编程的朋友能 ...

  4. python游戏编程培训

    准备好了吗?我们即将开始激动人心的游戏编程之旅. 或许你之前学习过一点编程,但若是你从没接触过游戏编程,那么你仍然会对游戏程序的运行感到不解.游戏程序不像计算一个公式或谜题,得到答案之后程序就结束了, ...

  5. python游戏编程入门p_Python游戏编程入门 PDF高清完整版

    Python游戏编程入门 PDF高清完整版 作者: 哈伯 (Jonathan S.Harbour) 译者: 李强 出版年: 2015-1-1 页数: 292 装帧: 平装 ISBN: 97871153 ...

  6. python游戏编程书籍-《Python游戏编程快速上手》一1.3 如何使用本书

    本节书摘来异步社区<Python游戏编程快速上手>一书中的第1章,第1.3节,作者: [美]Al Sweigart(斯维加特) 译者: 李强 责编: 陈冀康,更多章节内容可以访问云栖社区& ...

  7. python游戏编程入门-python游戏编程入门

    <Python游戏编程入门> 这些文章负责整理在这本书中的知识点.注意事项和课后习题的尝试实现. 并且对每一个章节给出的最终实例进行分析和注释. 初识pygame:pie游戏 pygame ...

  8. python游戏编程入门 免费-python游戏编程入门 python游戏编程入门课

    python游戏编程入门 python游戏编程入门课 什么是python游戏编程入门?首先我们需要认识什么是Python Python既是一个软件工具包,也是一种语言.Python软件包包含了一个名为 ...

  9. 《Python游戏编程快速上手》第十四章----凯撒密码

    <Python游戏编程快速上手>的第十二章主要讲了笛卡尔坐标系的基本数学知识,我就不重现了:然后第十三章主要是一个笛卡尔坐标系的小应用,这个小应用也是非常简单的,所以我就不重现了. 今天主 ...

最新文章

  1. 使用MOXy 2.5.1快速且有点脏的JSON模式生成
  2. linux服务端搭配win7客户端的frp
  3. 高可用集群技术之corosync应用详解(一)
  4. 就业信息网进行服务器维护,服务器安全武汉大学黄石理工学院就业信息网.pptx...
  5. arp 已知mac找ip_ARP协议修订版
  6. Gamvas Web 0.8.4 发布,JavaScript 游戏引擎
  7. Spring Boot 搭建 Eureka Servrer 单机模式、高可用模式
  8. 鸿蒙安卓生态已经非常完善,鸿蒙前进一小步,生态却完善一大步,解决了替换安卓的第一个问题...
  9. 商品的SPU与SKU的区别
  10. [Win] 免登录百度网盘高速下载器 ENFI下载器 v1.3.1
  11. 夜深人静写算法(六)- 最近公共祖先
  12. Android权限Uri.parse的几种用法
  13. ElasticSerach7.15.2插件中文分词器(IK+pinyin)
  14. 21.炫酷的CSS数字j时钟
  15. 图网络embeding transE及node2vec方法
  16. 刷相关搜索软件_【亚马逊排名算法】搜索加购为什么能提升关键词排名?
  17. mysql1044什么意思_MySQL:1044和1045
  18. linux下keytool生成证书_使用keytool 生成证书
  19. 串口通讯协议和RS-232的介绍以及USB/TTL转232模块的工作原理
  20. MariaDB源码分析——CONNECT类

热门文章

  1. 江苏版M401A原版 刷机ARMBIAN注意要点
  2. 大连市税务局局长赵福增:用区块链打破部门间“信息孤岛”
  3. IT领域技能图谱,技术人升级必备
  4. 温度检测模块 DS18B20 数据解析
  5. 按需量子增强密钥增加了针对网络攻击的安全性
  6. Copy-Paste is All U Need!拥挤目标检测你是如何解决的呢?
  7. Corel Video Studio X5(会声会影)使用注意事项
  8. C++17之随机数生成器
  9. JavaScript网页特效——放大镜(1+X Web前端开发初级 例题)
  10. 世上最健康的作息时间表 七点半起床十一点半睡觉