最近迷上了玩魔塔。完了几次都没有通关。到后面的层数基本都是血量或者钥匙不够了。所以想到写一个小程序来计算攻击或者防御的提升能使受到来自怪物的伤害减少多少,这样的话就可以很直观的看出该吃红宝石还是蓝宝石,或者买防御和攻击带来的收益了。
写完之后我又想到,这个似乎还可以通过机器学习来实现更加完美的决策,等后面我深入学习机器学习之后再写一个。以下是代码:
1 import math 2 import re 3 import os 4 def compu(): 5 name=input("怪物名字:") 6 a=input("怪物血量:") 7 b=input("怪物攻击:") 8 c=input("怪物防御:") 9 a=int(a) 10 b=int(b) 11 c=int(c) 12 s=0 #收到伤害 13 flag=9999 14 cnt=0 15 data1="" 16 dic={} 17 for i in range(10,100): 18 for j in range(10,100): 19 n1=b-j #怪攻-我防 单次受到怪物攻击伤害 20 n2=i-c #我攻-怪防 21 if n2<=0: #如果怪物的防御大于我的攻击,即打不过,就跳出这次循环 22 continue 23 n3=a/n2-1 #怪物攻击次数 24 n3=math.ceil(n3) #怪物攻击次数向上取整 25 s=n1*n3 26 if s==0 : 27 break 28 key="攻击:"+str(i)+" 防御:"+str(j)+" 受到伤害:" 29 value=s 30 dic[key]=value 31 dic.items() # 得到: dict_items([('a', 1), ('c', 3), ('b', 2)]) 32 L=list(dic.items()) # 得到列表: L=[('a', 1), ('c', 3), ('b', 2)] 33 L.sort(key=lambda x:x[1],reverse=True) # 按列表中,每一个元组的第二个元素从小到大排序。 34 # x代表从L中遍历出的一个元组 35 filename='D:/魔塔怪物/'+name+'.txt' 36 for l in L: 37 data1=data1+' '+str(l) 38 file=open(filename,'w',encoding='gb18030',errors='ignore') #将内容写入文本 39 file.write(data1) 40 file.close() 41 while 1 : 42 compu()