def load_links(path): links = {} for link_json in _load_json_document(os.path.join(path, 'links.json')): key = Position(*link_json['key']) door = Position(*link_json['door']) links[key] = door return links
def move_player(player, map, input, frame_time, speed): movement_sign = (1 if input.forward else -1 if input.backward else 0) if movement_sign == 0: return player movement_delta = player.forward * (movement_sign * speed * frame_time) new_position = Position(player.position.x, player.position.y) x_target = Position(new_position.x + movement_delta.x, new_position.y) new_position = _try_to_move(map, from_=new_position, to=x_target) y_target = Position(new_position.x, new_position.y + movement_delta.y) new_position = _try_to_move(map, from_=new_position, to=y_target) return player._replace(position=new_position)
def test_other_players(): state = initial_state(initial_input, PLAYER, MAP, 3, 5) bengt = Player(name='bengt', position=Position(1.5, 1.5), forward=Direction(0.0, -1.0)) state, _ = handle_event(state, 'player', bengt) state, _ = handle_event(state, 'tick', 0.070) assert state.other_players['bengt'] == bengt
from use_case import * from domain import Direction, initial_input, Map, Material, Position MAP = Map(materials=[ Material.FLOOR, Material.FLOOR, Material.FLOOR, Material.FLOOR, Material.FLOOR, Material.FLOOR, Material.FLOOR, Material.FLOOR, Material.FLOOR ], objects=[], width=3) PLAYER = Player(name='test', position=Position(1.5, 1.5), forward=Direction(0.0, -1.0)) def test_move_forward(): state = initial_state(initial_input, PLAYER, MAP, 3, 5) state, _ = handle_event(state, 'input', initial_input._replace(forward=True)) state, _ = handle_event(state, 'tick', 0.070) assert state.player.position.x == 1.5 assert state.player.position.y < 1.5 assert state.player.forward.x == 0.0 assert state.player.forward.y == -1.0 def test_turn_right(): state = initial_state(initial_input, PLAYER, MAP, 3, 5) state, _ = handle_event(state, 'input', initial_input._replace(turn_right=True)) state, _ = handle_event(state, 'tick', 0.070)
def _position_from_json(list): return Position(*map(float, list))
def to_view_position(self, position): delta = position - self.position return Position(self.__right.dot(delta), self.forward.dot(delta))
def to_position(index): return Position(index % object_width, int(index / object_width))