開発環境
- OS X Lion - Apple(OS)
- TextWrangler(Text Editor) (BBEditの機能制限無料版、light版)
- Script言語:Ruby
『初めてのプログラミング 第2版』(Chris Pine 著、長尾 高弘 訳、オライリー・ジャパン、2010年、ISBN978-4-87311-469-9)の 13(新しいクラスの作成と既存クラスの変更), 13.6(練習問題の続き)、対話的ベビードラゴン を解いてみる。
その他参考書籍
- 『プログラミング言語 Ruby』David Flanagan, まつもと ゆきひろ 著 、卜部 昌平 監訳、長尾 高弘 訳、オライリー・ジャパン、2009年、ISBN978-4-87311-394-4)
- Rubyクックブック ―エキスパートのための応用レシピ集
対話的ベビードラゴン
コード(TextWrangler)
sample.rb
#!/usr/bin/env ruby1.9 # -*- coding: utf-8 -*- class Dragon def initialize name @name = name @asleep = false @stuff_in_belly = 10 @stuff_in_intestine = 0 puts "#{@name}が生まれました。" end def feed puts "#{@name}にご飯をあげます。" @stuff_in_belly = 10 passage_of_time end def walk puts "#{@name}をトイレに連れていきます。" @stuff_in_intestine = 0 passage_of_time end def put_to_bed puts "#{@name}を寝かしつけます。" @asleep = true 3.times do passage_of_time if @asleep puts "#{@name}がいびきをかいて、部屋が煙だらけです。" if @asleep end if @asleep @asleep = false puts "#{@name}はゆっくり目覚めます。" end end def toss puts "#{@name}に高い高いをします。" puts "#{@name}が笑ってあなたの眉毛が焦げます。" passage_of_time end def rock puts "#{@name}をやさしくあやします。" @asleep = true puts "#{@name}は少し居眠りをします。" passage_of_time if @asleep @asleep = false puts "しかし、やめると起きてしまいます。" end end private def hungry? @stuff_in_belly <= 2 end def poppy? @stuff_in_intestine >= 8 end def passage_of_time if @stuff_in_belly > 0 @stuff_in_belly = @stuff_in_belly - 1 @stuff_in_intestine = @stuff_in_intestine + 1 else if @asleep @asleep = false puts "#{@name}が突然目を覚まします!" end puts "#{@name}がお腹をすかせています。我慢できなくてあなたをたべました。" exit end if @stuff_in_intestine >= 10 @stuff_in_intestine = 0 puts "うわっ、#{@name}がおもらしを・・・・・・" end if hungry? if @asleep @asleep = false puts "#{@name}が突然目を覚まします!" end puts "#{@name}のお腹が鳴っています。" end if poppy? if @asleep @asleep = false puts "#{@name}が突然目を覚まします!" end puts "#{@name}がうんちのためにしゃがみ込みます。" end end end puts "ベビードラゴンの名前を入力" name = gets.chomp pet = Dragon.new name while true puts "コマンドを入力(f(餌)/w(散歩)/p(寝かしつけ)/t(遊ぶ)/r(あやす))" command = gets.chomp case command when /^\s*$/ then break when 'f' then pet.feed when 'w' then pet.walk when 'p' then pet.put_to_bed when 't' then pet.toss when 'r' then pet.rock else puts 'コマンドを確認してください。' end end
入出力結果(Terminal)
$ ./sample.rb ベビードラゴンの名前を入力 ノーバート ノーバートが生まれました。 コマンドを入力(f(餌)/w(散歩)/p(寝かしつけ)/t(遊ぶ)/r(あやす)) あ コマンドを確認してください。 コマンドを入力(f(餌)/w(散歩)/p(寝かしつけ)/t(遊ぶ)/r(あやす)) $ $ ./sample.rb ベビードラゴンの名前を入力 ノーバート ノーバートが生まれました。 コマンドを入力(f(餌)/w(散歩)/p(寝かしつけ)/t(遊ぶ)/r(あやす)) f ノーバートにご飯をあげます。 コマンドを入力(f(餌)/w(散歩)/p(寝かしつけ)/t(遊ぶ)/r(あやす)) t ノーバートに高い高いをします。 ノーバートが笑ってあなたの眉毛が焦げます。 コマンドを入力(f(餌)/w(散歩)/p(寝かしつけ)/t(遊ぶ)/r(あやす)) w ノーバートをトイレに連れていきます。 コマンドを入力(f(餌)/w(散歩)/p(寝かしつけ)/t(遊ぶ)/r(あやす)) p ノーバートを寝かしつけます。 ノーバートがいびきをかいて、部屋が煙だらけです。 ノーバートがいびきをかいて、部屋が煙だらけです。 ノーバートがいびきをかいて、部屋が煙だらけです。 ノーバートはゆっくり目覚めます。 コマンドを入力(f(餌)/w(散歩)/p(寝かしつけ)/t(遊ぶ)/r(あやす)) r ノーバートをやさしくあやします。 ノーバートは少し居眠りをします。 しかし、やめると起きてしまいます。 コマンドを入力(f(餌)/w(散歩)/p(寝かしつけ)/t(遊ぶ)/r(あやす)) p ノーバートを寝かしつけます。 ノーバートが突然目を覚まします! ノーバートのお腹が鳴っています。 コマンドを入力(f(餌)/w(散歩)/p(寝かしつけ)/t(遊ぶ)/r(あやす)) p ノーバートを寝かしつけます。 ノーバートが突然目を覚まします! ノーバートのお腹が鳴っています。 コマンドを入力(f(餌)/w(散歩)/p(寝かしつけ)/t(遊ぶ)/r(あやす)) p ノーバートを寝かしつけます。 ノーバートが突然目を覚まします! ノーバートのお腹が鳴っています。 ノーバートがうんちのためにしゃがみ込みます。 コマンドを入力(f(餌)/w(散歩)/p(寝かしつけ)/t(遊ぶ)/r(あやす)) p ノーバートを寝かしつけます。 ノーバートが突然目を覚まします! ノーバートがお腹をすかせています。我慢できなくてあなたをたべました。 $
0 コメント:
コメントを投稿