123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221 |
- """Calculate cost to reach total buidings level"""
- from rival_regions_calc import ConstructionCosts, Building
- PRICES = {
- 'cash': 0.7,
- 'gold': 0.35,
- 'oil': 250,
- 'ore': 220,
- 'diamond': 1700000,
- 'uranium': 2100
- }
- BUILDING_TYPES = {
- 'hospital': Building('hospital'),
- 'military base': Building('military base'),
- 'school': Building('school'),
- 'missile system': Building('missile system'),
- 'power plant': Building('power plant'),
- 'spaceport': Building('spaceport'),
- 'airport': Building('airport')
- }
- def main():
- """Main method"""
- buildings = {
- # palmer
- # 'hospital': 2516,
- # 'military base': 1800,
- # 'school': 2000,
- # 'missile system': 7745,
- # 'power plant': 2275,
- # 'spaceport': 1800,
- # 'airport': 7961
- # oost-nl
- # 'hospital': 2475,
- # 'military base': 1646,
- # 'school': 1565,
- # 'missile system': 4550,
- # 'power plant': 1461,
- # 'spaceport': 201,
- # 'airport': 3750,
- # oost-nl
- 'hospital': 2546,
- 'military base': 1692,
- 'school': 1605,
- 'missile system': 4550,
- 'power plant': 1461,
- 'spaceport': 201,
- 'airport': 3750,
- # noord-nl
- # 'hospital': 2474,
- # 'military base': 1645,
- # 'school': 1564,
- # 'missile system': 1200,
- # 'power plant': 2570,
- # 'spaceport': 4,
- # 'airport': 2305
- }
- build_buildings = {
- 'hospital': 0,
- 'military base': 0,
- 'school': 0,
- 'missile system': 0,
- 'power plant': 0,
- 'spaceport': 0,
- 'airport': 0
- }
- total_buildings = sum(item for item in buildings.values())
- # building_goal = 37520 #5
- building_goal = 60500 #1
- total_price = 0
- required_buildings = building_goal - total_buildings
- power_surplus = 6198
- power_consumption = (total_buildings - buildings['power plant']) * 2
- power_production = buildings['power plant'] * 10
- for i in range(1, required_buildings + 1):
- lowest_building_name = None
- lowest_building_price = 1000000000000000
- if power_consumption > power_production + power_surplus - 2:
- lowest_building_name = 'power plant'
- cc = ConstructionCosts(
- BUILDING_TYPES['power plant'],
- buildings['power plant'] + build_buildings['power plant']
- )
- cc.calculate(1)
- lowest_building_price = sum_building_cost(cc)
- else:
- for building_name in BUILDING_TYPES:
- cc = ConstructionCosts(
- BUILDING_TYPES[building_name],
- buildings[building_name] + build_buildings[building_name]
- )
- cc.calculate(1)
- price = sum_building_cost(cc)
- if price <= lowest_building_price:
- lowest_building_price = price
- lowest_building_name = building_name
- if lowest_building_name == 'power plant':
- power_production += 10
- else:
- power_consumption += 2
- build_buildings[lowest_building_name] += 1
- total_price += lowest_building_price
- total_build = sum(item for item in build_buildings.values())
- total_resources = {
- 'cash': 0,
- 'gold': 0,
- 'oil': 0,
- 'ore': 0,
- 'diamond': 0,
- 'uranium': 0
- }
- print('—'*53)
- for resource_name, price in PRICES.items():
- print('{:8}: {:12,.2f}'.format(resource_name, price))
- for building_name, build in build_buildings.items():
- if build == 0:
- continue
- print('—'*53)
- print('{}: +{}'.format(building_name, build))
- cc = ConstructionCosts(
- BUILDING_TYPES[building_name],
- buildings[building_name]
- )
- cc.calculate(build)
- total_resources['cash'] += cc.cash
- total_resources['gold'] += cc.gold
- total_resources['oil'] += cc.oil
- total_resources['ore'] += cc.ore
- total_resources['uranium'] += cc.uranium
- total_resources['diamond'] += cc.diamond
- print('{:8} {:20,} {:20,} $'.format(
- 'cash', cc.cash,
- round(cc.cash * PRICES['cash'])
- ))
- print('{:8} {:20,} {:20,} $'.format(
- 'gold', cc.gold,
- round(cc.gold * PRICES['gold'])
- ))
- print('{:8} {:20,} {:20,} $'.format(
- 'oil', cc.oil,
- round(cc.oil * PRICES['oil'])
- ))
- print('{:8} {:20,} {:20,} $'.format(
- 'ore', cc.ore,
- round(cc.ore * PRICES['ore'])
- ))
- print('{:8} {:20,} {:20,} $'.format(
- 'uranium', cc.uranium,
- round(cc.uranium * PRICES['uranium'])
- ))
- print('{:8} {:20,} {:20,} $'.format(
- 'diamond', cc.diamond,
- round(cc.diamond * PRICES['diamond'])
- ))
- print('total {:23} {:20,} $'.format(
- building_name,
- round(sum_building_cost(cc))))
- print('—'*53)
- print('total')
- print('{:8} {:20,} {:20,} $'.format(
- 'cash', total_resources['cash'],
- round(total_resources['cash'] * PRICES['cash'])
- ))
- print('{:8} {:20,} {:20,} $'.format(
- 'gold', total_resources['gold'],
- round(total_resources['gold'] * PRICES['gold'])
- ))
- print('{:8} {:20,} {:20,} $'.format(
- 'oil', total_resources['oil'],
- round(total_resources['oil'] * PRICES['oil'])
- ))
- print('{:8} {:20,} {:20,} $'.format(
- 'ore', total_resources['ore'],
- round(total_resources['ore'] * PRICES['ore'])
- ))
- print('{:8} {:20,} {:20,} $'.format(
- 'uranium', total_resources['uranium'],
- round(total_resources['uranium'] * PRICES['uranium'])
- ))
- print('{:8} {:20,} {:20,} $'.format(
- 'diamond', total_resources['diamond'],
- round(total_resources['diamond'] * PRICES['diamond'])
- ))
- print('total {:44,} $'.format(round(total_price)))
- print('—'*53)
- print('buildings')
- print('orginal : {:,}'.format(total_buildings))
- print('build : {:,}'.format(total_build))
- print('total : {:,}'.format(building_goal))
- print('—'*53)
- power_difference = power_production - power_consumption + power_surplus
- print('power')
- print('orignal production : {:6}'.format(buildings['power plant'] * 10))
- print('extra production : {:6}'.format(build_buildings['power plant'] * 10))
- print('total production : {:6}'.format(power_production))
- print('consumption : {:6}'.format(power_consumption))
- print('surplus : {:6}'.format(power_surplus))
- print('difference : {:6}'.format(power_difference))
- def sum_building_cost(cc):
- """Sum building costs"""
- return cc.cash * PRICES['cash'] + \
- cc.gold * PRICES['gold'] + \
- cc.oil * PRICES['oil'] + \
- cc.ore * PRICES['ore'] + \
- cc.diamond * PRICES['diamond'] + \
- cc.uranium * PRICES['uranium']
- if __name__ == "__main__":
- main()
|