根据提示 请你分析这个游戏,并计算出杀死敌人的最低等级,然后base64加密它
flag:flag{你的答案} 游戏如下:
#coding=utf-8
import socket,threading
try:
level=open('.level').read()
level=int(level)
except:
level=1
class user():
HP=int(100+(4*level))#血
Danger=int(10+(3*level))#攻击
Defence=int(5+(1*level))#护甲
class npc():
name='穿山甲'
HP=(3**15)
Danger=(3**10)
Defence=100
print('面板\t血量\t攻击力\t防御力\t\n'),
print('玩家 %s\t%s\t%s\t\n'%(user.HP,user.Danger,user.Defence)),
print('怪物 %s\t%s\t%s\t\n'%(npc.HP,npc.Danger,npc.Defence)),
user.Danger=user.Danger-npc.Defence
npc.Danger=npc.Danger-user.Defence
if user.Danger <=0:
user.Danger=1
if npc.Danger <=0:
npc.Danger=1
print("开始战斗".center(41,'^'))
while 1:
npc.HP=npc.HP-user.Danger
print('你对%s造成了%s 怪物剩余血量 %s\t\n'%(npc.name,user.Danger,npc.HP))
user.HP=user.HP-npc.Danger
print('%s对你造成了%s 你剩余血量 %s\t\n'%(npc.name,npc.Danger,user.HP))
if npc.HP<=0 and user.HP<=0:
print('平局!!!')
break
if npc.HP <=0:
print('你赢了!!!,你剩余血量 %s\t\n'%(user.HP)),
break
if user.HP <=0:
print('你死了!!!%s剩余血量 %s\t\n'%(npc.name,npc.HP)),
break
print(("战斗结束 等级+1 您目前等级%s"%(int(level)+1)).center(49,'^'))
open('.level','w').write(str(level+1))
分析游戏 伤害=攻击力 - 防御 剩余HP = 当前HP - 敌方攻击力 如果与穿山甲同归于尽或被穿山甲杀死 等级加一 要想得到杀死穿山甲的最低等级 一遍一遍的试是不可能的 直接写py脚本计算
npchp = 3**15
npcdanger = 3**10
npcdefence = 100
level = 1
while level:
userhp = (100+(4*level))
userdanger = (10+(3*level))
userdefence = int(5+(1*level))
#计算伤害
userdanger = userdanger-npcdefence
npcdangers = npcdanger-userdefence
#刷新计算boss血量
npchps = npchp
#计算hp
abc = 1
while abc:
userhp = userhp-npcdangers
npchps = npchps-userdanger
if userhp<=0 or npchps<=0:
abc = 0
#如果没打赢就升一级
if userhp <= 0 :
level = level + 1
#打败了穿山甲 输出此时的等级并跳出循环
if npchps <=0 and userhp > 0:
print(level)
break
#输出flag
import base64
#level = str(level)
level = str(level).encode('utf-8')
flag = base64.b64encode(level).decode('utf-8')
print('flag{%s}'%(flag))
直接得到杀死穿山甲的最低等级:56390 flag:flag{NTYzOTA=}