Ejemplo n.º 1
0
    def generateMaze(self, playerIds, prevMaze=None):
        """ Generate a maze for this game. """

        self.maze = MazeAI(self.air, self.doId)
        self.air.createDistributedObject(distObj=self.maze,
                                         zoneId=self.objZone)

        # How many players are we basing this maze on?
        numPlayers = len(playerIds)
        mazeSize = max(numPlayers * Globals.MazeSquaresPerPlayer,
                       Globals.MazeMinSize)
        xsize = math.sqrt(mazeSize)

        # Expand or contract the width of the maze by up to 33%, so
        # it's not always square.
        if random.choice([True, False]):
            xsize += xsize * random.uniform(0, 0.33)
        else:
            xsize -= xsize * random.uniform(0, 0.33)

        xsize = int(math.floor(xsize + 0.5))
        ysize = int(math.floor(mazeSize / xsize + 0.5))

        self.mazeId = self.maze.doId

        self.maze.generateMaze(xsize, ysize, prevMaze=prevMaze)