作成したプログラム テーマ: 忙しい大学生の体験ゲーム #!/usr/koeki/bin/ruby # -*- coding: utf-8 -*- require 'time' def cheak_limit(target_time_str) print"とある大学生の1日のスタート!\n" sleep(1) target = Time.parse(target_time_str) if Time.now > target tikoku = (Time.now - target).to_i sleep(4) print"遅刻だあああ!\n" else print"間に合ったあああ\n" end end sleep(2) print "あなた今日何時に来た?(例: 10:00): " toutyaku = gets.chomp cheak_limit(toutyaku) sleep(2) print"1限目の授業は山形地域論だ\n" sleep(2) print"眠いなあ\n" def nemuke loop do print"なにか目の覚めることをしよう\n" print"目を覚ませ!\n" sleep(3) print"1.ツボ押し棒でツボを押す\n" print"2.靴下を逆にはこう\n" print"3.コーヒーを飲む\n" print"4.手のツボをグリグリ\n" nemuke2 = gets.chomp!.to_i if nemuke2 == 1 print"覚醒できないな\n" elsif nemuke2 == 2 print"効果ないな\n" elsif nemuke2 == 3 print"あ?ねむい\n" elsif nemuke2 == 4 print"痛いから目醒めた!\n" break else print"効果あったな\n" end sleep(3) end end nemuke print"次に昼食だああ\n" sleep(3) def eat_lunch print"食堂のご飯を食べて回復しました\n" end def drink_energy print"エナジードリンクを飲んで徹夜コース突入です\n" end def choose print"1.食堂のご飯を食べる\n" print"2.エナジードリンクを飲んで徹夜コース\n" print"あなたはどちらを選択する/\n" choice = gets.chomp!.to_i if choice == 1 eat_lunch elsif choice == 2 drink_energy else print"どちらか選んで\n" sleep(2) choose end end choose def otsukare print"あなた宿題終わったの?(y/n)\n" answer = gets.chomp! if answer == "y" print"\お疲れ様、ゆっくり休んで...!\n" elsif answer == "n" print"頑張って宿題終わらそう\n" else print"yかnで答えて\n" otsukare end end otsukare 実行結果 (例: 10:00): 8:45 とある大学生の1日のスタート! 遅刻だあああ! 1限目の授業は山形地域論だ 眠いなあ なにか目の覚めることをしよう 目を覚ませ! 1.ツボ押し棒でツボを押す 2.靴下を逆にはこう 3.コーヒーを飲む 4.手のツボをグリグリ 4 痛いから目醒めた! 次に昼食だああ 1.食堂のご飯を食べる 2.エナジードリンクを飲んで徹夜コース あなたはどちらを選択する/ 2 エナジードリンクを飲んで徹夜コース突入です あなた宿題終わったの?(y/n) n 頑張って宿題終わらそう プログラムの説明 はじめにrequireはTimeクラスの機能を使用するためにtimeのライブラリを使用する。その次にdef メソッド名(引数リスト)で構文を利用する。Time_parseを使用して Time オブジェクトに変換しています。現在時刻と比較して、遅刻しているかどうかを判定し、結果に応じて遅刻時間またはそれぞれの結果を表示します。今回はユーザに時間を入力してもらえるようなプログラムにしたかったためこのように表示できるように工夫した。次はdef nemukeとメソッドを書き、ユーザから1から4までの選択肢を選んでもらうプログラムを構築した。ここで工夫した点は、loop doを使って最適な答えを選んだ場合のみ次のストーリーに行けるように不適切な答えだった場合は何度も選択できるという構造にした。while trueでもできたのだが、今回のレポート課題であまり使わないメソッドを使いたいと考え構築した。最後にnemukeというメソッドを返した。次の昼食のストーリーのプログラムで、eat_lunchメソッドでは、「食堂のご飯を食べて体力を回復しました。」と表示し、体力を回復する処理をコメントで示しています。drink_energyメソッドでは、「エナジードリンクを飲んで徹夜します。」と表示し、徹夜する処理をコメントで示しています。chooseメソッドはユーザーに対して「1. 食堂のご飯を食べる」「2. エナジードリンクを飲む」の選択肢を表示し、ユーザーに数字を入力させます。 最後のストーリーのプログラムでは、otsukareというメソッドを設定し、宿題が終わったのかユーザに回答してもらう仕組みをつくった。yかnで回答したらotsukareというメソッドが返されるようにした。 感想: fight.rbなどのように複雑なプログラムを作れるようにはなっていませんが、先週休みだった分の遅れは取り戻せたと思います。今週の基礎プログラミングで参考になるプログラムを書いている人のを学んで復習したいと思いました。 添付: def2.rb