method を用いると、 育て系のゲームを簡潔に作ることができる。 キャラクタを育てる「るびおっち」 rubiocci.rb
#!/usr/koeki/bin/ruby
def cry(ct)
ct.times do
print("ぴよ\t")
end
print("\n")
sleep(0.5)
end
def message(name)
STDERR.print("[1]\t餌をあげる?\n")
STDERR.print("[2]\tおもちゃをあげる?\n")
STDERR.print("[3]\t散歩をする?\n")
end
def fat(perday,exercise)
x = 4 * perday - exercise
return x
end
printf("たまごを拾った。\n")
STDERR.printf("どんな名前にするの?")
name = gets.chomp
if name == ""
then name = "るびおっち"
end
printf("%sという名前になった。\n",name)
happy = 1 # しあわせ度
weight = 1 # 体重
day = 0 # 育てた日付
printf("よく鳴くと大きくなるよ\n")
while true
cry(happy)
message(name)
ans = gets.chomp!.to_i
happy += day * ans
weight += fat(day,ans)
if happy > 4
break
end
if weight > 4
break
end
cry(ans)
day += 1
end
cry(weight) # 最終段階の体重が鳴き声になる
if weight > 8
printf("%sはふくろうみたいになりました\n",name)
elsif weight <= 5
printf("%sはすずめみたいになりました\n",name)
else printf("%sはからすみたいになりました\n",name)
end
ここでは、体重と、幸せ度で、while -- end を抜ける。体重は fat(x) を呼び出すことにより増え、 成長度は鳴く回数を制御する cry(ct) を呼び出すことにより、 鳴いた回数が画面に表示され、キャラクタがどのくらい成長したのか分かる。 また、while -- end を抜けたあとは、体重でエンディングが異なる。
ここでの method のうち、 cry や message は、値をそれ以降の実行文で使用しない。 このようなものは、値を捨てている、と表現する。