import random
import time
class guo():
def __init__(self, ID,FTR, POP,GOLD,FOOD,INDUS,ENE):
self.ID=ID
self.FTR = FTR
self.POP = POP
self.GOLD = GOLD
self.FOOD = FOOD
self.INDUS = INDUS
self.ENE = ENE
self.ALIVE=1
self.ATK=1
def ENE_judge(self):
if self in self.ENE[:] :
self.ENE.remove(self)
for ctry in self.ENE[:]:
if ctry.ALIVE==0:
self.ENE.remove(ctry)
def alive_judge(self):
if self.ALIVE==1 and self.POP<=0 :
self.POP=0
self.ALIVE=0
print (self.FTR+'defeat')
def nor_ATK(self):
if self.ATK<=0 :
self.ATK=0
relation={
0:[0,0,0,0,0,0],
1:[0,0,0,0,0,0],
2:[0,0,0,0,0,0],
3:[0,0,0,0,0,0],
4:[0,0,0,0,0,0],
5:[0,0,0,0,0,0]
}
#初始化
guo1=guo(0,'CN',5000,200,0,1.0,[])
guo2=guo(1,'US',5000,200,0,1.0,[])
guo3=guo(2,'JA',5000,200,0,1.0,[])
guo4=guo(3,'EN',5000,200,0,1.0,[])
guo5=guo(4,'DE',5000,200,0,1.0,[])
guo6=guo(5,'IN',5000,200,0,1.0,[])
# ene 初始化
for x in [guo1,guo2,guo3,guo4,guo5,guo6]:
aaa=random.choice([guo1,guo2,guo3,guo4,guo5,guo6])
if aaa !=x and aaa.ALIVE==1:
x.ENE.append(aaa)
x.ENE_judge()
for x in [guo1,guo2,guo3,guo4,guo5,guo6]:
if x.ENE !=[]:
for y in x.ENE:
if x not in y.ENE:
y.ENE.append(x)
for x in [guo1,guo2,guo3,guo4,guo5,guo6]:
print (x)
print (x.ENE)
if x.ENE !=[]:
for j in range(len(x.ENE)):
relation[x.ID][x.ENE[j].ID]=relation[x.ID][x.ENE[j].ID]-50
#执行这个,核心
turn=0
while turn <=9:
#turn start
#grow pop gold
turn+=1
listguo=[guo1,guo2,guo3,guo4,guo5,guo6]
#增长人口
for x in [guo1,guo2,guo3,guo4,guo5,guo6]:
if x.ALIVE==1:
x.GOLD=x.GOLD+int(x.POP*x.INDUS)
x.POP=x.POP+random.randint(1,5)*100
#发展ECO或者ATK
if x.GOLD>1000 and x.ALIVE==1:
xishu=x.GOLD//1000
x.GOLD=x.GOLD-1000*xishu
while xishu>0:
xishu=xishu-1
if random.randint(1,10)>=5:
if random.randint(1,10)>=5:
x.INDUS=x.INDUS+0.01
else:
if random.randint(1,10)>=5:
x.ATK=x.ATK+100
#与非负关系通商
for i in relation.keys():
for j in range(6):
if listguo[i].ALIVE==0 or listguo[j].ALIVE==0:
pass
elif i!=j:
if relation[i][j]>=0:
relation[i][j]=relation[i][j]+5
if listguo[i].INDUS>=listguo[j].INDUS:
listguo[i].GOLD=listguo[i].GOLD+500
else:
listguo[i].GOLD=listguo[i].GOLD+200
elif relation[i][j]<0:
#war
if listguo[j].ALIVE !=0 and listguo[i].ATK>0:
gjl=listguo[i].ATK-listguo[j].ATK
if gjl>0:
listguo[i].ATK=listguo[i].ATK-listguo[j].ATK
listguo[j].ATK=0
listguo[j].POP=listguo[j].POP-gjl
else:
listguo[i].ATK=0
listguo[i].POP=listguo[i].POP+gjl
listguo[j].ATK=listguo[j].ATK-listguo[i].ATK
listguo[i].alive_judge()
listguo[j].alive_judge()
print ('turn'+str(turn))
for x in [guo1,guo2,guo3,guo4,guo5,guo6]:
print (x.FTR,x.POP,round(x.INDUS,2),x.GOLD,x.ATK)
time.sleep(1)
# 包围网
list_ATK=[]
max_num=0
for x in [guo1,guo2,guo3,guo4,guo5,guo6]:
list_ATK.append(x.ATK)
for i in range(len(list_ATK)):
if list_ATK[i]>max_num:
max_num = list_ATK[i]
max_index = i
else:
min_num = list_ATK[i]
min_index = i
for x in [guo1,guo2,guo3,guo4,guo5,guo6]:
aaa=listguo[max_index]
if aaa !=x and aaa.ALIVE==1:
x.ENE.append(aaa)
x.ENE_judge()
for x in [guo1,guo2,guo3,guo4,guo5,guo6]:
if x.ENE !=[]:
for y in x.ENE:
if x not in y.ENE:
y.ENE.append(x)
for x in [guo1,guo2,guo3,guo4,guo5,guo6]:
print (x)
print (x.ENE)
if x.ENE !=[]:
for j in range(len(x.ENE)):
relation[x.ID][x.ENE[j].ID]=relation[x.ID][x.ENE[j].ID]-100
然后再重复执行倒数第二段代码,直到一个胜利者