这是我的python课程设计魔塔游戏的DOS版,我觉得我做的还不错( 我太自恋了 。先给大家放个截图看一下效果。
因为代码很多,所以我打算分成几部分来分享给大家。做这个游戏的时候我才学python没多久,这个代码我也是带着练习的心态写的,所以可能会出现一段没什么太大意义的练习用代码,希望大家不要嫌弃我。
class Hero:#英雄类
def __init__(self,pname='英雄'):
self.name = pname
print('新英雄'+self.name+'诞生了,快去开启你的传说吧!')
self.attack = random.randint(30,40)
self.defend = random.randint(25,35)
self.HP = random.randint(400,500)
self.MP = random.randint(100,150)
self.Rank = 1
self.jingyantiao = 0
def setability(self,a,d,hp,mp):
self.attack += a
self.defend += d
self.HP += hp
self.MP += mp
def viewHero(self):
print('当前英雄等级:',self.Rank)
print('生命值:',self.HP,'\t法力值:',self.MP)
print('攻击力:',self.attack,'\t防御力:',self.defend)
作为游戏的主角,英雄的诞生充满随机性可以使游戏更有趣味,所以我设计英雄类时,只让玩家可以命名,面板什么都是随机的。英雄类主要有:
class Skill:#技能类
def __init__(self):
self.Skill = '回复术'
self.Xiaohao = 50
self.Xiaoguo = 200
def useSkill(self,type):
print(type.name+'使用了'+self.Skill)
type.MP -= self.Xiaohao
print(type.name+'消耗了{}点法力'.format(self.Xiaohao))
type.setability(0,0,self.Xiaoguo,0)
print(type.name+'恢复了{}点生命值'.format(self.Xiaoguo))
def studySkill(self,type):
if type.Rank >= 50:
print(type.name+'已经{}级了'.self.Rank,self.Skill+'进化了')
self.Skill ='大回复术'
self.Xiaohao = 2000
self.Xiaoguo = 10000
print(type.name+'学会了'+self.Skill)
def viewSkill(self,type):
print(type.name+'的技能为'+self.Skill)
唯一的一个技能就是治疗,而且还是战斗外才能使用。想法有过不少,我也想过写个火球术、闪电术之类的,但是用到战斗里太复杂了,我还不够强,写不出来。技能类主要有:
class Disposable_props(Items):#可使用道具类
def __init__(self,name='可使用道具',duration = 1):
super().__init__(name)
self.Iname = name
self.Duration = duration #0短效 1永久 道具效果默认永久
def setZhi(self,dtype):
self.Zhi = random.randint(5,10)
self.dtype = dtype
if self.Duration == 1:
self.Duname = '永久生效道具'
elif self.Duration == 0:
self.Duname = '短效道具'
if self.dtype == 1:
self.dname = '血量恢复'
self.Zhi = self.Zhi * 10
elif self.dtype == 2:
self.dname = '法力值恢复'
self.Zhi = self.Zhi * 5
elif self.dtype == 3:
self.dname = '增加攻击力'
elif self.dtype == 4:
self.dname = '增加防御力'
def Change(self,type):#dtype 1 回血 2 回蓝 3 加攻 4 加防
if self.dtype == 1:
type.setability(0,0,self.Zhi,0)
print('你的血量恢复了{}点'.format(self.Zhi))
elif self.dtype == 2:
type.setability(0,0,0,self.Zhi)
print('你的法力值恢复了{}点'.format(self.Zhi))
elif self.dtype == 3:
type.setability(self.Zhi,0,0,0)
print('你的攻击力增加了{}点'.format(self.Zhi))
elif self.dtype == 4:
type.setability(0,self.Zhi,0,0)
print('你的防御力增加了{}点'.format(self.Zhi))
def viewItems(self):
print(self.Duname+':\t'+self.Iname+'\t功能:'+self.dname+'\t数值:',self.Zhi)
对python类有些了解的小伙伴已经发现这个物品类是带继承的,这是因为我在这里练习了继承类,因为是练习,所以父类我也没有好好开发。(大家别学我
下面是物品父类
class Items:#物品父类
Itemname = '物品'
def __init__(self,name):
self.Itemname = name
物品类因为要和装备类区分,我又叫它可使用道具类。大家可以看到我的代码里有写长效效果和短效效果,是因为后面战斗会引入回合的概念,大厅也有操作回合的概念(用于技能冷却),但是菜鸡如我并没有真的设计一个短效道具,所以加攻加防这些效果都是永久的。代码里也能看出道具的作用就是增加面板,本来我还想设计一次性伤害道具,飞刀什么的,但是和伤害技能一样太麻烦了,我就砍掉了。可使用道具类有:
class Equipment(Items):#装备类
def __init__(self,name='装备',ty = 0,pinji=1):
super().__init__(name)
self.Ename = name
self.typed = ty
self.pinji = pinji
Etypes = ['武器','防具','饰品']
Estate = '未装备'
def setEstate(self,type):
if self.Estate == '未装备':
self.Estate = '已装备'
type.setability(self.addattack,self.adddefend,0,0)
elif self.Estate == '已装备':
self.Estate = '未装备'
type.setability(-1*self.addattack,-1*self.adddefend,0,0)
def setEquipment(self):
self.Etype = self.Etypes[self.typed]
self.addattack = self.pinji * random.randint(30,40)
self.adddefend = self.pinji * random.randint(25,35)
if self.Etype == '武器':
self.adddefend = 0
elif self.Etype == '防具':
self.addattack = 0
def viewEquipment(self):
print(self.Etype+':',self.Ename,'\t攻击力:',self.addattack,'\t防御力:',self.adddefend,'\t',self.Estate)
装备类同样也是继承了无卵用的物品父类。作为装备,它有类型、数值、品级和装备状态等属性。我对武器和防具的设定很简单,武器只加攻击,防具只加防御。大家也看到了饰品,饰品自然是攻防都加。装备类有:
这次就先写这些,之后的怪物类,战斗、开箱等等我们下篇文章再和大家分享。
如果觉得这篇文章很有意思,欢迎你点赞收藏哦,如果觉得我很有意思,也欢迎关注我哦,我会不定期更新有趣的代码。
我们下次再见。