python自动战斗文字小游戏

python自动战斗文字小游戏,第1张

# -*- coding: utf-8 -*
import time,os,random

#######数据系统的建立
class player:#玩家信息
    def __init__(self,name,maxhp=100,ac=10,speed=1.0,money=0):
        self.name=name
        self.hp=maxhp
        self.maxhp=maxhp
        self.minac=int(ac*0.5)
        self.maxac=int(ac*1.5)
        self.speed=speed
        self.money=money
        self.exp=0
        self.maxexp=100
        self.rank=0
        self.challenge=0
        
    def rankup(self):#升级系统
        self.maxhp+=10+self.rank
        self.minac+=random.randint(2,8)
        self.maxac+=random.randint(4,12)
        self.hp=self.maxhp
        self.speed+=0.1
        self.exp-=self.maxexp
        self.maxexp=int(self.maxexp*1.1)
        self.rank+=1

    def printa(self):#个人信息
        print('【%s】' %self.name)
        print('等级:%d(%d/%d)' %(self.rank,self.exp,self.maxexp))
        print('生命值:%d/%d' %(self.hp,self.maxhp))
        print('攻击力:%d-%d' %(self.minac,self.maxac))
        print('速度:%.1f' %self.speed)
        print('金钱:%d' %self.money)
        print('敌人等级:%d' %self.challenge)
        print()

    def ac(self):#随机
        return random.randint(self.minac,self.maxac)

    def save(self):#保存
        s=self.name+'\n'+str(self.rank)+'\n'+str(self.exp)+'\n'+str(self.maxexp)+'\n'+str(self.hp)+'\n'
        s+=str(self.maxhp)+'\n'+str(self.minac)+'\n'+str(self.maxac)+'\n'+str(self.speed)+'\n'+str(self.money)+'\n'
        s+=str(self.challenge)
        with open('hero.save','w') as f:
            f.write(s)
        print('战士,你的数据保存成功!\n')


#######游戏主系统的建立        
def LOADING():#加载函数
    global hero
    if os.path.exists('hero.save'):
        try:
            with open('hero.save','r') as f:
                d=f.read().split('\n')
            hero=player(d[0])
            hero.rank=int(d[1])
            hero.exp=int(d[2])
            hero.maxexp=int(d[3])
            hero.hp=int(d[4])
            hero.maxhp=int(d[5])
            hero.minac=int(d[6])
            hero.maxac=int(d[7])
            hero.speed=float(d[8])
            hero.money=int(d[9])
            hero.challenge=int(d[10])
            print('欢迎回来,我的战士。\n')
            print()
            return 0
        except Exception as e:
            print('战士,你的存档读取出错:',e)
            print()
            
    hero=player(input('战士,我该如何称呼你?\n'))
 
def EXP(x):#经验获取
    if x<5:
        return -0.198*x+1
    if x>=5:
        return 0.01
    
def FIGHT(A,B):#战斗事件
    global times
    times+=1
    ac=B.ac()
    A.hp-=ac
    print('<%d>\n【%s】攻击【%s】!\n【%s】受到 %d 点伤害!\n【%s】剩余生命值:%d\n' %(times,B.name,A.name,A.name,ac,A.name,A.hp))
    if A.hp<=0:
        return 1
    else:
        return 0
    
    
def BATTLE(who):#进入战斗状态
    global times
    try:
        s2=int(input('我的战士,你想挑战多少等级的怪物?\n'))
    except:
        s2=1
        
    print()
    if s2>0:
        os.system('cls')
        print('挑战【%d】级怪物\n' %s2)
        if who.challenge0 and who.hp>0:
            if monster.speed>who.speed:
                if FIGHT(who,monster):
                    break
                time.sleep(0.5)
                if FIGHT(monster,who):
                    break
                time.sleep(0.5)
            else:
                if FIGHT(monster,who):
                    break
                time.sleep(0.5)
                if FIGHT(who,monster):
                    break
                time.sleep(0.5)
                
        if who.hp>0:
            if monster.money>0:
                print('你成功地击杀了怪物,经验和金钱增加了!\n')
            else:
                print('你成功地击杀了怪物,经验增加了!\n')
            who.exp+=exp
            
            ranktmp=0
            while who.exp>=who.maxexp:
                who.rankup()
                ranktmp+=1
            if ranktmp==1:
                print('【%s】的力量发生了变化!\n' %who.name)
            elif ranktmp>1 and ranktmp<100:
                print('【%s】的力量得到了强大的提升!\n' %who.name)
            elif ranktmp>=100:
                print('【%s】一定是我们的救世主!\n' %who.name)
                
            who.money+=monster.money
        else:
            print('很遗憾我的战士,你被怪物杀死了,安息吧,游戏到此结束。\n')
            print()
            return True
    else:
        print('我的战士,这里找不到更弱的怪物了。\n')
    print()
    return False

def CURE(who):#治疗事件
    os.system('cls')
    if who.hp0:
        if who.money>=who.maxhp-who.hp:
            print('在圣光的照耀和保佑下,你恢复如初!\n')
            who.money-=who.maxhp-who.hp
            who.hp=who.maxhp
        else:
            print('由于你的金钱不够,牧师只治疗了你的部分伤势。\n')
            who.hp+=who.money
            who.money=0
    else:
        print('我的战士,你的心灵得到了治愈,愿上帝保佑你,阿门。\n')
    print()


#######加载
LOADING()


gameover=False

#######游戏 *** 作界面
while gameover==False:
    print('A.寻找怪物\nB.寻求治疗\nC.保存存档\nD.查看属性')
    print()
    s=input('我的战士,你接下来有何打算?\n(输入序号执行对应 *** 作)\n')
    print()
#指令的判断
    if s=='A':
        gameover=BATTLE(hero)
    elif s=='B':
        CURE(hero)
    elif s=='C':
        os.system('cls')
        hero.save()
    elif s=='D':
        os.system('cls')
        hero.printa()
    else:
        print("我的战士,我听不清你的要求,再说一次吧,你接下来有何打算?\n")
        s
        
input('---- YOU DIED ----')

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/724927.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-26
下一篇 2022-04-26

发表评论

登录后才能评论

评论列表(0条)

保存