コード例 #1
0
ファイル: NewComplexFactory.py プロジェクト: DanaL/crashRun
 def __merge_rooms(self, _sqrs, _floors):
     _rooms = split_sets(_floors)
     while len(_rooms.keys()) > 1:
         _start = self.__pick_room(_rooms)
         _dir = self.__pick_dir(_start.value)
         r = _start.value[0]+_dir[0]
         c = _start.value[1]+_dir[1]
         
         _reject = False
         while self.__look_ahead(_sqrs, _start, _dir, r, c):
             r += _dir[0]
             c += _dir[1]
             
             if not self.__in_bounds(r,c):
                 _reject = True
                 break
         if _reject: continue
         
         if not self.__check_for_short_hallway(r, c, _dir, _sqrs, _start):
             if self.__vet_door(r, c, _dir, _sqrs, _start):
                 union(_start, _sqrs[r][c])
                 union(_start, _sqrs[r+_dir[0]][c+_dir[1]])
                 if randrange(4) < 3:
                     self._map[r][c] = self.__tf.get_terrain_tile(DOOR)
                 else:
                     self._map[r][c] = self.__floor
         _rooms = split_sets(_floors)
コード例 #2
0
ファイル: ca_cave.py プロジェクト: DanaL/crashRun
    def __join_rooms(self):
        # divide the square into equivalence classes
        for r in range(1,self.__length-1):
            for c in range(1,self.__width-1):
                self.__union_adj_sqr(r,c)

        _nodes = []
        for _row in self.ds_nodes:
            for _node in _row:
                _n = _node.value
                if self.map[_n[0]][_n[1]].get_type() == FLOOR:
                    _nodes.append(_node)
            
        all_caves = split_sets(_nodes)
        
        for cave in all_caves.keys():
            self.join_points(all_caves[cave][0].value)
コード例 #3
0
ファイル: NewComplexFactory.py プロジェクト: DanaL/crashRun
    def __discover_rooms(self):
        _sqrs = []
        for r in range(1, len(self._map) - 1):
            _row = []
            for c in range(1, len(self._map[0]) - 1):
                _row.append(DSNode((r,c, self._map[r][c])))
            _sqrs.append(_row)
            
        _floors = []
        for _row in _sqrs:
            for _item in _row:
                if _item.value[2].get_type() == FLOOR:
                    _floors.append(_item)
                    self.__mark_adjacent(_item, _sqrs)
        
        self.__record_rooms(split_sets(_floors))

        self.__merge_rooms(_sqrs, _floors)