作成したプログラム
テーマ: 忙しい大学生の体験ゲーム

#!/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