第7回 基礎プログラミング II レポート課題 氏名: xxxxxxxx 学籍番号:c109xxx 語学クラス:英語3 コース(系):政策マネジメント ---- 1. A. a. siyousyo_01 ====探索ゲーム仕様書==== 探索ゲーム とは、自分の探したい生き物を探すゲームです。 <ダウンロード> このゲームで遊ぶためにはプログラムをダウンロードする必要があります。 tannsaku.rb (プログラムファイル) 以上のファイルをダウンロードして下さい。 説明書でもある、 siyousyo_01 (仕様書のファイル) も一緒にダウンロードして下さい。 <遊び方> このゲームの遊び方は、ファイルをダウンロードした後 Kterm で % chmod +x tannsaku.rb の後に Return キーを押し、 % ./tannsaku.rb で、また Return を押せばゲームが始まります。 探したい生き物の名前を入力しスタートして下さい。 このプログラムは 東北公益文科大学 2009年度生 笹原千珠子が著作権を所有しています。 このプログラムの入手、実行、改変、再配布は無料で自由に行うことが出来ます。 ただしこのプログラムを取り扱うことで生じたいかなる結果に対しても著作権者は責任を負いません。 このプログラムに対する、感想・助言・要望・愚痴・説教など大歓迎致します。 c109080@e.koeki-u.ac.jp までお願いします。 b. (a)自分で名前を入力し、選択肢を選ぶことで探したい生き物を探せるプログラ ム。 (b) tannsaku.rb #!/usr/koeki/bin/ruby def noise(tm) tm.times do # 「[鳴き声]」を繰り返し表示させる print("[鳴き声]\t") end print("\n") #改行 sleep(0.1) # 0.1秒の時間をおいて表示 end def action(name) STDERR.printf("%s を探しに奥地へ進みましょう。\n", name) # %sに名前が入る STDERR.print("[1]進む\n") STDERR.print("[2]えさを仕掛ける\n") STDERR.print("[3]休憩\n") STDERR.print("どうしましょう?:") #どの選択肢を選ぶかきく end def bait(progress,food) #この計算が最後の結果に影響する x = 4 * progress - food #質問の回数から選んだ番号を引いて4掛ける printf("%d日くらい経過\n",progress) #質問の回数表示 #printf("満足度増加分 %d\n", x) x end printf("準備万端です。今すぐヤツを探しに行きましょう。\n") STDERR.printf("あなたが探している生き物はなんて言う名前?:") #名前を入力してもらう name = gets.chomp #入力した文字を取って来て名前にいれる if name == "" #もし何も入力されなければ name = "鈴木さん" #名前が鈴木さんになる end STDERR.printf("%sという名前なんですね。\n",name) advance = 1 # 進み具合 satisfy = 1 # 満足度 hour = 1 # 時間 printf("声が大きくなるほど距離は近いですよ。\n") while true #以下繰り返し noise(advance) action(name) ans = gets.chomp.to_i #選んだ番号をとってくる print "*" * 80 #わかりやすくするために * で線を引く advance += hour * ans # advance に hour と ans を掛けたものを足す satisfy += bait(hour,ans) # satisfy に hour と ans を足す if advance > 4 #もし 4 より値が大きくなれば抜 while 文からける break end if hour > 3 #もし 3 より値が大きくなれば抜 while 文からける break end noise(ans) hour += 1 #時間が質問のたびに 1 増える end noise(satisfy) # 最終的な満足度の値が「[鳴き声]」になる printf("%sを", name) if satisfy > 21 #もし合計が 21 より大きく、 7以下になったら下の文を表示 print("見つけることはできなかったが、気配を感じることができた!\n") elsif satisfy <= 7 #もし合計が 7 以下だったら下の文を表示 print("……おめでとう。\n") else #もしそれ以外だったら下の文を表示 print("探しているうちに、どうやら道に迷ったようです。\n") end (c) 第6回のるびおっちをもとに、エンディングに影響する数値や、変数を変えた。 参考:ウェブページ 基礎プログラミング II 第6回 目的に応じて使ってみよう 「るびおっち」 (講義ノート) 西村まどか http://roy/~madoka/2010/r2/06/06_11_theme_09_rubiocci.html (d) 見つけることはできなかったが、気配を感じることができた! と表示される例([1]を選び続ける) pan{c109080}% ./tannsaku.rb [~/public_html/advertise2] 準備万端です。今すぐヤツを探しに行きましょう。 あなたが探している生き物はなんて言う名前?:uma umaという名前なんですね。 声が大きくなるほど距離は近いですよ。 [鳴き声] uma を探しに奥地へ進みましょう。 [1]進む [2]えさを仕掛ける [3]休憩 どうしましょう?:1 ********************************************************************************1日くらい経過 [鳴き声] [鳴き声] [鳴き声] uma を探しに奥地へ進みましょう。 [1]進む [2]えさを仕掛ける [3]休憩 どうしましょう?:1 ********************************************************************************2日くらい経過 [鳴き声] [鳴き声] [鳴き声] [鳴き声] [鳴き声] uma を探しに奥地へ進みましょう。 [1]進む [2]えさを仕掛ける [3]休憩 どうしましょう?:1 ********************************************************************************3日くらい経過 [鳴き声] [鳴き声] [鳴き声] [鳴き声] [鳴き声] [鳴き声] [鳴き声] [鳴き声] [鳴き声] [鳴き声] [鳴き声][鳴き声] [鳴き声] [鳴き声] [鳴き声] [鳴き声] [鳴き声] [鳴き声] [鳴き声] [鳴き声] [鳴き声] [鳴き声] umaを見つけることはできなかったが、気配を感じることができた! 探しているうちに、どうやら道に迷ったようです。 と表示される例([2]を選び続ける) pan{c109080}% ./tannsaku.rb [~/public_html/advertise2] 準備万端です。今すぐヤツを探しに行きましょう。 あなたが探している生き物はなんて言う名前?:uma umaという名前なんですね。 声が大きくなるほど距離は近いですよ。 [鳴き声] uma を探しに奥地へ進みましょう。 [1]進む [2]えさを仕掛ける [3]休憩 どうしましょう?:2 ********************************************************************************1日くらい経過 [鳴き声] [鳴き声] [鳴き声] [鳴き声] [鳴き声] uma を探しに奥地へ進みましょう。 [1]進む [2]えさを仕掛ける [3]休憩 どうしましょう?:2 ********************************************************************************2日くらい経過 [鳴き声] [鳴き声] [鳴き声] [鳴き声] [鳴き声] [鳴き声] [鳴き声] [鳴き声] [鳴き声] umaを探しているうちに、どうやら道に迷ったようです。 ……おめでとう。 と表示される例([3]を選び続ける) pan{c109080}% ./tannsaku.rb [~/public_html/advertise2] 準備万端です。今すぐヤツを探しに行きましょう。 あなたが探している生き物はなんて言う名前?:uma umaという名前なんですね。 声が大きくなるほど距離は近いですよ。 [鳴き声] uma を探しに奥地へ進みましょう。 [1]進む [2]えさを仕掛ける [3]休憩 どうしましょう?:3 ********************************************************************************1日くらい経過 [鳴き声] [鳴き声] [鳴き声] [鳴き声] [鳴き声] [鳴き声] [鳴き声] uma を探しに奥地へ進みましょう。 [1]進む [2]えさを仕掛ける [3]休憩 どうしましょう?:3 ********************************************************************************2日くらい経過 [鳴き声] [鳴き声] [鳴き声] [鳴き声] [鳴き声] [鳴き声] [鳴き声] umaを……おめでとう。 (e) 見つけることはできなかったが、気配を感じることができた! を表示させるには 21 以上 7 以下の答えに、 ……おめでとう。 を表示させるには 7 以下の答えに、そして 探しているうちに、どうやら道に迷ったようです。 を表示するには上の答え以外になるというように設定し、 p 文で確かめてみたがちゃんと動くことがわかった。 d.広告ページアドレス http://roy/~c109080/advertise2/index.html 3. 今回は軸がぶれすぎて何を作るかを考えるのに時間がかかってしまった。 本当はもうすこし別のプログラムをつくりたかったが、 るびおっちはメソッドを一度だけ使ってそれ以降は使用しないプログラムなのを 忘れていた。 作ろうとしていたプログラムはまえのメソッドで使った値をまた使うようなプロ グラムにすべきだったので、作り方がわからず諦めてしまった。 思いどうりのプログラムを作ることの難しさを実感した。 それでも前回よりもるびおっちの計算のしくみがわかった気がするのでそこは良かった。 共同学習者:金田麻美