Пример #1
0
    def initialize_cave(self, width: int, height: int):
        game_map = GameMap(width=width, height=height)
        game_map.walkable[:] = True
        game_map.transparent[:] = True

        for i in range(height):
            for j in range(width):
                point = Point(x=j, y=i)
                if i == 0 or j == 0 or i == height - 1 or j == width - 1:
                    game_map.place_tile(point, Tile.cave(point=point))

                if random.random() < INITIAL_CHANCE:
                    game_map.place_tile(point, Tile.cave(point=point))

        self.game_map = game_map
Пример #2
0
    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))
Пример #3
0
 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
Пример #4
0
    def isolate_main_cave(self, caves: List[List[Point]]) -> List[Point]:
        if len(caves) == 1:
            return caves[0]

        cave_sort: List[List[Point]] = sorted(caves, key=len, reverse=True)
        largest = cave_sort[0]
        for cave in cave_sort[1:]:
            for point in cave:
                self.game_map.place_tile(point, tile=Tile.cave(point=point))
        return largest
Пример #5
0
def cave(zeros):
    return Tile.cave(zeros)