Beispiel #1
0
    def place_room(
        self,
        start_x: int,
        start_y: int,
        room_width: int,
        room_height: int,
        margin: int,
        ignore_overlap: bool = False,
    ):
        """

        :param start_x: 
        :type start_x: int
        :param start_y: 
        :type start_y: int
        :param room_width: 
        :type room_width: int
        :param room_height: 
        :type room_height: int
        :param margin: 
        :type margin: int
        :param ignore_overlap: 
        :type ignore_overlap: bool
        """
        room = Room(start_x, start_y, room_width, room_height)
        if self.room_fits(room, margin) or ignore_overlap:
            region = self.new_region()
            room.region = region
            for point in room:

                tile = Tile.floor(point)
                self.dungeon.place(point, tile, region)

            self.rooms.append(room)
 def find_tile(self, point: Point) -> Tile:
     label = self.game_map.cave_map[point.x, point.y]
     if label == "CAVE":
         tile = Tile.cave(point)
     elif label == "FLOOR":
         tile = Tile.floor(point)
     else:
         tile = Tile.empty(point)
     return tile
 def remove_small_walls(self, cave: List[Point]) -> List[Point]:
     for i in range(1, self.map_height - 1):
         for j in range(1, self.map_width - 1):
             point = Point(x=j, y=i)
             wall = self.game_map.is_blocked(point)
             if not wall:
                 continue
             if self.game_map.count_one_step_neighbors(point) == 1:
                 cave.append(point)
                 self.game_map.place_tile(point=point,
                                          tile=Tile.floor(point=point))
     return cave
    def cave_smooth_step(self, min_count: int, max_count: int):
        for i in range(1, self.map_height - 1):
            for j in range(1, self.map_width - 1):
                point = Point(x=j, y=i)
                count1 = self.game_map.count_one_step_neighbors(center=point)
                count2 = self.game_map.count_two_step_neighbors(center=point)

                if count1 >= min_count:
                    self.game_map.place_tile(point=point,
                                             tile=Tile.cave(point=point))
                elif count2 <= max_count:
                    self.game_map.place_tile(point=point,
                                             tile=Tile.cave(point=point))
                else:
                    self.game_map.place_tile(point=point,
                                             tile=Tile.floor(point=point))
Beispiel #5
0
def floor(zeros):
    return Tile.floor(zeros)