这是我的一些想法,后面还有改进,大家有什么想法一起分享
import time
#角色类
class player:
def __init__(self,name,LV,exp, EXP,STR, STA, SKI,CRIT, DODGE,BLOCK,weapon, shield, armour, shoes, hp,HP,ATK,DEF):
self.name=name
self.LV = LV
self.hp = hp
self.HP=HP
self.exp = exp
self.EXP = EXP
#基础属性
self.ATK=ATK
self.DEF=DEF
self.STR=STR#力量
self.STA=STA#体力
self.SKI=SKI#敏捷
self.CRIT = CRIT
self.DODGE = DODGE
self.BLOCK = BLOCK
#基础装备
self.weapon = weapon
self.shield = shield
self.armour = armour
self.shoes = shoes
#属性计算
def shuxing(self):
self.HP=self.STA*2+self.STR+10+self.armour.health+10#生命=体力*2+力量+护甲提供值+10
self.hp=self.hp
self.ATK=self.STR * 2 + self.weapon.str * 2 + self.SKI+5#攻击=力量*2+闪避+5
self.STR=self.weapon.str + self.STR
self.STA=self.STA + self.armour.STA+ self.shoes.STA + self.shield.STA
self.DEF=self.STA + self.armour.STA+ self.shoes.STA + self.shield.STA+2
self.SKI=self.SKI + self.shoes.SKI
self.CRIT=self.CRIT+self.weapon.crit+round(self.SKI/15)
self.BLOCK=self.BLOCK+self.shield.block
self.DODGE=self.DODGE+round(self.SKI/15)
return player
# showHero:输出冒险者的面板
def showHero(self):
print('角色:', self.name)
self.showStatus()
time.sleep(1)
self.showEquipment()
return player
#展示属性
def showStatus(self):
time.sleep(1)
print('LV:', self.LV)
time.sleep(0.5)
print('HP:{0}/{1}'.format(self.hp, self.HP))
time.sleep(0.5)
print('攻击:{0}t防御:{1}'.format(self.ATK,self.DEF))
time.sleep(0.5)
print('力量:{0}t体力:{1}t敏捷:{2}'.format(self.STR,self.STA,self.SKI))
time.sleep(0.5)
print('暴击:{0}t格挡:{1}t闪避:{2}'.format(self.CRIT, self.BLOCK,self.DODGE))
time.sleep(0.5)
print('经验:', self.exp, '/', self.EXP)
#展示装备
def showEquipment(self):
time.sleep(0.5)
print('装备:')
time.sleep(1)
print(f"武器:{self.weapon.name}t力量+{self.weapon.str}暴击+{self.weapon.crit}t经验:{self.weapon.exp}/{self.weapon.EXP}")
time.sleep(1)
print(f"盾牌:{self.shield.name}t体力+{self.shield.STA}格挡+{self.shield.block}t经验:{self.shield.exp}/{self.shield.EXP}")
time.sleep(1)
print(f"护甲:{self.armour.name}t体力+{self.armour.STA}生命+{self.armour.health}t经验:{self.armour.exp}/{self.armour.EXP}")
time.sleep(1)
print(f"鞋子:{self.shoes.name}t体力+{self.shoes.STA}闪避+{self.shoes.SKI}t经验:{self.shoes.exp}/{self.shoes.EXP}")
#升级属性点分配
def fenpei(self):
time.sleep(1)
print('获得10点属性值:') # 获得10点属性值
strup = input('力量分配:') # 分配给力量
while True:
while True:
if int(strup) in range(11): # 确定力量的在10以内
staup = input('体力分配:') # 分配给体力
break
else:
strup = input("请重新输入:")
if int(staup) in range(0, 11 - int(strup)):
print('敏捷分配:', 10 - int(strup) - int(staup))
break
else:
staup = input("请重新输入:")
self.STA = self.STA + int(staup)
self.STR = self.STR + int(strup)
self.SKI = self.SKI + 10 - int(staup) - int(strup)
player.shuxing(start) #属性分配完结算到属性
return start
#升级
def lvup(self, exp):
time.sleep(2)
while True:
if exp >= self.EXP:
self.exp = exp - self.EXP
self.EXP = self.EXP * 2
self.LV += 1
print("升级! LV", self.LV)
player.fenpei(self)#升级加属性
time.sleep(1)
else:
print("当前经验:", self.exp, "/", self.EXP)
time.sleep(1)
break
self.hp=self.HP
return start
#装备类,计划武器升级系统:武器命中成功+经验,暴击翻倍,护甲受击成功+经验,鞋子闪避成功+经验,护盾格挡成功+经验
class Equipments():
# 创建武器类
class Weapon:
def __init__(self, name, str, crit, exp, EXP):
self.name = name
self.str = str
self.crit = crit
self.exp = exp
self.EXP = EXP
# 创建盾牌类
class Shield:
def __init__(self, name, STA, block, exp, EXP):
self.name = name
self.STA = STA
self.block = block
self.exp = exp
self.EXP = EXP
# 创建盔甲类
class Armour:
def __init__(self, name, STA, health, exp, EXP):
self.name = name
self.STA = STA
self.health = health
self.exp = exp
self.EXP = EXP
class Shoes:
def __init__(self, name, STA, SKI, exp, EXP):
self.name = name
self.STA = STA
self.SKI = SKI
self.exp = exp
self.EXP = EXP
#初始设置英雄
def initplayer(name):
LV = 0
HP=10
hp=HP
ATK=5
DEF=2
exp = 0
EXP = 10
STR=1
STA=1
SKI=1
CRIT=0
DODGE=0
BLOCK=0
weapon = Equipments.Weapon('新手刀', 1, 1, 0, 10)
shield = Equipments.Shield('新手盾', 1, 1, 0, 10)
armor = Equipments.Armour('新手甲', 1, 1, 0, 10)
shoes = Equipments.Shoes('新手鞋', 1, 1, 0, 10)
start = player(name,LV,exp, EXP,STR, STA, SKI,CRIT, DODGE,BLOCK,weapon, shield, armor, shoes, hp,HP,ATK,DEF)
player.shuxing(start)
return start
#测试
if __name__ == '__main__':
name='sky'
start = initplayer(name)
start.showStatus()
start.lvup(12)
start.showStatus()
start.lvup(20)
start.showStatus()
输出结果为:
LV: 0
HP:10/24
攻击:10 防御:9
力量:2 体力:4 敏捷:2
暴击:1 格挡:1 闪避:0
经验: 0 / 10
升级! LV 1
获得10点属性值:
力量分配:2
体力分配:4
敏捷分配: 4
当前经验: 2 / 20
LV: 1
HP:41/41
攻击:21 防御:16
力量:5 体力:11 敏捷:7
暴击:2 格挡:2 闪避:0
经验: 2 / 20
升级! LV 2
获得10点属性值:
力量分配:4
体力分配:2
敏捷分配: 4
当前经验: 0 / 40
LV: 2
HP:56/56
攻击:36 防御:21
力量:10 体力:16 敏捷:12
暴击:4 格挡:3 闪避:1
经验: 0 / 40
进程已结束,退出代码0



