#Code to determine the ranking of alliances through an overall score
#Overall score based upon the formula for player overall scores provided by GM Stormcrow
#Adds in members, cities and land claimed
import string
def linecount(fname):
with open(fname) as f:
for i, l in enumerate(f):
pass
return i + 1
class Del:
def __init__(self, keep=string.digits):
self.comp = dict((ord(c),c) for c in keep)
def __getitem__(self, k):
return self.comp.get(k)
DD=Del()
no_alliances = linecount("data.txt")
alliance_scores=[[0 for x in range(15)]for x in range (no_alliances)]
text_alliance_data=open("data.txt", "r")
all_alliance_data =text_alliance_data.readlines()
total_score=0
alliance_names=[0 for x in range (no_alliances)]
trade_scores=[0 for x in range (no_alliances)]
tech_scores=[0 for x in range (no_alliances)]
quest_scores=[0 for x in range (no_alliances)]
magic_scores=[0 for x in range (no_alliances)]
def_scores=[0 for x in range (no_alliances)]
diplo_scores=[0 for x in range (no_alliances)]
build_scores=[0 for x in range (no_alliances)]
attack_scores=[0 for x in range (no_alliances)]
pop_scores=[0 for x in range (no_alliances)]
mem_scores=[0 for x in range (no_alliances)]
land_scores=[0 for x in range (no_alliances)]
city_scores=[0 for x in range (no_alliances)]
overall_scores=[[0 for x in range(3)] for x in range (no_alliances)]
for i in range (0,no_alliances):
for x in range (0,14):
alliance_scores[x]=(all_alliance_data.split("\t")[x])
for x in range (2,14):
alliance_scores[x]=int(alliance_scores[x].translate(DD))
for i in range (0,no_alliances):
for x in range (2,14):
total_score+=alliance_scores[x]
trade_scores=alliance_scores[13]
tech_scores=alliance_scores[12]
quest_scores=alliance_scores[11]
magic_scores=alliance_scores[10]
def_scores=alliance_scores[9]
diplo_scores=alliance_scores[8]
build_scores=alliance_scores[7]
attack_scores=alliance_scores[6]
pop_scores=alliance_scores[5]
city_scores=alliance_scores[4]
mem_scores=alliance_scores[3]
land_scores=alliance_scores[2]
max_pop_score=max(pop_scores)
max_attack_score=max(attack_scores)
max_build_score=max(build_scores)
max_diplo_score=max(diplo_scores)
max_def_score=max(def_scores)
max_magic_score=max(magic_scores)
max_quest_score=max(quest_scores)
max_tech_score=max(tech_scores)
max_trade_score=max(trade_scores)
max_mem_score=max(mem_scores)
max_city_score=max(city_scores)
max_land_score=max(land_scores)
for i in range(0,no_alliances):
trade_effect=(alliance_scores[13])/(max_trade_score)
tech_effect=(alliance_scores[12])/(max_tech_score)
quest_effect=(alliance_scores[11])/(max_quest_score)
magic_effect=(alliance_scores[10])/(max_magic_score)
def_effect=(alliance_scores[9])/(max_def_score)
diplo_effect=(alliance_scores[8])/(max_diplo_score)
build_effect=(alliance_scores[7])/(max_build_score)
attack_effect=(alliance_scores[6])/(max_attack_score)
pop_effect=(alliance_scores[5])/(max_pop_score)
mem_effect=(alliance_scores[3])/(max_mem_score)
land_effect=(alliance_scores[2])/(max_land_score)
city_effect=(alliance_scores[4])/(max_city_score)
topfrac=total_score*(pop_effect+attack_effect+build_effect+diplo_effect+def_effect+magic_effect+quest_effect+tech_effect+trade_effect+mem_effect+land_effect+city_effect)
overall=topfrac/11000
alliance_scores[14]=(int(round(overall, 0)))
overall_scores[2]=(int(round(overall,0)))
overall_scores[1]=alliance_scores[1]
overall_scores= sorted(overall_scores, key=lambda x: x[2], reverse=True)
for i in range (0, no_alliances):
overall_scores[0]=i+1
print("Alliance Leaderboard ")
for i in range (0,no_alliances):
if((len(overall_scores[1])>13)):
if(len(overall_scores[1])>21):
print(overall_scores[0],("\t"),overall_scores[1],("\t"),overall_scores[2])
else:
print(overall_scores[0],("\t"),overall_scores[1],("\t\t"),overall_scores[2])
else:
print(overall_scores[0],("\t"),overall_scores[1],("\t\t\t"),overall_scores[2])
input("")