def parse_initial(cls, tokens): import mars_math x = {} for i in ['dx', 'dy', 'time_limit', 'min_sensor', 'max_sensor', 'max_speed', 'max_turn', 'max_hard_turn']: x[i] = cls.parse_float(tokens) x['max_turn'] = mars_math.to_radians(x['max_turn']) x['max_hard_turn'] = mars_math.to_radians(x['max_hard_turn']) return x
def setInitial(self, initial): """This is called with initial data""" self.log.debug('received initial data: %r', initial) self.map_size = initial['dx'], initial['dy'] self.time_start = None self.time_limit = initial['time_limit'] self.min_sensor = initial['min_sensor'] self.max_sensor = initial['max_sensor'] self.max_speed = initial['max_speed'] self.max_turn = mars_math.to_radians(initial['max_turn']) self.max_hard_turn = mars_math.to_radians(initial['max_hard_turn']) self.initialized = True
def setTelemetry(self, telemetry): """This is called when telemetry is updated""" self.telemetry_log.debug('set: %r', telemetry) if self.acceleration != telemetry['acceleration']: self.acceleration = telemetry['acceleration'] self.telemetry_log.info('new acceleration: %r', self.acceleration) self.turning = telemetry['turning'] self.position = mars_math.Point(*telemetry['position']) self.velocity = telemetry['velocity'] self.direction = telemetry['direction'] for object in telemetry['objects']: if 'position' in object: object['position'] = mars_math.Point(*object['position']) self.noticeObject(object) self.direction = mars_math.Angle(mars_math.to_radians(telemetry['direction'])) self.vector = mars_math.Vector(self.position, self.velocity, self.direction) self.recordCommunicationsData() # XXX: you can try out different strategies by altering this if self.secondsBehind() < 0.2: print "SECONDS BEHIND", self.secondsBehind() strategies.current_strategy(self) else: print "SKIPPING STEERING THIS UPDATE"
def make_vector(direction_in_degrees, x_pos, y_pos): rads = mars_math.to_radians(float(direction_in_degrees)) return mars_math.Vector(mars_math.Point(x_pos, y_pos), 1, mars_math.Angle(rads))