[python课程设计]魔塔文字游戏分享3

欢迎回来,代码终于要全部写完了,这篇文章主要就是游戏主体部分了(全都是一片片代码)。游戏的主体是一个大循环,而游戏主要事件就是探险,探险又包括打怪和开宝箱。因为重复性太高,我将打怪和开宝箱写入了函数,以方便调用。此外还有拾取道具和装备,因为道具栏和装备栏是有上限的,我也将通过函数来实现。

不超过上限拾取装备

def Get_Equipment(a,b):#不超上限拾取装备if len(a)<5:a.append(b)else:print('物品持有上限,请选择丢弃(下标1~5),或不拾取(6)')v = 1for i in a:if v == 6:breakprint(v,end=' ')v+=1i.viewEquipment()try:c = int(input())if c == 6:print('装备已丢弃')elif c < 6:c = int(c)print(a[c-1].Ename+'已丢弃')del a[c-1]a.append(b)else:print('物品默认不拾取,物品已丢弃')except:print('物品默认不拾取,物品已丢弃')

可以看到,我是通过只读五次列表的方式来限制列表读写以实现装备栏上限,而拾取装备是直接替换列表内的值。
物品的拾取也是同样的。

不超过上限拾取物品

def Get_Items(a,b):#不超上限拾取物品if len(a)<5:a.append(b)else:print('物品持有上限,请选择丢弃(下标1~5),或不拾取(6)')v = 1for i in a:if v == 6:breakprint(v,end=' ')v+=1i.viewItems()try:c = int(input())if c == 6:print('装备已丢弃')elif c < 6:c = int(c)print(a[c-1].Iname+'已丢弃')del a[c-1]a.append(b)else:print('物品默认不拾取,物品已丢弃')except:print('物品默认不拾取,物品已丢弃')

通过上面两个代码就能实现游戏中物品栏和装备栏的更新。
写完更新就要来看看获得了。

物品掉落

def GetThing():#物品掉落a = random.randint(1,1000)if a <= 50:Thing =  Disposable_props('小红药')Thing.setZhi(1)return Thingelif a < 100 and a > 50:Thing =  Disposable_props('小蓝药')Thing.setZhi(2)return Thingelif a > 900 and a < 950:Thing = Equipment('优质砍刀',0,2)Thing.setEquipment()return Thingelif a >= 950:Thing = Equipment('优质铁盾',1,2)Thing.setEquipment()return Thingelif a == 520:Thing = Equipment('作者的祝福',2,500)Thing.setEquipment()return Thingelse:print('空空的宝箱,太让人失望了')return 0

物品掉落是用来实现开宝箱的,通过随机数来决定物品的创建。小彩蛋什么的也是可以放在里面的,在那些有趣的数字位置对应来创建些神奇的装备或物品。
不过也可以看到,这里的装备数值变换并不大,但凡有人无聊的玩了很久装备的属性就会显得很拉胯。这里建议可以把英雄的等级以一定的数学关系联系到装备的种类上,装备类里是有品级(pinji)这个属性的,可以通过它来改变装备的数值。

还有一个函数是见怪,毕竟战斗太多了,写在函数里可以使代码间洁点(虽然我写的很臃肿 。

事件:见怪

def MeetMonster():#事件:见怪print('遇到了怪物!')Monster_number = random.randint(1,2)Incident_Monster = CallMonster(Monster_number)Incident_Monster.viewCallMonster()for i in Incident_Monster.CM_list:Fight = FightCalculator()Fight.SaveHero(Tea)Fight.SaveMonster(i)Fight.Fighting()Fight.MonsterEndFight(i)Fight.HeroEndFight(Tea)Incident_Monster.RemoveMonster()Incident_Monster.viewCallMonster()Incident_Monster.Shutdown()

可以看到,基本上全都是类的实例化和类的方法调用,毕竟最复杂的战斗部分已经通过类实现了。

下面就是游戏主体了,一大段长代码正在向你袭来!!!

游戏主体

#游戏主体
print('-----------------------------')
print('欢迎来到魔塔!请随心所欲吧!')
print('-----------------------------')
n = input('请输入你想创建的英雄名:\n')
Tea = Hero(n)
Equips1 = Equipment('砍刀',0)
Equips1.setEquipment()
Equips2 = Equipment('小木盾',1)
Equips2.setEquipment()
Equipments_list = [Equips1,Equips2]#装备栏
Items1 = Disposable_props('小红药')
Items1.setZhi(1)
Items2 = Disposable_props('小蓝药')
Items2.setZhi(2)
Items_list = [Items1,Items2]#物品栏
Skill = Skill()
Skill_state = 3
getjingyan = Jingyan(Tea)
while(1):print('-----------------------------------------------------------------------------')print('可选择的操作有:1 查看英雄 2 查看装备 3查看物品 4故事探险 5退出游戏 6小提示')if Skill_state < 3:Skill_state += 1try:play = int(input())except:print('无效操作,请重新进行操作')continueif play == 1:#英雄查看Tea.viewHero()Skill.studySkill(Tea)Skill.viewSkill(Tea)if Skill_state == 3:print('--技能已冷却,输入yes使用,输入no返回主菜单')uS = input()if uS == 'yes' and Tea.MP >= Skill.Xiaohao:Skill.useSkill(Tea)Skill_state = 0else:print("技能未能成功使用\n")else:print('--技能冷却中')elif play == 2:#装备查看ve = 1for i in Equipments_list:if ve == 6:breakprint(ve,end=' ')ve+=1i.viewEquipment()  #只允许五个物品拥有,待改print('输入1可以进行装备管理,输入0返回主菜单')Equip_next=int(input())if Equip_next == 1:print('输入"throw"+最前方序号 丢弃装备 输入"equip"+最前方序号 安装装备 输入"remove"+最前方序号 卸下装备')print('ps:丢掉的装备可就找不回来了哦')caozuoma = input()try:caozuoma = caozuoma+' 'caozuo = caozuoma[0:len(caozuoma)-2]ma = int(caozuoma[-2:-1])except:passif caozuo == 'throw': del Equipments_list[ma-1]print('操作成功,正在返回主菜单')elif caozuo == 'equip':if Equipments_list[ma-1].Estate == '已装备':print('目标已装备')else:Equipments_list[ma-1].setEstate(Tea)print('操作成功,当前人物面板如下:')Tea.viewHero()elif caozuo == 'remove':if Equipments_list[ma-1].Estate == '未装备':print('目标未装备')else:Equipments_list[ma-1].setEstate(Tea)print('操作成功,当前人物面板如下:')Tea.viewHero()else:print('操作失败,正在返回主菜单')else:passelif play == 3:#物品查看vi = 1for i in Items_list:if vi == 6:breakprint(vi,end=' ')vi+=1i.viewItems()  #只允许五个物品拥有,待改print('输入1可以进行物品管理,输入0返回主菜单')Item_next=int(input())if Item_next == 1:print('输入"throw"+最前方序号 丢弃物品,输入"use"+最前方序号 使用物品')print('ps:丢掉的物品可就找不回来了哦')caozuoma = input()try:caozuoma = caozuoma+' 'caozuo = caozuoma[0:len(caozuoma)-2]ma = int(caozuoma[-2:-1])except:passif caozuo == 'throw': del Items_list[ma-1]print('操作成功,正在返回主菜单')elif caozuo == 'use':Items_list[ma-1].Change(Tea)print('操作成功,当前人物面板如下:')Tea.viewHero()else:print('操作失败,正在返回主菜单')else:passelif play == 4:#事件Shijian = random.randint(1,10)if Shijian > 4:MeetMonster()jingyan = random.randint(Tea.defend*2,Tea.attack*2)print('你回忆刚才的战斗获得了',jingyan,'经验')getjingyan.getJingyan(Tea,jingyan)elif Shijian >= 2 or Shijian <= 3:print('你发现了一个宝箱')Thing = GetThing()if Thing == 0:passelse:try:Thing.viewEquipment()Get_Equipment(Equipments_list,Thing)except:Thing.viewItems()Get_Items(Items_list,Thing)elif Shijian == 1:print('你获得了斯芬克斯的祝福,全属性+5')Tea.setability(5,5,5,5)elif play == 5:#退出游戏print('---------------------------')print('--魔塔无惧冒险者的挑战!---')print('---------------------------')breakelif play == 6:#帮助print('你最多可以持有五件装备和物品哦,交互失败的话,请检查输入词语是否正确哦')else:print('无效操作,请重新进行操作')continue

游戏主体是一个大循环,除了英雄类的实例化,所有的事件都包在这个循环里了,我们来一起看一下。

  • 循环前的准备:包括输出游戏信息;输入英雄姓名,英雄类的实例化;装备列表和物品列表的创建,初始装备和道具的实例化;技能和经验的实例化以及和英雄类的绑定。
  • 循环开始:输出提示信息,有6个有效输入;Skill_state是用来给技能冷却用的,我这里有点bug,看提示、换装备和用物品也是能冷却技能的,建议你写的时候可以尝试修改一下;用try和except来接收输入,以防点错其他字符。
  • 循环选项1:输出英雄的信息,技能的信息(输出前检查是否升级),技能冷却的判断,和技能的使用。
  • 循环选项2:装备的查看,用循环限制装备列表的输出;装备的管理,输入字符串当做指令,通过切片操作读取对应指令,装备的操作实际上就是对装备列表的操作;以及装备的穿脱。
  • 循环选项3:物品的管理,实质上和装备的操作是一样的,我就不再赘述。
  • 循环选项4:本来应该是最长的一个部分,不过细节都被拆分出去了。这里通过随机来选择打怪、开宝箱和获得祝福,获得祝福那个本来是想写脑筋急转弯的,太麻烦了就没写,建议你尝试一下,可以写个函数试试;战斗结束会结算经验。
  • 循环选项5:以退出循环来退出游戏
  • 循环选项6:输出提示,也是彩蛋部分(虽然这里我没写
  • else:排除无效输入

至此,所有的代码都贴完了,大家觉得怎么样呢?我自己是很喜欢的,毕竟这算是我的第一个完整项目了,虽然很小。这是DOS版的魔塔,我还有个基于easygui的窗口版,有缘和大家见了。

如果觉得这篇文章很有意思,欢迎你点赞收藏哦,如果觉得我很有意思,也欢迎关注我哦,我会不定期更新有趣的代码。
我们下次再见。

python课程设计 文字游戏 魔塔3相关推荐

  1. python课程设计 文字游戏 魔塔1

    [python课程设计]魔塔文字游戏分享1 这是我的python课程设计魔塔游戏的DOS版,我觉得我做的还不错( 我太自恋了 .先给大家放个截图看一下效果. 因为代码很多,所以我打算分成几部分来分享给 ...

  2. Python课程设计大作业:获取比赛数据并进行机器学习智能预测NBA的比赛结果

    前言 该篇是之前遗漏的大三上的Python课程设计.刚好今天有空就补发了一篇文章.全部的代码在最后附录中.爬虫类的代码直接全部放到一起了,读者可以自行研究.百度网盘可以私聊我进行获取. 一.课程设计项 ...

  3. 北京交通大学Python课程设计大作业(四)——典籍词频统计

    北京交通大学Python课程设计大作业(四)--典籍词频统计 文章目录 北京交通大学Python课程设计大作业(四)--典籍词频统计 一.词频统计任务介绍 二.典籍词频统计python源代码如下 三. ...

  4. 夏敏捷第29本著作《Python课程设计》(微课视频版)

    Python课程设计-微课视频版 本书以Python 3.7为编程环境,逐步展开Python语言教学,是一本面向广大编程学习者的程序设计类图书.本书以案例为驱动介绍知识点,将Python知识点分解到不 ...

  5. python课程设计博客网_python 课程设计

    原博文 2019-12-09 14:56 − 泉州信息工程学院 软件学院 课程设计报告书 课 程 名: python课程设计 课程设计项目名称: &nb... 相关推荐 2019-09-28 ...

  6. Python课程设计之俄罗斯方块

    Python课程设计之俄罗斯方块 演示效果 下载地址 运行效果 基础页面 界面动起来 生成.移动.固定.变形 消除与得分 演示效果 点击查看 下载地址 点击下载 Python课程设计之俄罗斯方块 软件 ...

  7. Python课程设计:点餐系统

    开篇 来了来了,又到了准备烦人的期末python课程设计的时候了,我相信你一定是摆烂了好久了吧,哈哈哈哈! 被我猜到了吧!不过不要担心!本初学者为大家奉上一个完全应付大作业的小代码啦! 话不多说!正文 ...

  8. 代写python期末作业价格_代写program留学生作业、代做Python程序语言作业、代写Python课程设计作业...

    代写program留学生作业.代做Python程序语言作业.代写Python课程设计作业 日期:2019-11-29 12:55 Completing the Final Project - Pyth ...

  9. Python课程设计:图书馆管理系统

    图书馆管理系统: 基于python系统 引用库进行操作 系统主要实现: 添加书 删除书 借书 还书 查询图书信息 查询马上要归还的图书信息 按照借阅次序排序 源码简介: 对已图书信息进行更新操作,包括 ...

最新文章

  1. MATLAB安装相机驱动
  2. css继承和边框圆角 及 写三角形
  3. mysql 根据地图 坐标 查询 周边景区、酒店
  4. Django从理论到实战(part25)--数据库操作
  5. 表单在线生成 html代码,JSP实现用于自动生成表单标签html代码的自定义表单标签...
  6. [C#] 回眸 C# 的前世今生 - 见证 C# 6.0 的新语法特性
  7. 你离Python大神就差这课树了!建议收藏|Python技能树测评
  8. ms sql server 系统表详细说明
  9. Python:学习笔记之函数的参数和返回值
  10. 大学生面试着装要求(男生篇)
  11. 从二维到三维,可见Web3D技术的重要性,让线上3D产品展示所见即所得
  12. 成功路上并不拥挤,因为坚持的人不多
  13. mac 上格式化磁盘出现MediaKit报告设备上的空间不足以执行请求的解决办法
  14. 转一个PS图像处理技巧大全,很实用!
  15. 我国超级计算机历代,《决战崛起——中国超算强国之路》作品研讨会召开
  16. VS:如何离线使用Nuget安装包
  17. 下列不属于计算机未来发展趋势的是,1-9 关于计算机的发展趋势,下面哪种不是未来发展趋势 ____________ 。_学小易找答案...
  18. 工作狂小废物的桌面[51CTO博客接龙桌面秀]
  19. unity基础知识----unity界面菜单翻译
  20. ld 无法找到项目符号 链接失败_中海南联石化(D30环保优质溶剂油)PowerPoint 2003应用技术 08...

热门文章

  1. 如何从A页面跳转到B页面并且带着很长的参数
  2. Vue2(十一):脚手架配置代理、github案例、插槽
  3. 激发波长近红外二区发光量子点,近红外二区(NIR-II)发射波长(1000-1700 nm)
  4. 非2的幂,离散傅里叶变化DFT的快速实现
  5. hive 修改分区备注_hive修改 表/分区语句
  6. 先学python还是ros_ROS学习入门(抛砖引玉篇)
  7. Activity的数据回传——案例:装备选择
  8. python回归取残差_R/python-回归分析
  9. 关于STC单片机的远程升级
  10. 【JAVA】奥林匹克五环(Olympic rings)