我正在尝试创建一个图像生成器,它可以创建一个带有参数的网格,其中 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
阻止它工作的命令行代码有什么问题?