示例#1
0
 def getCavernTileMap(self):
     TileMap = []
     #chance = 0.6
     map, caverns = CellularAutomata.generateMap(self.cellwidth,
                                                 self.cellheight,
                                                 chance=0.6,
                                                 steps=6,
                                                 birthLimit=3,
                                                 deathLimit=4)
     for rows in range(0, len(map)):
         row = []
         for columns in range(0, len(map[0])):
             if not map[rows][columns]:
                 row.append(
                     Tiles.Tile((columns, rows),
                                self.tileSheet.returnTile(0, 0), False))
             else:
                 #row.append(Tiles.AnimTile((columns,rows), self.animTileSheet,True,0,3,10))
                 row.append(
                     Tiles.Tile((columns, rows),
                                self.tileSheet.returnTile(2, 0), True))
         TileMap.append(row)
     #Adds the tile that goes to next level
     EndLocation = choice(caverns[-2])
     TileMap[EndLocation[0]][EndLocation[1]] = Tiles.LevelTile(
         (EndLocation[1], EndLocation[0]), self.tileSheet.returnTile(3, 0),
         False)
     return TileMap, caverns
示例#2
0
def generateCellularAutomata(width: int = 40,
                             height: int = 30,
                             chance: float = 0.65,
                             steps: int = 2,
                             birthLimit: int = 3,
                             deathLimit: int = 4) -> list:
    '''Returns a tilemap from the CellularAutomata method'''
    arr, caverns = CellularAutomata.driver(width, height, chance, steps,
                                           birthLimit, deathLimit)

    tileMap = []
    # Iterates over the 2D list returned by the cellauto algorithm
    # and places a non collidable tile at a true value, and a collidable
    # tile at the false values
    for y in range(0, len(arr)):
        row = []
        for x in range(0, len(arr[0])):
            if arr[y][x] == True:
                row.append(
                    Tiles.Tile(gridPos=(x, y),
                               collision=False,
                               sprite=spritesheet.returnSprite(0, 0)))
            elif arr[y][x] == False:
                row.append(
                    Tiles.Tile(gridPos=(x, y),
                               collision=True,
                               sprite=spritesheet.returnSprite(1, 0)))
            '''
            elif arr[y][x] == 'corridoor':
                row.append(Tiles.Tile(gridPos=(x, y),
                                      collision=False,
                                      sprite=spritesheet.returnSprite(0, 2)))
            '''
        tileMap.append(row)
    y, x = choice(caverns[-1])
    tileMap[y][x] = Tiles.LevelTile(gridPos=(x, y),
                                    sprite=spritesheet.returnSprite(0, 2))
    return tileMap, caverns