Exemple #1
0
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
Exemple #2
0
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)
Exemple #3
0
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)
Exemple #5
0
def _position_from_json(list):
    return Position(*map(float, list))
Exemple #6
0
 def to_view_position(self, position):
     delta = position - self.position
     return Position(self.__right.dot(delta), self.forward.dot(delta))
Exemple #7
0
 def to_position(index):
     return Position(index % object_width, int(index / object_width))