예제 #1
0
파일: layout.py 프로젝트: Eronarn/Hellmouth
 def place_passages(self):
     if not self.passages:
         return False
     passages = {}
     for which, passage in self.passages.items():
         where, pos = passage
         if not pos:
             dist = r1d(self.size/2) + self.size/2 - 4
             pos = Hexagon.perimeter(self.center, dist, random.choice(0, Hexagon.get_max_index(dist))).next()
             assert False, "Pos: %s" % str(pos)
             coords = Point(pos)
             self.cells[coords] = (dist, Stairs(which, where))
         else:
             coords = Point(pos)
             self.cells[coords] = (None, Stairs(which, where))
         passages[which] = self.cells[coords][1] # The terrain above
     self.passages = passages
예제 #2
0
    def place_passages(self):
        """Place random stairs, then set their positions in a dict."""
        if not self.passages:
            return False
        passages = {}
        perimeter = random.sample([h for h in Hexagon.perimeter(self.center, self.size - self.wall_width)], len(self.passages))

        for which, passage in self.passages.items():
            where, pos = passage
            if not pos:
                index, coords = perimeter.pop()
            # Block off the immediate surroundings.
            for rank, index, coords in Hexagon.area(coords):
                self.cells[coords] = (None, None)
            passages[which] = Path(which, where)
            self.cells[coords] = (None, passages[which])
        self.passages = passages