栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python文字游戏:升级、打怪、属性点、装备等(一)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python文字游戏:升级、打怪、属性点、装备等(一)

这是我的一些想法,后面还有改进,大家有什么想法一起分享 

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/994330.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号