2017-02-28 26 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' metod可以是'@tree_height> = 15',沒有理由做「如果 then true else false「 –

回答

1

您必須修改OrangeTree類的firstYear方法來獲得橙色的高度和數量遞增的parametre,並從方法返回時,樹高達到一定值。

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

該程序的要求是每年爲樹的高度和水果增加值預定義的值。所以我不能將這些值設置爲參數。 –