作成したプログラム
テーマ: 忙しい大学生の体験ゲーム
#!/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