Maze generation: Difference between revisions

Content added Content deleted
(→‎{{header|Julia}}: update to julia version 0.5)
(Kotlin: some improvements)
Line 3,329: Line 3,329:
class Maze_generator(val x: Int, val y: Int) {
class Maze_generator(val x: Int, val y: Int) {
fun generate(cx: Int, cy: Int) {
fun generate(cx: Int, cy: Int) {
val dirs = arrayOf(*DIR.values()).shuffle()
arrayOf(*DIR.values()).shuffle().forEach {
for (dir in dirs) {
val nx = cx + it.dx
val nx = cx + dir.dx
val ny = cy + it.dy
val ny = cy + dir.dy
if (between(nx, x) && between(ny, y) && maze[nx][ny] == 0) {
if (between(nx, x) && between(ny, y) && maze[nx][ny] == 0) {
maze[cx][cy] = maze[cx][cy] or dir.bit
maze[cx][cy] = maze[cx][cy] or it.bit
maze[nx][ny] = maze[nx][ny] or dir.opposite!!.bit
maze[nx][ny] = maze[nx][ny] or it.opposite!!.bit
generate(nx, ny)
generate(nx, ny)
}
}
Line 3,382: Line 3,381:
val x = if (args.size >= 1) args[0].toInt() else 8
val x = if (args.size >= 1) args[0].toInt() else 8
val y = if (args.size == 2) args[1].toInt() else 8
val y = if (args.size == 2) args[1].toInt() else 8
val maze = Maze_generator(x, y)
with(Maze_generator(x, y)) {
maze.generate(0, 0)
generate(0, 0)
maze.display()
display()
}
}</lang>
}</lang>