第 7 回 専門演習紹介 レポート課題 氏名:井上 宏美 学籍番号:c1110223 語学クラス:英語3 コース:政策マネジメント 1. A.最高傑作 a. -----------仕様書(public_html/adv2/siyousyo.txt)----------------- ◯仕様書◯ <企画意図> 普段何気なくしているゲームにはストーリーがある。 そのプログラムにはどのような構造で展開されているかが興味があった。 そのため、自分でオリジナルのプログラムを作成することで、 ゲームのストーリーの展開を知ろうと思いこのプログラムを作成した。 <プログラムの作成前・作成後> 最初は、プログラムを開始に説明書きを表示させてからその後に結果も表示させ ようと考えていた。だが、始めからすぐにプログラムが表示されてしまい上手く 表示出来なかったので改善した。 <今後の課題> 後期以降の自分の作品を改良してプログラムを作成したが、上手く数値が表示さ れないところがあった。 また、ワンパターンな答えにならないように内容を豊富にすればゲームをしてい る人ももっと楽しめるのではないかと思った。 <連絡先> プログラムに対してのご意見、ご感想などは下記のアドレスまでお願いします。 c111022@g.koeki-u.ac.jp <注意> このプログラムは東北公益文科大学 2年の井上宏美が著作権を保有しています。 このプログラムの入手・実行・改変は自由に行うことができますが、取り扱うこ とで生じた結果に対しては著作権者は責任は一切負いませんので、ご了承ください。 -------------------取扱説明書(public_html/adv2/readme.txt)------------- ◯取扱説明書◯ このプログラム(ゲーム)は、謎の宇宙人を育成することが出来ます。 このプログラムを実行するためには、下記の準備が必要です。 ☆仕様書(siyousyo.txt) ☆取扱説明書(readme.txt) ☆ゲームのプログラム(yoshitsune.rb) これらのファイルを同じディレクトリにダウンロードしてから 最後に忘れずに保存をして下さい。 <ダウンロード後の手順> 1.まず始めにKtermを起動して下さい。 2.保存したディレクトリが 「public_html/adv2」 であることを確認するために 「cd public_html/adv2」 と入力して下さい。 3.実行するために 「chmod +x yoshitsune.rb」と入力して下さい。 ※これをしないと実行が出来ません。※ 4.最後に「./yoshitsune.rb」と入力すると起動します。 その後はプログラムの指示に従いゲームを行って下さい!! b.プログラムに関するレポート i)考えた設定 前回のレポートの際に作成した「def_rollplaying.rb」を元にして methodを組み込み、ストーリーが続くプログラムを考えた。 ii)作成したプログラム (public_html/adv2/yoshitsune2.rb) #!/usr/koeki/bin/ruby #coding: euc-jp def funya(cry) #メソットを何度も表示させる cry.times do #指定回数蚊だけ鳴くことを繰り返す print("ふにゃにゃ〜\t") #謎の宇宙人の鳴き声 end # def に対する終わり print("\n") #改行をするために sleep(0.3) #sleep end # def に対する終わり def uchu(name) #メソットを何度も表示させる # name はその時々によって異なる STDERR.printf("%s を世話する。\n何をする?\n", name) STDERR.printf("1.焼き肉とステーキを食べる\n") STDERR.printf("2.お風呂に入る\n") STDERR.printf("3.スクワットを頑張る\n") end # def に対する終わり def maru(day_a,ans) #メソットを何度も表示される a = 4 * day_a - ans printf("%d日目\n",day_a) #日にち printf("体重増加 %d \t",a) #体重増加 a.to_i # a の値を繰り返す end # def に対する終わり def uchu2(name) #メソットを何度も表示させる STDERR.printf("%s はごきげんになってきた。今度は何をする?\n", name) STDERR.printf("1.アルバイトに行かせる。\n") STDERR.printf("2.一緒にショッピングに行く。\n") STDERR.printf("3.恋バナをする。\n") end # def に対する終わり def maru2(day_a,ans) a = 6 * day_a - ans printf("%d日目\n",day_a) #日にち printf("体重増加 %d \t",a) #体重増加 a.to_i # a の値を繰り返す end # def に対する終わり print("ああ〜…\n") print("\n") sleep(0.5) print("陽子\n") print("「暇だな〜。なんか面白いことないかな?……お!?」\n") print("\n") sleep(0.5) print("\n") print("\n") print("ふにゃにゃ〜\n") print("ふにゃにゃ〜\n") print("\n") sleep(1.5) print("\n") print("陽子") print("「なにっ、この変な動物!!」\n") print("\n") print("\n") print("陽子\n") print("「このゆるキャラ可愛い!育ててみようかな。」\n") print("\n") print("\n") print("丸い顔の宇宙人を見つけた!!\n") STDERR.print("名前は何にしようかな?\n") name = gets.chomp #改行の入力されたものを切り取る if name =="" #仮に name が何も入力されなければ name = "よしつね" # name によしつね を代入する end # def に対する終わり printf("%sという名前をつけた。\n",name) print("\n") gokigen = 1 #ごきげん度 day = 0 #0日目から始めるので0を代入する weight = 0 #weight は0 から始めるので0 を代入 print("どういう風に成長するかな?\n") while true # break するまで繰り返す funya(gokigen) # uchu メソットを呼び出す uchu(name) # 文章を表示させる ans = gets.chomp.to_i #改行に入力されたものを切り取る #整数に直して変数 ans に代入 gokigen += day * ans printf("ごきげん度は gokigen = %d\n",gokigen) weight += maru(day,ans) # maru メソットを呼び出して体重を増やす printf("体重は weight =%d\n",weight) day +=1 #一日プラスをする if gokigen >4 # gokigen が 4 以上なら break # 抜く end # if に対するend if weight >4 #体重が 4 より大きければ break # 抜く end # if に対する終わり funya(ans) end # while に対する終わり funya(weight) printf("%s は",name) if weight > 8 # weight が 8 以上ならば print("丸いまんじゅう") elsif weight <=5 # weight が 5 以上 8 以下であれば print("健康的な宇宙人くん!") else #それ以外であれば print("ナイスバディな宇宙人!") end # if に対する終わり print("になりました。\n") system('banner NEXT') p gokigen, day, weight # ごきげん度・日付・体重の数値を表示。 while true # 繰り返し funya(gokigen) # 謎の宇宙人の鳴き声 uchu(name) ans = gets.chomp.to_i # 値を取ってきて、改行を取り、整数にして ansに print "*" * 60 gokigen += day * ans printf("ごきげん度 gokigen = %d\n", gokigen) weight += maru(day, ans) printf("体重 weight = %d\n", weight) if gokigen > 4 break end if weight > 4 break end funya(ans) day += 1 end printf("%sは", name) if weight >=17 print("肉が好物な宇宙人、贅沢ですね。") system('display http://roy.e.koeki-u.ac.jp/~c111022/adv2/yoshitsune2_niku.png&') # 画像の表示 sleep 3 system('pkill display -U `whoami`') #画像の終了 elsif weight <=14 print("宇宙人も清潔な体を保ちたいんです。") system('display http://roy.e.koeki-u.ac.jp/~c111022/adv2/yoshitsune2_furo.png&') sleep 3 system('pkill display -U `whoami`') else weight <=15 print("宇宙人でもスクワットをするよ!") system('display http://roy.e.koeki-u.ac.jp/~c111022/adv2/yoshitsune_suku.png&') sleep 3 system('pkill display -U `whoami`') end print("宇宙人でも人間と変わらないんだね!\n") iii)もとにしたプログラムからの変更点 前回のレポートで使用したdef_rollplaying.rbを元にした。 また、今回はprint文や画像を表示させるsystemを付け加え、 methodも使用した。 iv.プログラムを実行した結果画面 pan{c111022}% ./yoshitsune2.rb [~/public_html/adv2] ああ〜… 陽子 「暇だな〜。なんか面白いことないかな?……お!?」 ふにゃにゃ〜 ふにゃにゃ〜 陽子「なにっ、この変な動物!!」 陽子 「このゆるキャラ可愛い!育ててみようかな。」 丸い顔の宇宙人を見つけた!! 名前は何にしようかな? よしつねという名前をつけた。 どういう風に成長するかな? ふにゃにゃ〜 よしつね を世話する。 何をする? 1.焼き肉とステーキを食べる 2.お風呂に入る 3.スクワットを頑張る 1 **************************************************ごきげん度は gokigen = 1 0日目 体重増加 -1 体重は weight =-1 ふにゃにゃ〜 ふにゃにゃ〜 よしつね を世話する。 何をする? 1.焼き肉とステーキを食べる 2.お風呂に入る 3.スクワットを頑張る 1 **************************************************ごきげん度は gokigen = 2 1日目 体重増加 3 体重は weight =2 ふにゃにゃ〜 ふにゃにゃ〜 ふにゃにゃ〜 よしつね を世話する。 何をする? 1.焼き肉とステーキを食べる 2.お風呂に入る 3.スクワットを頑張る 1 **************************************************ごきげん度は gokigen = 4 2日目 体重増加 7 体重は weight =9 ふにゃにゃ〜 ふにゃにゃ〜 ふにゃにゃ〜 ふにゃにゃ〜 ふにゃにゃ〜ふにゃにゃ〜 ふにゃにゃ〜 ふにゃにゃ〜 ふにゃにゃ〜 よしつね は丸いまんじゅうになりました。 # # ####### # # ####### ## # # # # # # # # # # # # # # # ##### # # # # # # # # # # ## # # # # # # ####### # # # 4 3 9 ふにゃにゃ〜 ふにゃにゃ〜 ふにゃにゃ〜 ふにゃにゃ〜 よしつね を世話する。 何をする? 1.焼き肉とステーキを食べる 2.お風呂に入る 3.スクワットを頑張る 1 ************************************************************ごきげん度 gokigen = 7 3日目 体重増加 11 体重 weight = 20 よしつねは肉が好物な宇宙人、贅沢ですね。宇宙人でも人間と変わらないんだね! pan{c111022}% ./yoshitsune2.rb [~/public_html/adv2] ああ〜… 陽子 「暇だな〜。なんか面白いことないかな?……お!?」 ふにゃにゃ〜 ふにゃにゃ〜 陽子「なにっ、この変な動物!!」 陽子 「このゆるキャラ可愛い!育ててみようかな。」 丸い顔の宇宙人を見つけた!! 名前は何にしようかな? よしつねという名前をつけた。 どういう風に成長するかな? ふにゃにゃ〜 よしつね を世話する。 何をする? 1.焼き肉とステーキを食べる 2.お風呂に入る 3.スクワットを頑張る 3 **************************************************ごきげん度は gokigen = 1 0日目 体重増加 -3 体重は weight =-3 ふにゃにゃ〜 ふにゃにゃ〜 ふにゃにゃ〜 ふにゃにゃ〜 よしつね を世話する。 何をする? 1.焼き肉とステーキを食べる 2.お風呂に入る 3.スクワットを頑張る 3 **************************************************ごきげん度は gokigen = 4 1日目 体重増加 1 体重は weight =-2 ふにゃにゃ〜 ふにゃにゃ〜 ふにゃにゃ〜 ふにゃにゃ〜 ふにゃにゃ〜 ふにゃにゃ〜 ふにゃにゃ〜 よしつね を世話する。 何をする? 1.焼き肉とステーキを食べる 2.お風呂に入る 3.スクワットを頑張る 3 **************************************************ごきげん度は gokigen = 10 2日目 体重増加 5 体重は weight =3 ふにゃにゃ〜 ふにゃにゃ〜 ふにゃにゃ〜 よしつね は健康的な宇宙人くん!になりました。 # # ####### # # ####### ## # # # # # # # # # # # # # # # ##### # # # # # # # # # # ## # # # # # # ####### # # # 10 3 3 ふにゃにゃ〜 ふにゃにゃ〜 ふにゃにゃ〜 ふにゃにゃ〜 ふにゃにゃ〜ふにゃにゃ〜 ふにゃにゃ〜 ふにゃにゃ〜 ふにゃにゃ〜 ふにゃにゃ〜 よしつね を世話する。 何をする? 1.焼き肉とステーキを食べる 2.お風呂に入る 3.スクワットを頑張る 3 ************************************************************ごきげん度 gokigen = 19 3日目 体重増加 9 体重 weight = 12 よしつねは宇宙人も清潔な体を保ちたいんです。宇宙人でも人間と変わらないんだね! pan{c111022}% ./yoshitsune2.rb [~/public_html/adv2] ああ〜… 陽子 「暇だな〜。なんか面白いことないかな?……お!?」 ふにゃにゃ〜 ふにゃにゃ〜 陽子「なにっ、この変な動物!!」 陽子 「このゆるキャラ可愛い!育ててみようかな。」 丸い顔の宇宙人を見つけた!! 名前は何にしようかな? よしつねという名前をつけた。 どういう風に成長するかな? ふにゃにゃ〜 よしつね を世話する。 何をする? 1.焼き肉とステーキを食べる 2.お風呂に入る 3.スクワットを頑張る 3 **************************************************ごきげん度は gokigen = 1 0日目 体重増加 -3 体重は weight =-3 ふにゃにゃ〜 ふにゃにゃ〜 ふにゃにゃ〜 ふにゃにゃ〜 よしつね を世話する。 何をする? 1.焼き肉とステーキを食べる 2.お風呂に入る 3.スクワットを頑張る 2 **************************************************ごきげん度は gokigen = 3 1日目 体重増加 2 体重は weight =-1 ふにゃにゃ〜 ふにゃにゃ〜 ふにゃにゃ〜 ふにゃにゃ〜 ふにゃにゃ〜 よしつね を世話する。 何をする? 1.焼き肉とステーキを食べる 2.お風呂に入る 3.スクワットを頑張る **************************************************ごきげん度は gokigen = 3 2日目 体重増加 8 体重は weight =7 ふにゃにゃ〜 ふにゃにゃ〜 ふにゃにゃ〜 ふにゃにゃ〜 ふにゃにゃ〜ふにゃにゃ〜 ふにゃにゃ〜 よしつね はナイスバディな宇宙人!になりました。 # # ####### # # ####### ## # # # # # # # # # # # # # # # ##### # # # # # # # # # # ## # # # # # # ####### # # # 3 3 7 ふにゃにゃ〜 ふにゃにゃ〜 ふにゃにゃ〜 よしつね を世話する。 何をする? 1.焼き肉とステーキを食べる 2.お風呂に入る 3.スクワットを頑張る 2 ************************************************************ごきげん度 gokigen = 9 3日目 体重増加 10 体重 weight = 12 よしつねは宇宙人でもスクワットをするよ!宇宙人でも人間と変わらないんだね! 3つの答えが表示されるように設定したので、3通りの答えを表示させることが出 来た。 v.導き出された結果の考察 bc -l で確かめの計算を行った。 その結果計算がプログラムの結果の数値と同じところとそうでない数値が存在 した。計算の仕方が違っていたと思ったのでもう一度行ったが答えは一致しなかっ た。 後で確認したところ計算部分の def の名前が同一のものが2つ存在していたのが 原因だった。そのため、名前を変えてから プログラムを実行して求められた値でもう一度計算を行う。 <肉を食べる場合> pan{c111022}% bc -l [~/public_html/adv2] 4 * 0 - 3 -3 4 * 1 - 2 2 4 * 2 - 2 6 6 * 3 - 1 17 <お風呂に入る場合> 4 * 0 - 1 -1 4 * 1 - 3 1 4 * 2 - 3 5 6 * 3 - 3 15 (20) <運動をする場合> 4 * 0 - 1 -1 4 * 1 - 2 2 4 * 2 - 3 5 6 * 3 - 2 16 quit 名前を変更した結果3つとも設定した通りに表示が提示された。 よってこのプログラムは正しい言えると考える。 c.プレゼンテーション原稿と読み上げる内容 謎の宇宙人育成プログラム /考えた理由 ネットで使っているゲームの仕組みを知りたかったから。 その仕組みを知ることで自分でもゲームを作ってみたくなったから。 /ゲームの内容 謎の宇宙人を育成するゲーム 自分で名前をつけてごきげん度を増やしてゆく 最後には3通りの遊びかたが表示されるので何度も楽しめる /注意事項 画像が上手く表示されるまで時間がかかるがゆっくり行う 楽しく遊ぶこと!! /参考文献参照 d.広告ページ リンク先: http://roy/~c111022/adv2/ B. a.自分のトップページへのリンク リンク先: http://roy/~c111022/ b.仕様書・取扱説明書へのリンク 仕様書 リンク先: http://roy/~c111022/adv2/siyousyo.txt 取扱説明書 リンク先: http://roy/~c111022/adv2/readme.txt c.最高傑作のプログラムへのリンク リンク先: http://roy/~c111022/adv2/yoshitsune.rb d.前回のプログラム提出したレポートへのリンク 前回のプログラム http://roy/~c111022/adv2/def_rollplaying.rb レポートへのリンク http://roy/~c111022/adv2/report.txt e.プレゼプレゼンテーション原稿へのリンク http://roy/~c111022/adv2/r2_c111022.pdf 2.感想 今回は、プログラムの作成に一番時間を費やした。いくら、前回のレポートを元 に作成したとしても上手く起動しないところが多くあった。 画像の挿入の所がエラーになり、数値を何度も変えて上手く起動出来たときは嬉 しかった。 また、広告ホームページの作成は前期の時からたいぶ時間が経過していたので忘 れていた部分が多くあったが何度も復習しながらとり組むことが出来たと思う。 今後はグループ課題も入って来るのでチームの人と協力して頑張りたい。 3.参考文献など 基礎プロI 第 11 回 (自由課題準備 / ロゴ作成) 「ロゴに署名を入れるには」 http://roy/~madoka/2012/r1/11/r1_11_04_theme_03_signature.html 西村まど か先生 基礎プロ I 第 10 回 (OpenOffice.org 体験 / Trr) 「プレゼンテーション支援ソフトウェア」 西村まどか先生 http://roy/~madoka/2012/r1/10/r1_10_08_theme_07_impress.html 基礎プログラミング II 第 7 回 (専門演習紹介) 「繰り返しのまとめ」 西村まどか先生 http://roy/~madoka/2012/r2/07/r2_07_02_review_01_repetation.html 基礎プログラミング II 第 6 回 (目的に応じて使ってみよう) 「while 文で入力するとき」 西村まどか先生 http://roy/~madoka/2012/r2/06/r2_06_10_theme_08_while.html 基礎プログラミング II 第 6 回 (目的に応じて使ってみよう) 「コマンドライン入力と method 」 西村まどか先生 http://roy/~madoka/2012/r2/06/r2_06_14_theme_11_commandline.html