Example Trippy Maze Generator
ASnake Documentation
Uses cellular automata to generate a maze.
This code requires an actual console, ASnake Code Playground will not work.
Also do not run if flashing lights is an issue!
Code:
import random
from os import system, get_terminal_size
from time import sleep
from platform import system as OSCheck
int consoleLength is get_terminal_size()[0]-1
int consoleHeight is get_terminal_size()[1]//1.2 into int
str os = OSCheck()
clearConsole does
if 'Windows' is os then 'cls' to system
else 'clear' to system
str:
wall is u"\u2588"
notWall is ' '
xb
list:
board ; yb
int:
ybb ; xbb
board is consoleHeight : ybb [random.choice([notWall,notWall,wall]) for xbb in range(0,consoleLength)]
clearConsole
for yb in board:
yb : xb pipe xb,end='' to print
pipe '\n',end='' to print
'original'
clearConsole
genMaze does
int:
change 0 ; count ; iteration ; x ; y
for iteration in pipe 0,iterations to range
change 0
for y in board to len to range
for x in len(board[y]) to range
count 0
if y < len(board)-1:
if board[y+1][x] is wall then count++
if x < len(board[y])-1 and board[y+1][x+1] is wall do count+=mode
if x > 0 and board[y+1][x-1] is wall then count+=mode
if y > 0:
if board[y-1][x] is wall then count++
if x < len(board[y])-1 and board[y-1][x+1] is wall then count+=mode
if x > 0 and board[y-1][x-1] is wall then count+=mode
if x < len(board[y])-1:
if board[y][x+1] is wall then count++
if x > 0 and board[y][x-1] is wall do count++
if board[y][x] is wall:
if groove < count < 4 do nothing
else board[y][x] is notWall then change++
elif count 3 and board[y][x] is notWall:
board[y][x] is wall then change++
if show
clearConsole
for yb in board
yb : xb pipe xb,end='' to print
pipe '\n',end='' to print
0.08 to sleep
if change is 0 then return board
if groove > 0 and iteration is iterations//2 do groove is 0 then mode=1
return board
from list board, int iterations=150, str wall=wall, str notWall=notWall, int mode=1,bool show=True, int groove=0
board is pipe board,mode=1,groove=1 to genMaze
(Potential) Result:
██████████████ ███████████████████████████ █████ █ █ ████████
█ ██ █ █ █ ██ ███ ██ ██
██ █ ██ ████████ █ █ █ █ █ █ ████████████ ██████ ███ █ █ █ █ █ █ █ █ █
█ █ █ █ █ ██████ █ █ █ █ █ █ █ █ █ ████ █ █ ████ █ █
█ █ █ █ ████ █ █ █ █ █ █ ████████ ██████████ █ █ █ █ █ ███████ █
██ ██ █ █ █ ██ ██ ████████ █ █ █ █ █ █ █ █ █ ████ █ █ ███ █
█ █ █ █ █ █ █ █ █ █ █ ██ ████████ █ █ █ ████ █ █ █ █ █ █ █ ████████ █
██ █ █ █ █ ████ █ █ █████ █ █ █ █ █ █ █ █ █ █ █ █ █████ ████ █ █
█ █ █ █ █ █ █ █ █ █ ███████████ █ █ █ █ █ █ █ █ █ ██████ █
█ █ █ █ █████ █ █ █ █████ █ █ █ █ █ █ █ █ █ ███████████ █ █ █ █
█ █ █ █ █ ██ █ █ █ ████ █ ██████ ████ █ █ █ █ █ █ █ █ █ █ █████ █
██ █ █ ██████ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ ██████ █ █ █ █ █ █ ███
█ ██ ██ █ █ █ █ ██ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █
█████ █ ████ █ █ █ █ █ █ █ █ █ ██ █ █ █ ████ █ █ █ █ █ █ █ █ █ █ █ █ ██
█ █ █ ████████ █ █ █ ██ █ █ █ █ █ █ █ █ █ █ ███ █ ███ █ █ █ █ █ █ █ █
██████ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █████ █ █ █ █ █ █ ██
█ █ █ ████████ █ █ █ █ █ █ █ █ █ █ █ █ █ █ ███████████ █ █████ █ █ █
████ █ █ ██ █ █ █ █ █ ████ █ █ █ █ █ ████ █ █ █ ███ █ █ █
█ █ █ █ █ █ █ █ ███ █ █ █ █ █ █ █ █ █ █ █ █ █████████ █ █ █ █ ███ █
██ █ █ ██ █ █ █ █ █ █ █ █ █████ █ █ █ █ ████ █ █ █ █ ████ █ █ █ █
█ ████ █ █ █ █ █ █ ██ █ █ ██ █ █ █ █ █ █ ████ █ █ █████ █ █ █ █ █ █████ █
██ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ ███ █ █ █ █ █ █ ██ █ █ █
█ ████ █ █ █ █ █ █ █ ███ █ █ █ █ █ █ █ █ █ ███████ █████ █ █ █ █ █ █ █ █████ █
█ █ █ █ █ █ █ █ █ ██ █ █ █ █ █ █ █ █████ █ █ █ █ █ █ ██
█ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ ████ █ █ ██████████ █ █ ██ ██ █ ███
█ █ █ █ ██ █ █ ██ █ █ █ █ █ █ █ █ █ █
███ █ █ ███ ██ ███████ ██ █ ██ ███████████ ████ █████