Python游戏编程实践2:魔塔

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. 新新魔塔_新新魔塔中文版专区_攻略_秘籍_逗游网

猜你喜欢

转载自blog.csdn.net/quanet_033/article/details/129460884