鄙人python学的不怎么地,游戏源码没研究明白,于是让chatgpt分析了一下
so,通过chatgpt的指导,可以知道有一个.level文件可以改等级,然后用010打开后更改等级,更改等级后保存运行一手,
很明显,改大了,但是具体是多少级呢?总不能一个个试吧,想到了高中时候学的的二分法,同时题目提示用python,写个码?(现学现卖×2)
import math, base64 #调用函数集
def battle(level): #定义变量
HP = 4 * level + 100 #这里其实就是这个游戏逻辑的简化了
ATK = max(3 * level - 90, 1)
M_ATK = max(3 ** 10 - level - 5, 1)
return True if math.ceil(3 ** 15 / ATK) < HP / M_ATK else False
geitaoshenketou = 3 ** 100 # 超大,规定初始等级,尝试就完事了
l = [0, geitaoshenketou]
while True:
if l[1] - l[0] == 1: #二分法部分
res = base64.b64encode(str(l[1]).encode()) #base64解码得到flag
print('flag{' + res.decode() + '}')
break
elif battle(sum(l) // 2):
l = [l[0], sum(l) // 2]
else:
l = [sum(l) // 2, l[1]]
然后我一手运行,得到flag flag{NTYzOTA=}