Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def __init__(self, name, team, index):
super().__init__(name, team, index)
self.torch = torch
self.controller_state = SimpleControllerState()
self.frame = 0 # frame counter for timed reset
self.brain = -1 # bot counter for generation reset
self.pop = 10 # population for bot looping
self.out = [None] * self.pop # output of nets
self.brain = -1
self.gen = 0
self.pos = 0
self.botList = [] # list of Individual() objects
self.fittest = Fittest() # fittest object
self.mutRate = 0.1 # mutation rate
self.distance_to_ball = [10000] * 10000 # set high for easy minumum
self.input_formatter = self.create_input_formatter()
self.output_formatter = self.create_output_formatter()
def get_output(self, packet: GameTickPacket) -> SimpleControllerState:
self.info.read_packet(packet)
self.controls = SimpleControllerState()
if self.timer == 0.0:
self.csign = random.choice([-1, 1])
# this just initializes the car and ball
# to different starting points each time
c_position = Vector3(random.uniform(-1000, 1000),
random.uniform(-4500, -4000),
25)
car_state = CarState(physics=Physics(
location=c_position,
velocity=Vector3(0, 1000, 0),
rotation=Rotator(0, 1.5 * self.csign, 0),
angular_velocity=Vector3(0, 0, 0)
))
self.bsign = random.choice([-1, 1])
b_position = Vector3(random.uniform(-3500, -3000) * self.bsign,
random.uniform(-1500, 1500),
random.uniform( 150, 500))
def vec3_to_Vector3(vec: vec3) -> Vector3:
return Vector3(vec[0], vec[1], vec[2])
def begin(self):
self.car = CarState(Physics(Vector3(), Rotator(), Vector3(), Vector3()))
self.opponent = CarState(Physics(Vector3(), Rotator(), Vector3(), Vector3()))
self.ball = BallState(Physics(Vector3()))
self.gameinfo = GameInfoState()
self._changed = False
def ball_stop(self):
self._changed = True
self.ball.physics.angular_velocity = Vector3(0, 0, 0)
self.ball.physics.velocity = Vector3(0, 0, 0)
def reset(self):
"""Resets game data after each genome"""
ball_state = BallState(Physics(velocity=Vector3(0, 0, 0), location=Vector3(self.pos, 5000, 3000),
angular_velocity=Vector3(0, 0, 0)))
car_state = CarState(jumped=False, double_jumped=False, boost_amount=33,
physics=Physics(velocity=Vector3(0, 0, 0), rotation=Rotator(45, 90, 0),
location=Vector3(0.0, -4608, 500), angular_velocity=Vector3(0, 0, 0)))
game_info_state = GameInfoState(game_speed=1)
game_state = GameState(ball=ball_state, cars={self.index: car_state}, game_info=game_info_state)
self.set_game_state(game_state)
def reset(self):
# RESET TRAINING ATTRIBUTES AFTER EACH GENOME
ball_state = BallState(Physics(velocity=Vector3(0, 0, 0), location=Vector3(self.pos, 5000, 3000),
angular_velocity=Vector3(0, 0, 0)))
car_state = CarState(jumped=False, double_jumped=False, boost_amount=33,
physics=Physics(velocity=Vector3(0, 0, 0), rotation=Rotator(45, 90, 0),
location=Vector3(0.0, -4608, 500), angular_velocity=Vector3(0, 0, 0)))
game_info_state = GameInfoState(game_speed=1)
game_state = GameState(ball=ball_state, cars={self.index: car_state}, game_info=game_info_state)
self.set_game_state(game_state)
def car_stop(self):
self._changed = True
self.car.physics.angular_velocity = Vector3(0, 0, 0)
self.car.physics.velocity = Vector3(0, 0, 0)
self.car.physics.rotation = Rotator(0, None, 0)
def make_game_state(self, rng: SeededRandomNumberGenerator) -> GameState:
return GameState(
ball=BallState(physics=Physics(
location=Vector3(0, 0, 100),
velocity=Vector3(0, 0, 0),
angular_velocity=Vector3(0, 0, 0))),
cars={
0: CarState(
physics=Physics(
location=Vector3(0, 2000, 0),
rotation=Rotator(0, -pi / 2, 0),
velocity=Vector3(0, 0, 0),
angular_velocity=Vector3(0, 0, 0)),
jumped=False,
double_jumped=False,
boost_amount=100)
},
boosts={i: BoostState(0) for i in range(34)},
)
def begin(self):
self.car = CarState(Physics(Vector3(), Rotator(), Vector3(), Vector3()))
self.opponent = CarState(Physics(Vector3(), Rotator(), Vector3(), Vector3()))
self.ball = BallState(Physics(Vector3()))
self.gameinfo = GameInfoState()
self._changed = False