るびおっち

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 は、値をそれ以降の実行文で使用しない。 このようなものは、値を捨てている、と表現する。

ふくろうになる場合、 すずめになる場合、からすになる場合を、 printf で変数を途中明らかにしながら、それぞれ割り出せ。

基礎プログラミング II / 2007 年度

Madoka Nishimura <madoka@e.koeki-u.ac.jp>