Esempio n. 1
0
    def test_should_prevent_movement_outside_of_map_bounds(self):
        p = interfaces.Position(1, 1)
        o = tiles.Wall(p)
        assert_is(self.map.add(o), None)

        for (x, y) in (
            (-1, 0),
            (9, 9),
            (-1, 9),
        ):
            m = interfaces.Position(x, y)
            assert_raises(errors.InvalidMoveError, self.map.move, o, m)
Esempio n. 2
0
 def load(self, mapa):
     try:
         for item in self.walls:
             item.tile_.remove_node()
         for item in self.doors:
             item.tile_.remove_node()
         for item in self.empty:
             item.tile_.remove_node()
         for item in self.enemies:
             item.tile_.remove_node()
         self.walls.clear()
         self.doors.clear()
         self.empty.clear()
         self.enemies.clear()
         self.start.tile_.remove_node()
         self.end.remove_node()
         self.player.tile_.remove_node()
         self.start = None
         self.end = None
         self.player = None
     except AttributeError:
         pass
     mapa = Level(mapa)
     y = 0
     for line in mapa.board:
         x = 0
         for _tile in line:
             if _tile == "*":
                 tile_ = tiles.Wall(x, y)
                 self.walls.append(tile_)
             if _tile == " ":
                 tile_ = tiles.Empty(x, y)
                 self.empty.append(tile_)
             if _tile == "%":
                 tile_ = tiles.Door(x, y, 2)
                 self.doors.append(tile_)
             if _tile == "X":
                 self.end = Entity(model='cube', color=color.green, position=(x, -y, 0), scale=(1,1,1))
             if _tile == "P":
                 self.start = tiles.Start(x, y)
             if _tile == "@":
                 enemy = entities.Enemy(x, y)
                 self.enemies.append(enemy)
                 tile_ = tiles.Empty(x, y)
                 self.empty.append(tile_)
             x+=1
         y+=1
     self.player = entities.Player(self.start.x, self.start.y)
Esempio n. 3
0
    def test_should_add_obj_to_correct_layer_if_not_given(self):
        p = interfaces.Position(1, 1)
        for (o, layer) in (
            (tiles.Wall(p), tiles.Tile),
            (tiles.EvidencePanel(p), tiles.Tile),
            (monsters.Dalek(p), monsters.Monster),
            (monsters.StaticCamera(p), monsters.Monster),
            (items.HandTeleport(p, 1.0), items.Item),
            (items.RemoteControl(p, 1.0), items.Item),
        ):
            assert_is(self.map.add(o), None)

            assert_is(self.map.find_at_pos(p, layer), o)
            assert_is(o.map, self.map)

            assert_is(self.map.remove(o), None)
            assert_is(self.map.find_at_pos(p, layer), None)
Esempio n. 4
0
    def test_should_remove_obj_from_given_layer(self):
        # almost exactly the same
        p = interfaces.Position(1, 1)
        for (o, layer) in (
            (tiles.Wall(p), tiles.Tile),
            (tiles.EvidencePanel(p), tiles.Tile),
            (monsters.Dalek(p), monsters.Monster),
            (monsters.StaticCamera(p), monsters.Monster),
            (items.HandTeleport(p, 1.0), items.Item),
            (items.RemoteControl(p, 1.0), items.Item),
        ):

            assert_is(self.map.add(o, layer), None)
            assert_is(o.map, self.map)
            assert_is(self.map.find_at_pos(p, layer), o)

            assert_is(self.map.remove(o, layer), None)

            assert_is(o.pos, None)
            assert_is(self.map.find_at_pos(p, layer), None)
Esempio n. 5
0
    def test_should_use_layer_parameter_if_given(self):
        p = interfaces.Position(1, 1)
        p1 = p + (1, 1)
        for (o, layer) in (
            (tiles.Wall(p), tiles.Tile),
            (tiles.EvidencePanel(p), tiles.Tile),
            (monsters.Dalek(p), monsters.Monster),
            (monsters.StaticCamera(p), monsters.Monster),
            (items.HandTeleport(p, 1.0), items.Item),
            (items.RemoteControl(p, 1.0), items.Item),
        ):
            assert_is(self.map.add(o, layer), None)

            assert_equal(self.map.move(o, p1, layer), 0.0)

            assert_is(o.map, self.map)
            assert_is(self.map.find_at_pos(p, layer), None)
            assert_is(self.map.find_at_pos(p1, layer), o)
            assert_equal(o.pos, p1)

            assert_is(self.map.remove(o, layer), None)
            assert_is(self.map.find_at_pos(p, layer), None)
Esempio n. 6
0
 def read(self):
     file = open(self.mapDir + self.maps[self.map])
     map = file.read()
     lines = map.split("\n")
     self.tileList = []
     x = 0
     y = 0
     for y in range(len(lines)):
         nodes = lines[y].split("|")
         for x in range(len(nodes)):
             if nodes[x] == "wall" or nodes[x] == "w":
                 self.node = tiles.Wall(x * 20, y * 20)
                 self.tileList.append(self.node)
             elif nodes[x] == "player" or nodes[x] == "p":
                 self.node = tiles.Player(x * 20, y * 20)
                 self.tileList.append(self.node)
             elif nodes[x] == "steroid" or nodes[x] == "s":
                 self.node = tiles.Steroid(x * 20, y * 20)
                 self.tileList.append(self.node)
             elif nodes[x] == "oestrogen" or nodes[x] == "o":
                 self.node = tiles.Oestrogen(x * 20, y * 20)
                 self.tileList.append(self.node)
Esempio n. 7
0
def setupMap():
    #Return a new map of wall tiles
    return [[tiles.Wall() for y in range(mapy)] for x in range(mapx)]
Esempio n. 8
0
    def test_should_prevent_movement_when_not_added_to_map(self):
        p = interfaces.Position(1, 1)
        o = tiles.Wall(p)

        assert_raises(AssertionError, self.map.move, o, p + (1, 1))
Esempio n. 9
0
 def test_should_prevent_removal_of_obj_not_on_map(self):
     p = interfaces.Position(1, 1)
     o = tiles.Wall(p)
     assert_raises(AssertionError, self.map.remove, o)