第 7 回 ゼミ紹介 レポート課題 氏名:鏡 登志晃 学籍番号:c1100495 語学クラス:英語6 コース(系):政策マネイジメント -------------------------------------------------- 企画書 企画意図 モンスターを闘わせるプログラムが作りたくて作りました このプログラムはモンスターの技をぶつけ合い闘うプログラムです このプログラムはモンスターを闘わせ 優勝を目指すプログラムです。 三回連続でコンピューターに勝ったら優勝出来ます。 3つのタイプの技があり、じゃんけんの要領でおこないます <遊び方> まず以下のプログラムをダウンロードして下さい。 public_html/advertise2/repo6.rb 次にktermで chmod +x repo6.rb と入力したあと ./repo6.rb と入力すると実行されます このプログラムは東北公益文科大学の 鏡 登志晃 が著作権を持っています。 このプログラムを取扱うことで問題が起きても責任を負えません。 プログラムに対する意見などは c110049@e.koeki-u.ac.jp までお願いします --------------------- #!/usr/koeki/bin/ruby you = 1 number = 0 total = 0 print"これからモンスターバトル大会だ。\n" print"この大会はトーナメント方式。\n" print"3回勝てば優勝だ!!\n" $KCODE = 'e' mon= Hash.new mon["かえんほうしゃ"] = "火タイプ" mon["ソーラービーム"] = "草タイプ" mon["ハイドロポンプ"] = "水タイプ" for waza,taipu in mon # 全てのものを表示する # for key名、値 in Hash配列 printf("%s の技のタイプは「%s」です。\n",waza,taipu) end don= ["火炎放射","ソーラービーム","ハイドロポンプ",] while true srand com=rand(3) printf("%d戦目\n",number += 1) STDERR.print"どーん!(0:火炎放射 ,1: ソーラービーム,2:ハイドロポンプ ,) :" you = gets.chomp!.to_i if you.to_f > 2 printf"0,1,2から選んで下さい。\n" number -= 1 redo end while true don = ["火炎放射 ","ソーラービーム","ハイドロポンプ",] srand com=rand(3) if don[com] == don[you] printf("あなたのモンスターは %s で、 \n", don[you]) printf("わたしのモンスターも %s でした。\n", don[com]) printf" \e[32;1m相殺。\n" printf("\e[0m\n") sleep(1) printf"もう一度\n" sleep(1) printf"この技だ\n" STDERR.print"(0:火炎放射 ,1: ソーラービーム,2: ハイドロポンプ,) :" you = gets.chomp!.to_i number += 0 else break end end printf("あなたのモンスターは %s で、 \n", don[you]) printf("わたしのモンタスーは %s でした。\n", don[com]) if com == 0 if you == 1 print" \e[36m負け\n" printf("\e[0m\n") elsif you == 2 print"\e[31;1m勝ち\n" printf("\e[0m\n") total += 1 end elsif com == 1 if you == 0 print"\e[31;1m勝ち\n" printf("\e[0m\n") total += 1 elsif you == 2 print"\e[36m負け\n" printf("\e[0m\n") end elsif com == 2 if you == 0 print"\e[36m負け\n" printf("\e[0m\n") elsif you == 1 print"\e[31;1m勝ち\n" printf("\e[0m\n") total += 1 end end if com == 0 if you == 1 break end elsif com == 1 if you == 2 break end elsif com == 2 if you == 0 break end end if number == 3 break end end print"**********************************************\n" printf("%d回勝ったので\n",total) print"あなたの戦績は\n" if total == 3 print"\e[31mなんと優勝" system 'banner chmpion!! ' elsif total == 2 print"\e[33m準優勝 " system 'banner runners-up ' elsif total == 1 print"ベスト\e[33m4 " system ' banner notyet' else print"\e[34m初戦敗退 " system 'banner biginner' end print"\e[mです。\n" def japandrum(a) if a == 1 1 else a end end ------------------------------------ 実行結果 これからモンスターバトル大会だ。 この大会はトーナメント方式。 3回勝てば優勝だ!! ソーラービーム の技のタイプは「草タイプ」です。 ハイドロポンプ の技のタイプは「水タイプ」です。 かえんほうしゃ の技のタイプは「火タイプ」です。 1戦目 どーん!(0:火炎放射 ,1: ソーラービーム,2:ハイドロポンプ ,) :0 あなたのモンスターは 火炎放射 で、 わたしのモンタスーは ソーラービーム でした。 勝ち 2戦目 どーん!(0:火炎放射 ,1: ソーラービーム,2:ハイドロポンプ ,) :1 あなたのモンスターは ソーラービーム で、 わたしのモンタスーは ハイドロポンプ でした。 勝ち 3戦目 どーん!(0:火炎放射 ,1: ソーラービーム,2:ハイドロポンプ ,) :2 あなたのモンスターは ハイドロポンプ で、 わたしのモンスターも ハイドロポンプ でした。 相殺。 もう一度 0 この技だ (0:火炎放射 ,1: ソーラービーム,2: ハイドロポンプ,) :あなたのモンスターは 火炎放射 で、 わたしのモンタスーは ハイドロポンプ でした。 負け ********************************************** 2回勝ったので あなたの戦績は 準優勝 ##### # # # # # # ###### ##### #### # # ##### # # # # ## # ## # # # # # # # # # # # # # # # # # # # ##### # # #### ##### # # # # ##### # # # # # # # # # ##### # # # ##### # # # # # ## # ## # # # # # # # # # # #### # # # # ###### # # #### #### # です。 ------------------ 説明 printによってこのゲームの説明を表記し srand com=rand(3)を使ったのは rand(3)によって3未満の整数(0、1、2)からランダムな値をだし またsrandで乱数になるようにして同じ数が出ないようにした 今回は複数のデータを出力しなければならないのでSTDERR.printによってディス プレイに出力した。 if you.to_f > 2では0,1,2以外の数が入力されてもでないようにしている while trueを用いたのは対戦が何回続くかわからないため入力によって繰り返し 回数をかえなければならないのでこれを用いた またもし互いの入力した値が同じだった場合のため if don[com] == don[you]を 用いて更にまた数が入力できるようSTDERR.print"を用いた 78行目〜97行目まではcomと対戦相手がそれぞれの数を入力した場合に負けか勝 ちかを表した また print" \e[35m負け\n"として負けという文字を紫の色にした そして次からの文字はいろがもどるように printf("\e[0m\n")を用いた また大きな文字を出すためにsystem 'bannerを用いて次に来る文字を大きくした ------------------------------------------------ 感想 今回のプログラムを作るにあたって ホームページの作り方を忘れてしまっていた しかし協力者と共に制作できた またホームページ作成は時間がかかったのでタイピング能力、プログラムの作成 の能力などの能力アップに繋がった 参考文献 http://roy/~madoka/2011/r2/ 2011 年度 基礎プログラミング II 講義ノート(シラバス) http://roy/~madoka/2011/r2/03/ 基礎プログラミング II 第 3 回 「情報の構造を分析しよう http://roy/~madoka/2011/r2/03/r2_03_06_theme_01_hashinhash.html 基礎プログラミング II 第 3 回 (情報の構造を分析しよう) 「Hash の中の Hash」 共同製作者 吉田 亘 須藤充司