def get_next_state(self, player_id: int, state: State, action: int): next_state = State.from_state(state) angle = self.calculate_new_angle(state.get_angle(player_id), action) next_state.set_angle(player_id, angle) position = self.calculate_new_position(state.get_position(player_id), angle) next_state.set_position(player_id, position) self.draw_circle(next_state.get_board(), self.head_colors[player_id], self.get_head_position(position, angle), self.head_radius) self.draw_circle(next_state.get_board(), state.colors[player_id], position, self.player_radius) # TODO: Look into saving in designated memory space by specifying destination of copy. return next_state