python做游戏文字对战游戏6000字

文字对战游戏

主要的系统分类:

角色系统:种族系统和技能系统

战斗系统:采用回合制

商城系统:游戏的道具贩卖系统

充值系统:充值

各系统功能细化

角色系统--种族系统

分为2大种类:法师和战士

游戏世界有五大属性(、土)

金克木,木克土,土克水,水克火,火克金。

无论战士还是法师都有自己的属性。当一个属性被另一个属性克制的时候,攻击力和防御力都会减弱。

法师系:

属性:五种属性中的一种。对同类属性的道具有加成。

血量值较低 初值较低为战士的75% 血量成长系数1.15

法术攻击高:初值自己设定 成长系数 1.3

魔法值高:初值自己设定 成长系数 1.2

魔防高:初值自己设定 成长系数 1.2

物防低:初值自己设定 成长系数1.1

敏捷稍低:初值自己设定 成长系数1.1

无物理攻击,普通攻击为法伤

战士系:

属性:五种属性中的一种。对同类属性的道具有加成。

血量值较高 初值自己设定 血量成长系数1.25

物理攻击高:初值自己设定 成长系数 1.3

魔法值低:初值自己设定 成长系数 1.1

魔防低:初值自己设定 成长系数 1.1

物防高:初值自己设定 成长系数1.2

敏捷正常:初值自己设定 成长系数1.2

无法术攻击,普通攻击为物理伤害

角色系统--技能系统

两大类:

法师技能和战士技能

法师技能:

烈日灼心:单体伤害为攻击的150%。

光之吟唱:全体伤害为攻击的90%。

战士技能:

晴元霸斩:单体伤害为攻击的150%。

乾离龙杀:全体伤害为攻击的90%。

战斗系统

回合制战斗设置:

战斗开始后

  1. 依据双方目前的敏捷属性设定先手后手
  2. 技能为随机发动 需要消耗魔法值
  3. 伤害计算公式为自定义
  4. 一方血量为0判定胜负
  5. 战斗胜利获得经验值和金币
  6. 经验每增加100,上升一个等级,且玩家生命值回满,多余的经验值累积。
  7. 道具对玩家有增益效果,等级越高,增益效果越明显,自定义;与玩家职业相匹配,增益效果越明显。属性相克攻击力越高。
  8. 每次战斗敌人为随机出现(数量不定,1-5),名字随机(可提供名字列表,供随机出现),但(总)等级与玩家基本持平,且随机携带道具。
  9. 每次战斗完毕,自动存储玩家的当前的等级、金币和道具等相关信息,下次启动会先加载玩家的信息。

class Race_System:
        def __init__(self,name,attribute,hp,mp,magic_defense,physical_defense,agile):
            self.name = name#名字
            self.attribute = attribute  #属性
            self.hp = hp  #血量值
            self.mp = mp  #魔法值
            self.magic_defense = magic_defense  #法术防御
            self.physical_defense = physical_defense  #物理防御
            self.agile = agile  #敏捷值

class Master(Race_System):
    def __init__(self, name, attribute, hp, mp, magic_attack,magic_defense, physical_defense, agile):
        super().__init__(name,attribute,hp,mp,magic_defense,physical_defense,agile)
        self.magic_attack = magic_attack
        self.vocation = '法师'

        # def skill(self):
        #     print(self.name,'使用技能烈日灼心,单体伤害为攻击的150%')
        #
        # def skill2(self):
        #     print(self.name,'使用技能光之吟唱:全体伤害为攻击的90%')

class Warrior(Race_System):
    def __init__(self, name, attribute, hp, mp,physical_attack, magic_defense, physical_defense, agile):
        super().__init__(name, attribute, hp, mp,magic_defense, physical_defense, agile)
        self.physical_attack = physical_attack
        self.vocation = '战士'

import random
import time
global player0
global player1

class Master_Attack(Master):
     def attack(self,enemy):
        print(self.name,'当前生命值',self.hp)
        __magic_attack = self.magic_attack
        cs = random.randint(1, 2)
        if cs == 1:
            self.magic_attack = self.magic_attack * 1.5
            self.mp = self.mp - 100
            print(self.name,'微微一动,手印一结,大喝一声,使用技能烈日灼心,形成一轮太阳,发射一道强烈光束攻向',enemy.name,'单体伤害为攻击的150%','打出伤害',self.magic_attack)
        else:
            self.magic_attack = self.magic_attack * 2
            self.mp = self.mp -150
            print(self.name,'眼神凌厉,突然使用技能光之吟唱,白烟升起,四面八方的圣光夹杂着魔音向',enemy.name,'扑面而来,全体伤害为攻击的90%','造成伤害',self.magic_attack)
        sh = self.magic_attack - self.magic_defense
        print(enemy.name,'护甲为',self.magic_defense,'造成真实伤害',sh)
        enemy.hp = enemy.hp - sh
        if enemy.hp < 0:
            enemy.hp = 0
        print(enemy.name,'剩余血量为',enemy.hp)
class Warrior_Attact(Warrior):
    def attack(self,enemy):
        print(self.name, '当前生命值', self.hp)
        __physical_attack = self.physical_attack
        cs = random.randint(1, 2)
        if cs == 1:
            self.physical_attack = self.physical_attack * 1.5
            self.mp = self.mp - 100
            print(self.name, '哈哈大笑,原地不动,突然凭空消失,冲天而起,使用技能晴元霸斩,剑势如风,快如电光,突然劈向', enemy.name, '单体伤害为攻击的150%', '打出伤害', self.physical_attack)
        else:
            self.physical_attack = self.physical_attack * 2
            self.mp = self.mp - 150
            print(self.name, '怒吼一声,缓缓拔剑,剑光激起,飞速旋转起来,使用技能乾离龙杀,剑势化为一条巨龙冲向', enemy.name, '全体伤害为攻击的90%', '造成伤害', self.physical_attack)
        sh = self.physical_attack - self.physical_defense
        print(enemy.name, '护甲为', self.physical_defense, '造成真实伤害', sh)
        enemy.hp = enemy.hp - sh
        if enemy.hp < 0:
            enemy.hp = 0
        print(enemy.name, '剩余血量为', enemy.hp)

def main():
    while True:
        print("1,选择玩家(不允许切换职业)")
        print("2,进入商城")
        print("3,进入充值")
        print("4,选择装备")
        print("5,玩家信息")
        print("6,进入战斗(需要先选择职业)")
        print("7,退出")
        num = int(input("请输入您的选择:"))
        if num == 1:
            occupation()
            break
        if num == 2:
            mall()
        if num == 3:
            recharge()
        if num == 4:
            mall()
        if num == 5:
            occupation()
        if num == 6:
            occupation()
        else:
            print("请输入正确的选择!")
            continue
dict_vocation = {'T': '法师', 'S': '战士'}
def occupation():
    global player1
    while True:
        name = input("勇士,请为您的角色命名:")
        print("-------------------------------------------------")
        print("T: 法师,伤害高,血量防御低\n"
              "S: 战士,伤害低,血量防御高\n")
        cf = input("%s,请选择您的职业:" % name)
        print("-------------------------------------------------")
        if cf == 'T' or cf == 't':
            player1 = Master_Attack('武则天', '金', 4000, 700, 500, 100, 100, 30)
            break
        elif cf == 'S' or cf == 's':
            player1 = Warrior_Attact('关羽', '木', 5000, 500, 400, 200, 200, 40)
            break
        else:
            print('输入错误,请重新输入:')
        continue
    show_player_info(_player=player1)
    time.sleep(1)
    # 初始化电脑角色

    global player0
    if cf == 'T' or cf == 't':
        player0 = Warrior_Attact('关羽', '木', 5000, 500, 400, 200, 200, 40)
    elif cf == 'S' or cf == 's':
        player0 = Master_Attack('武则天', '金', 4000, 700, 500, 100, 100, 30)
    print("电脑选择了",player0.name,"与你对战")
    show_player_info(_player=player0)

    if player0.agile > player1.agile:
        print("止戈为武,以武会友",player0.name,"请你先出手!")
        duel(_player0=player0, _player1=player1)
    elif player0.agile < player1.agile:
        print(player0.name,"不讲武德,卑鄙的向你发起了偷袭")
        duel(_player0=player1, _player1=player0)

def show_player_info(_player):
    print(_player.name,'是一位',_player.vocation,'\n生命值',_player.hp,_player.attribute,'属性')
    print("****************************************")

def duel(_player0, _player1):
    while True:
        _player1.attack(_player0)
        if _player0.hp <= 0:
            print("******************************")
            print("恭喜%s获得胜利!" % _player1.name)
            break
        print("---------------------------------")
        time.sleep(1)
        _player0.attack(_player1)
        if _player1.hp <= 0:
            print("******************************")
            print("%s赢得了决斗!" % _player0.name)
            break
        print("---------------------------------")
        time.sleep(1)


if __name__ == '__main__':
    main()

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值