2017-02-28 8 views
0

私はオレンジツリーを作成する必要があるスクリプトを作成しています。指定された方法を実行するたびにツリーの高さが上がり、ツリーの年齢が上がり、ツリー上のオレンジ数も増えます増加する。しかし、一定の時間が過ぎると(それは私の責任です)、その木は死んでいるはずです。だから私のプログラムでは、木が15フィート以上あれば死んでしまうはずだと決めました。今では方法を実行するたびに、高さ、年齢、オレンジ数が上がり、高さが15フィートを過ぎると「ツリーは死んでいる」というメッセージが表示されますが、高さは増加し続けます。私はそれが木が死んでしまえばそれを止めたい。また、ユーザーが次の年に行く方法を実行するたびに、別のものを追加するにはどうしたらいいですか?たとえば今年は毎年高さが3ずつ上がり、オレンジ数は4ずつ増え、年齢は1ずつ増えます。オレンジの高さと数を毎年乱数で上げるにはどうすればいいですか? (大きすぎず)ここに私のコードです。シンプルなRubyクラスとオブジェクトプログラム

class OrangeTree 

def initialize 
@tree_height = 0 
@no_oranges = 0 
@tree_age = 0 
end 

def firstYear 

    if @tree_height >= 15 then 
     puts "Tree is dead" 
    end 

    @tree_height = @tree_height + 3 
    puts "Your orange tree is " + @tree_height.to_s + " feet tall!" 

    @tree_age = @tree_age + 1 
    puts "Your orange tree is " + @tree_age.to_s + " year old!" 

    @no_oranges = @no_oranges + 4 
    puts "Your orange tree has " + @no_oranges.to_s + " oranges!" 

end 

def pickOrange 
    if @no_oranges == 0 then 
     puts "You can't pick any oranges yet, you have to wait at least a year!" else 

    puts "How many oranges do you want to taste?" + " Remember you only have " + @no_oranges.to_s + " oranges on your tree!" 
    pick2 = gets.chomp.to_i 
    puts "The oranges taste delicious and very refreshing!" 

    @no_oranges = @no_oranges - pick2 

    end 
    end 

    def isDead 
     if @tree_height >= 15 then 
      return true else 
      return false 
     end 
    end 

     def countOranges 
      puts "Current number of oranges: " + @no_oranges.to_s 
     end 
    end 
+0

ツリーが死んでいて、メソッドが早く終了するようになったら 'return'コールを置くことができます。' isDead'メートも '@tree_height> = 15'にすることができます。 then true else false " –

答えて

1

あなたはparametreとしてインクリメントされるオレンジ色の高さと数を取得し、木の高さが一定値に達したとき、メソッドから戻るためにOrangeTreeクラスであなたのfirstYear方法を変更する必要があります。今

class OrangeTree 

    def initialize 
    @tree_height = 0 
    @no_oranges = 0 
    @tree_age = 0 
    end 

    def firstYear(tree_height_increment, fruit_increment) 

    if @tree_height >= 15 then 
     puts "Tree is dead" 
     return 
    end 

    @tree_height = @tree_height + tree_height_increment 
    puts "Your orange tree is " + @tree_height.to_s + " feet tall!" 

    @tree_age = @tree_age + 1 
    puts "Your orange tree is " + @tree_age.to_s + " year old!" 

    @no_oranges = @no_oranges + fruit_increment 
    puts "Your orange tree has " + @no_oranges.to_s + " oranges!" 
    end 

end 

、毎回あなたがfirstYearメソッドへの呼び出しを行い、あなたは木の高さを上げるしたいと値や果物の値を指定することができます。

+0

プログラムの要件は、ツリーの高さと果物が増加する値が毎年あらかじめ定義されていることです。だから、これらの値をパラメータとして設定することはできません。 –

関連する問題