最近我一直在努力提高我的Ruby技能,并发现了一份关于迷宫生成的漂亮、时髦的演示文稿。
我想要实现几个算法,然后生成迷宫的图像文件。
对于工作的第二部分——“生成迷宫的图像”,我感到相当不确定。我想要一个简单的gem,可以让我将我的迷宫映射为图像。
也许不久之后,我还想将整个项目制作成用于Web的Ruby on Rails应用程序。
我该如何将所有这些东西结合起来呢?
最近我一直在努力提高我的Ruby技能,并发现了一份关于迷宫生成的漂亮、时髦的演示文稿。
我想要实现几个算法,然后生成迷宫的图像文件。
对于工作的第二部分——“生成迷宫的图像”,我感到相当不确定。我想要一个简单的gem,可以让我将我的迷宫映射为图像。
也许不久之后,我还想将整个项目制作成用于Web的Ruby on Rails应用程序。
我该如何将所有这些东西结合起来呢?
使用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')