0

行の 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

動作を停止するコマンド ライン コードの何が問題になっていますか?

4

2 に答える 2

0

optparse ライブラリを見てみましょう

http://ruby.about.com/od/advancedruby/a/optionparser.htm

于 2012-10-08T23:15:11.120 に答える
0

コマンドライン引数がグローバル変数/配列ARGVにあることがわかります

http://www.ruby-doc.org/docs/ProgrammingRuby/html/rubyworld.html

コマンド ラインの解析に役立つライブラリがいくつかあります。すでに標準ライブラリの一部になっている古いものの 1 つは、optparse です。

ここで、使用方法の例を示しました: http://pleac.sourceforge.net/pleac_ruby/userinterfaces.html

于 2012-10-08T23:05:26.410 に答える