用Ruby生成迷宫

3

最近我一直在努力提高我的Ruby技能,并发现了一份关于迷宫生成的漂亮、时髦的演示文稿。

Jamis Buck的演示文稿

我想要实现几个算法,然后生成迷宫的图像文件。

对于工作的第二部分——“生成迷宫的图像”,我感到相当不确定。我想要一个简单的gem,可以让我将我的迷宫映射为图像。

也许不久之后,我还想将整个项目制作成用于Web的Ruby on Rails应用程序。

我该如何将所有这些东西结合起来呢?


生成图像是容易的部分。我建议首先尝试使用RMagick,但可能还有其他选项。一旦您拥有迷宫数据,遍历并输出图像应该很容易。 - muffinista
3个回答

3

使用RMagick非常简单:

require 'rubygems'
require 'RMagick'

maze = <<-MAZE
##############
.............#
############.#
#............#
#.#.########.#
#.#..........#
#.############
MAZE

maze = maze.split("\n").map{|line| line.split('')}

square_size = 50

height = maze.size
width = maze.first.size

img_height = height * square_size
img_width = width * square_size

img = Magick::Image.new(img_width, img_height)

img_width.times do |col|
  img_height.times do |row|
    line_idx = (row/square_size).floor
    char_idx = (col/square_size).floor

    char = maze[line_idx][char_idx]

    color = (char == "#" ? "rgb(0, 0, 0)" : "rgb(255, 255, 255)")

    img.pixel_color(col, row, color)
  end
end

img.write('maze.png')

3

chunky_png宝石肯定是值得尝试的东西。


Jamis实际上使用了ChunkyPNG来创建他在这个主题上的所有博客文章的可视化。 - wvanbergen

1
时间在流逝。Jamis Buck已经完成了一本名为“编程迷宫”的书,它出版在实用书架上。我认为这是您学习Ruby和迷宫的最佳参考资料。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接