我正在尝试创建一个图像生成器,它可以创建一个带有参数的网格,其中x表示行,y表示列作为坐标。我现在要做的是通过输入命令获取命令行来控制程序我将调用的方法的参数到目前为止我的代码如下所示。我能做些什么才能让它发挥作用。例如,要创建新图像I,5,6。
命令行:
require 'pixel'
print "Hello please enter a command in : >> "
command = gets.chomp
case command
when "i", "I"
i = Image.new(m=5,n=6)
when "c","C"
i.clear
when "l","L"
i.add_color(x,y,c)
when "v","V"
i.vertical(x,y1,y2,c)
when "h","H"
i.horizontal(x1,x2,y,c)
when "f","F"
i.fill(x,y,c)
when "s","S"
i.s
when "x","X"
exit
else
puts "Opps command does not exist"
exit
end
Ruby图像生成器代码:
class Image
attr_accessor :m,:n
def initialize(m,n)
@m = m
@n = n
@image_array = Array.new(@n) {Array.new(@m).fill{(0)}}
end
def add_color(x,y,c)
x = x
y = y - 2
@image_array[x][y] = c
end
def vertical(x,y1,y2,c)
x = x - 1
y1 = y1 - 1
y2 = y2 - 1
@image_array[y1..y2].each {|row| row[x] = c }
end
def horizontal(y,x1,x2,c)
y = y - 2
z = x2...x1
@image_array[y].fill(c,z)
end
def fill(x,y,c)
x = x - 1
y = y - 1
s = x * y
s.upto(1).to_a
y.upto(1).to_a
@image_array[1..s].each {|r| r[y]=c }
@image_array[1..s].fill(c,s)
end
def s
p @image_array
end
def clear(m,n)
@image_array = Array.new(@n) {Array.new(@m).fill{(0)}}
end
end
命令行代码中有什么问题阻止它工作?
答案 0 :(得分:0)
您发现命令行参数位于全局变量/数组ARGV
中http://www.ruby-doc.org/docs/ProgrammingRuby/html/rubyworld.html
有几个库可以帮助您进行命令行解析。 一个较旧的,已经是标准库的一部分,是optparse。
这里我做了一个如何使用它的例子: http://pleac.sourceforge.net/pleac_ruby/userinterfaces.html
答案 1 :(得分:0)