Skip to content

Instantly share code, notes, and snippets.

@rsky
Last active August 29, 2015 14:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rsky/813c26564b679b62878b to your computer and use it in GitHub Desktop.
Save rsky/813c26564b679b62878b to your computer and use it in GitHub Desktop.
Reconnaissance Calculator
# -*- coding:utf-8 -*-
import math
class Fleet(object):
level = 0
ships = []
def __init__(self, level, *ships):
self.level = level
self.ships = ships
def get_total_reconnaissance(self):
reconnaissance = sum(s.get_actual_reconnaissance() for s in self.ships)
reconnaissance -= math.ceil(float(self.level) / 5.0) * 5.0 * 0.61
return reconnaissance
class Ship(object):
reconnaissance = 0
equipments = []
def __init__(self, reconnaissance, *equipments):
self.reconnaissance = reconnaissance
self.equipments = equipments
def get_actual_reconnaissance(self):
reconnaissance = self.reconnaissance
equipment_reconnaissance = 0.0
for e in self.equipments:
reconnaissance -= e.reconnaissance
equipment_reconnaissance += e.get_actual_reconnaissance()
return math.sqrt(reconnaissance) * 1.69 + equipment_reconnaissance
class Equipment(object):
reconnaissance = 0
factor = 0.0
def __init__(self, reconnaissance):
self.reconnaissance = reconnaissance
def get_actual_reconnaissance(self):
return float(self.reconnaissance) * self.factor
class Bomber(Equipment):
factor = 1.04
class Attacker(Equipment):
factor = 1.37
class ReconnaissanceAircraft(Equipment):
factor = 1.66
class ReconnaissanceFloatplane(Equipment):
factor = 2.0
class BomberFloatplane(Equipment):
factor = 1.78
class SmallRadar(Equipment):
factor = 1.0
class LargeRadar(Equipment):
factor = 0.99
class SearchLight(Equipment):
factor = 0.91
def main():
ashigara = Ship(58, ReconnaissanceFloatplane(6), LargeRadar(10))
ohyodo = Ship(112, ReconnaissanceFloatplane(8), LargeRadar(10))
kasumi = Ship(31, SmallRadar(7))
kiyoshimo = Ship(34, SmallRadar(7))
yukikaze = Ship(45, SmallRadar(7))
shimakaze = Ship(45, SmallRadar(7))
fleet = Fleet(115, kasumi, ashigara, ohyodo, yukikaze, shimakaze, kiyoshimo)
print(fleet.get_total_reconnaissance())
if __name__ == '__main__':
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment