第 7 回 ゼミ紹介 レポート課題 氏名:森桂太 学籍番号:c110190 語学クラス:中国語 コース(系):社会福士コース A. 最高傑作に関する通常のレポート。 a.仕様書(siyou.txt) ==仕様書== 〜企画意図〜 ネコが大好きで、ゲームにしたら面白そうだと思ったから。 ◯遊び方 1.プログラムの本体「neko_ikusei.rb」をダウンロードし、保存します。 2.Ktermの画面を出し、保存したディレクトリ内で「chmod +x neko_ikusei.rb」 と入力します。 これで使用する準備が整います。 3.「./neko_ikusei.rb」を入力すれば、開始できます。 4.あとは表示される質問に従って、自分の解答を入力していくだけです。 --------------------------------------------------------------------------- ※著作権について※ このプログラムは、東北公益文科大学 森桂太が著作権を保有しています。 プログラムの入手・改変・再配布は、自由に行っても構いません。 なお、このプログラムの取り扱いによって生じた問題については責任を負いませんので、注意して下さい。 このプログラムに対する感想・意見・苦情がありましたら、「 c110190@e.koeki-u.ac.jp 」へお願いします。 b、プログラムに関するレポート 1.考えた設定 前回の講義で使った るびおっちdef_rubiocci.rb に if文を加え、更に間違った 入力をした場合の対応も出来るようにし、結果に対する評価を出す設定にした。 2.作成したプログラム(neko_ikusei.rb) #!/usr/koeki/bin/ruby def cry(ct) #メソッド設定。 ct.times do #何度も表示させる。 print("にゃー\t") #ct.times do で表示させる内容。 end #ct.times do を終わらせる。 print("\n") #改行させる。 sleep(0.5) #間を 0.5 秒取る。 end #def を終わらせる。 def message(name) #メソッド設定。 STDERR.printf("%sを世話しよう: \n", name) #()内の指示を name に指定する。 STDERR.print("[1]\t散歩する?\n") STDERR.print("[2]\tおもちゃで遊ぶ?\n") STDERR.print("[3]\t餌をあげる?\n") STDERR.print("[4]\t無視する?\n") STDERR.print("どうしますか?:") end #def を終わらせる。 def fat(perday,exercise) #メソッド設定。 x = 4 * perday - exercise # x は perday を exercise の値で引き、その値に4足し たもの。 printf("%d日目\n",perday) #()内の値は perday の値で表す。 printf("体重増加分 %d\n", x) #()内の値は x の値で表す。 x end #def を終わらせる。 printf("知人にネコを貰った。\n") STDERR.printf("名前はどうする?") #()内の何を入力するかを尋ねる。 name = gets.chomp #()内への入力方法を指定。 if name == "" #もし name に何も入力されなかった 場合、 name = "ルビにゃー" # name は 〜 とするよう指示。 end #if を終わらせる。 printf("%sという名前に決定。\n",name) #()内の内容を name で表示。 happy = 1 # しあわせ度 weight = 1 # 体重 day = 1 # 育てた日付 printf("よく鳴くと大きくなるよ\n") while true #繰り返し。 if happy == 0 #もし happy が 0 ならば break #繰り返しから抜けるよう指示。 end #while を終わらせる。 cry(happy) message(name) ans = gets.chomp!.to_i #答えは数字で入力するよう指示。 cry(ans) print "-" * 80 #見やすい様に - で区切る。 if ans == 1 || ans == 2 || ans == 3 || ans == 4 #もし 1〜4 以外 ならば、 happy += day * ans # happy の値は dayとansを足したもの。 if ans == 4 #もし ans が 4 ならば、 happy = 0 # happy は 0 となるよう指示。 end #if を終わらせる。 printf("しあわせ度 happy=%d\n", happy) #()内の内容を happy で表示。 weight += fat(day,ans) printf("体重 weight=%d\n", weight) #()内の内容を weight で表示。 if happy > 4 #もし happy が 4 以上になったら、 break #繰り返しから抜け出すよう指示。 end #if を終わらせる。 if weight > 4 #もし weight が 4 以上になったら、 break #繰り返しから抜け出すよう指示。 end #if を終わらせる。 day += 1 #繰り返しから抜け出す時の日付表示を調性。 else printf("しあわせ度 happy=%d\n", happy) #()内の内容を happy で表示。 printf("体重 weight=%d\n", weight) #()内の内容を weight で表 示。 end #if を終わらせる。 end #while を終わらせる。 cry(weight) # 最終段階の体重が鳴き声になる printf("%sは", name) # ""内の内容を name で表示。 if ans == 4 #もし ans が 4 だったら、 print("家出した。\n") #()内の内容を表示させる。 elsif weight > 8 print("マンチカンみたいになった") elsif weight <= 5 print("ペルシャネコみたいになった") else print("デブネコみたいになった") end print("\n") print("飼い主の評価は…\n") sleep 1.0 print("結果が出ました。\n") sleep 1.3 print("\n") if ans == 4 # もし ans が 4 だったら、 print("猫を飼う資格なし。\n") #()内の内容を表示させる。 elsif weight > 8 print("愛情たっぷりの愛猫家です。\n") elsif weight <= 5 print("もっと愛情を注いでいいかも。\n") else print("甘やかしすぎみたい。\n") end #if を終わらせる。 3.もとにしたプログラムからの変更点 ・選択し以外の値を打ち込んだ場合、もう一度問い直すようにした。 ・結果に対しての評価を出せるようにした。 ・ある選択しを選ぶと強制的にゲームオーバーになる設定をいれた。 4.実行結果 pan{c110190}% ./neko_ikusei.rb [~/Ruby] 知人にネコを貰った。 名前はどうする?aaa aaaという名前に決定。 よく鳴くと大きくなるよ にゃー aaaを世話しよう: [1] 散歩する? [2] おもちゃで遊ぶ? [3] 餌をあげる? [4] 無視する? どうしますか?:1 にゃー --------------------------------------------------------------------------------しあわせ度 happy=2 1日目 体重増加分 3 体重 weight=4 にゃー にゃー aaaを世話しよう: [1] 散歩する? [2] おもちゃで遊ぶ? [3] 餌をあげる? [4] 無視する? どうしますか?:2 にゃー にゃー --------------------------------------------------------------------------------しあわせ度 happy=6 2日目 体重増加分 6 体重 weight=10 にゃー にゃー にゃー にゃー にゃー にゃー にゃー にゃー にゃー にゃー aaaはマンチカンみたいになった 飼い主の評価は… 結果が出ました。 愛情たっぷりの愛猫家です。 名前をaaaとローマ字入力してみたが起動したことを確認。 pan{c110190}% ./neko_ikusei.rb [~/Ruby] 知人にネコを貰った。 名前はどうする?111 111という名前に決定。 よく鳴くと大きくなるよ にゃー 111を世話しよう: [1] 散歩する? [2] おもちゃで遊ぶ? [3] 餌をあげる? [4] 無視する? どうしますか?:2 にゃー にゃー --------------------------------------------------------------------------------しあわせ度 happy=3 1日目 体重増加分 2 体重 weight=3 にゃー にゃー にゃー 111を世話しよう: [1] 散歩する? [2] おもちゃで遊ぶ? [3] 餌をあげる? [4] 無視する? どうしますか?:3 にゃー にゃー にゃー --------------------------------------------------------------------------------しあわせ度 happy=9 2日目 体重増加分 5 体重 weight=8 にゃー にゃー にゃー にゃー にゃー にゃー にゃー にゃー 111はデブネコみたいになった 飼い主の評価は… 結果が出ました。 甘やかしすぎみたい。 名前を111と数字入力したが起動したことを確認。 pan{c110190}% ./neko_ikusei.rb [~/Ruby] 知人にネコを貰った。 名前はどうする? ルビにゃーという名前に決定。 よく鳴くと大きくなるよ にゃー ルビにゃーを世話しよう: [1] 散歩する? [2] おもちゃで遊ぶ? [3] 餌をあげる? [4] 無視する? どうしますか?:4 にゃー にゃー にゃー にゃー --------------------------------------------------------------------------------しあわせ度 happy=0 1日目 体重増加分 0 体重 weight=1 にゃー ルビにゃーは家出した。 飼い主の評価は… 結果が出ました。 猫を飼う資格なし。 名前を打ち込まなかった場合は、予め設定しておいた名前が表示されたことを確認。 pan{c110190}% ./neko_ikusei.rb [~/Ruby] 知人にネコを貰った。 名前はどうする? ルビにゃーという名前に決定。 よく鳴くと大きくなるよ にゃー ルビにゃーを世話しよう: [1] 散歩する? [2] おもちゃで遊ぶ? [3] 餌をあげる? [4] 無視する? どうしますか?:0 --------------------------------------------------------------------------------しあわせ度 happy=1 体重 weight=1 にゃー ルビにゃーを世話しよう: [1] 散歩する? [2] おもちゃで遊ぶ? [3] 餌をあげる? [4] 無視する? どうしますか?:a --------------------------------------------------------------------------------しあわせ度 happy=1 体重 weight=1 にゃー ルビにゃーを世話しよう: [1] 散歩する? [2] おもちゃで遊ぶ? [3] 餌をあげる? [4] 無視する? どうしますか?: --------------------------------------------------------------------------------しあわせ度 happy=1 体重 weight=1 にゃー ルビにゃーを世話しよう: [1] 散歩する? [2] おもちゃで遊ぶ? [3] 餌をあげる? [4] 無視する? どうしますか?:4 にゃー にゃー にゃー にゃー --------------------------------------------------------------------------------しあわせ度 happy=0 1日目 体重増加分 0 体重 weight=1 にゃー ルビにゃーは家出した。 飼い主の評価は… 結果が出ました。 猫を飼う資格なし。 選択肢にないものを入力した場合、ローマ字、選択肢以外の数字、入力なしを試 したところ、すべて問のやり直しとなった。 5.プログラム説明 2.作成したプログラムと一緒にプログラム横へ説明を表記した。 6.考察 プログラムを一通り実行した結果、正常に動いた事が分かった。 bcで確かめてみた。 pan{c110190}% bc -l [~/public_html] 1*1+1 2 2*2+2 6 となった。ansを 1 とし day 1 として双方をかけて初期値のhappy = 1 を 足しているので答えは合っている。以下の計算も同様だった。 pan{c110190}% bc -l [~/public_html] 2*1+1 3 3*2+3 9 となった。ansを 2 とし day 1 として双方をかけて初期値のhappy = 1 を 足しているので答えは合っている。以下の計算も同様だった。 課題として、体重増加分と体重weightの値がbc計算で合わなかった。自分の計算の仕方か、プログラムに問題があるのかも知れないが、今後の課題にしたい。 d、広告ページ リンク先 : http://roy/~c110190/advertise2/ B.ホームページでの作業: 作品に対する公告ホームページをトップページからリンクさせ る。 a.自分のトップページへのリンク http://roy/~c110190/index.html b.仕様書へのリンク http://roy/~c110190/advertise2/siyou.txt c.最高傑作のプログラムへのリンク http://roy/~c110190/advertise2/neko_ikusei.rb d.元にしたプログラムへのリンク http://roy/~c110190/advertise2/def_rubiocci.rb 7.感想 今回かなり時間が掛かり、苦戦したところがありましたがなんとかできて良かったです。 しかし、課題も多くみつかり、見落している部分があるかも知れません。 ご指摘の程よろしくお願いします。 8.参考文献 先輩のレポート http://roy/~madoka/2010/r2/07/rpt/c109014.txt http://roy/~madoka/2010/r2/07/rpt/c109001.txt 西村先生講義ページ http://roy/~madoka/2011/r2/06/r2_06_11_theme_09_rubiocci.html 神田先生講義ページ http://roy/~naoya/ruby/4.html http://roy/~naoya/ruby/10.html