6月13日のレポートについて XXXX語 社会系 C106XXXX XXXXXXXX 1. http://roy/~madoka/2007/r1/04/04-12-binary2.html の表を参考にする。 A.0x11 + 0x22 = 0x?? まずは 16進数 を 10進数 に変換する。 0x11 = 1 * 16 + 1 = 16 + 1 = 0d 17 0x22 = 2 * 16 + 2 = 32 + 2 = 0d 34 0d17 + 0d34 = 0d51 次に、これらを 2進数 に変換する。 51 ÷ 2 = 25 余り 1 25 ÷ 2 = 12 余り 1 12 ÷ 2 = 6 余り 0 6 ÷ 2 = 3 余り 0 3 ÷ 2 = 1 余り 1 0b 110011 となる。 11 0011 に区切り、表と照らし合わせると2進数の 11 は 16進数では 3 である。 よって、答えは 0x33 となる。 B.0x11 + 0xee = 0x?? 10進数に変換する。 0x11 の答えは上記で出したものを以下の問題でも用いていく。 0xee = e * 16 + e = 14 * 16 +14 = 0d 238 0d238 + 0d17 = 0d255 これを2進数に変換する。 255 ÷ 2 = 127 余り 1 127 ÷ 2 = 63 余り 1 63 ÷ 2 = 31 余り 1 31 ÷ 2 = 15 余り 1 15 ÷ 2 = 7 余り 1 7 ÷ 2 = 3 余り 1 3 ÷ 2 = 1 余り 1 0b 11111111 となる。 1111 1111 に区切り、表と照らし合わせると2進数の 1111 は16進数では f であ る。 よって、答えは 0xff となる。 C.0xaa - 0x11 = 0x?? まずは10進数に変換する。 0xaa = a * 16 + a = 10 * 16 +10 = 0d170 0d170 - 0d17 = 0d153 次に2進数に変換する。 153 ÷ 2 = 76 余り 1 76 ÷ 2 = 38 余り 0 38 ÷ 2 = 19 余り 0 19 ÷ 2 = 9 余り 1 9 ÷ 2 = 4 余り 1 4 ÷ 2 = 2 余り 0 2 ÷ 2 = 1 余り 0 0b 10011001 となる。 1001 1001 に区切る。2進数で 1001 は16進数では 9 である。 よって、答えは 0x99 となる。 ゲーム部門にエントリー希望 2. == 企画書(plan.txt)== 「主人公はあなた!ヒーロー物語〜じっちゃんの名にかけて〜」企画にあたって *企画前 授業の中で学んだ基本を自分なりに用いてゲームを作成してみた。 選らんだ選択肢によって結末が変化するという一般的なチャートゲームだ。 よって、このプログラムはストーリーに重きをおいている。 ・gets.chomp ・if --- end 文 ・プリント文 ・banner ・sleep などを用いている。 *売りだし方としては、現実とも仮想とも区別のつきにくいシュールな感じで統一 し、自分の名前を入力することによって主人公になりきれる一体感を楽しんでも らいたい。 *試作品完成後 行間の雰囲気を味わってほしい。 もっと豊富な選択肢が用意できればよかったと思う。 画像や効果音を付けてみたい。 == 取り扱い説明書(00readme) == 「主人公はあなた!ヒーロー物語 〜じっちゃんの名にかけて〜」 制作者 : 三浦 史織 制作日 : 2007/6/15 *概要* このゲームは選らんだ選択肢によって結末の変わるゲームです。 主人公はあなたです!!果してあなたは世界を救えるか!!?? ただ唐突にシュールなので頑張って話についてきて! *ダウンロードファイル* 00readme 取り扱い説明書 herostory.rb プログラム本体 plan.txt 企画書 の3つのデータファイルをダウンロードしてください。 そのときの注意点としては、同じディレクトリに保存するべし。 *遊戯方法* 遊び方は簡単で単純。 kterm で % chmod +x herostory.rb と入力して [Return] をビシっと押してください。 これで準備完了です。 次に、 % ./herostory.rb と入力して [Return] をズバっと押したらゲームスタート!!!! ゆっくりとお楽しみください。 *権利について* このプログラムは東北公益大学学生の 三浦 史織 が著作権を保有しています。 免責事項: このソフトウェアの使用により生じた障害、損害、不具合 などについて、制作者は一切責任を負いません。 このプログラムに対する、意見・感想・アドバイスなどは歓迎いたします。 そのさいは↓ c106175@f.koeki-u.ac.jp に、お願いいたします。 なお、このプログラムの入手・実行・改変・再配布は、いずれも無料で 自由に行なうことができます。 == プログラム(herostory.rb) == #!/usr/koeki/bin/ruby print("あなたは世界の平和を守るヒーローだ !さあキミの名前を教えてくれ!! ( : の後ろに名前を入力してちょーだい ) : ") name = gets.chomp #変数 name を拾う print(`banner "MISSION"`) print(`banner "START!"`) sleep 2 #秒を指定して停止させる printf("長官 : やあ! 遅かったじゃないか! %s くん!\n\n",name.chomp) sleep 2 printf("%s : すいません…。重い荷物を持ったおばあさんがいまして。\n\n",name) sleep 1 print("長官 : むむむむ!! その正義感!\n") sleep 1 print("あいかわらず、なかなかのヒーローっぷりだな!!\n") sleep 1 print("わしの若いころを思い出すよ!!そう…\n") print 2 print("あれは忘れもしない…わしが17のころ……\n\n") sleep 1 printf("%s : そんなことより!早く任務を!!\n\n",name) sleep 2 print("長官 : おお!そうだった!!\n\n") sleep 1 print("長官 : 街で怪人が暴れている!急げ!出動だ!!\n\n") sleep 1 printf("%s : イエッサー!!!\n\n",name) sleep 2 print("出動します!!しかし街に行く間にザコ戦闘員を倒さなければいけません。\n\n") sleep 2 print("唐突に敵が現れた!!\n\n") sleep 1 print("ザコ戦闘員 1 : イー!\n") sleep 1 print("ザコ戦闘員 2 : イー!!\n") sleep 1 print("ザコ戦闘員 3 : イー!!!\n\n") sleep 2 print("さぁ!うるさいあいつらを黙らせろ☆\n\n") sleep 1 print("攻撃だっ!!数字を入力してくれ!! \n\n") sleep 1 print(" 1: 鉄拳制裁!\n") print(" 2: 乱射!\n") print(" 3: わるぐち!!\n") kougeki = gets.chomp.to_i #変数 kougeki # if --- end 文 if kougeki == 1 # "1" と入力したときに表示される print("みぞおちに入った!! かなり悶えているぞ!\n") elsif kougeki == 2 # "2" と入力したときに表示される print("当たった!!蜂の巣にしてやった!\n") else # "1"でも "2"でもないとき print("精神的にダメージが大きい!!効いてるみたいだ!\n\n") end sleep 2 printf("なんだか %s はテンションが上がってきた!!\n\n",name) sleep 2 print("もういっちょ殺ったれ!!\n\n") print(" 1: 熱くほとばしるエルボー!\n") print(" 2: 辞書 (国語) の角で殴打!\n") print(" 3: いやらしい視線!!\n") nikaime = gets.chomp.to_i #変数 nikaime # if --- end 文 if nikaime == 1 # "1" を入力したときに表示される print("バッチリきまった!! …ピクリとも動かなくなった\n\n") elsif nikaime == 2 # "2" を入力したときに表示される print("痛い!! これは痛い!! 地味に効いている!!\n\n") else # "1"でも "2"でもないとき print("戦闘員は恐怖のあまり動けない!!\n\n") end sleep 2 printf(" %s はかなりスッキリした!\n\n",name) sleep 2 print("ザコは倒した! 先を急げ!!\n\n") sleep 2 printf("%s : ん??なにか落ちている…。どうする? \n",name) sleep 1 print(" 1: あやしい…。無視する\n") print(" 2: 拾ってみよう!\n") otiteru = gets.chomp.to_i #変数 otiteru を拾う # if --- end 文 if otiteru == 1 # "1" と入力したときに表示される print("でも気になる…。とりあえず拾う。どうやら手鏡のようだ。\n") else # "1" 以外を入力したとき print("なんだか素敵な手鏡を手に入れた! でもなんでこんな所に…?? \n\n") end sleep 2 print("そんなことより怪人が大暴れしている!! はやく倒さねば!!\n\n") sleep 2 printf("%s : 待て待て待てぇぇぇぇぇいぃぃ!!!!!\n\n",name) sleep 2 print("なんやかんやで最終決戦だっ!! 数字を選らんでくれ!! \n\n") print(" 1: 怪人に拾った手鏡を向ける\n") print(" 2: 気合いだ!!! 突っこむ\n") print(" 3: ん??怪人の様子が……\n") battle = gets.chomp.to_i #変数 battle を拾う # if --- end 文 if battle == 1 # "1"を入力したときに表示される printf("%s : これを見ろ!!これがお前の姿だ!!\n",name) sleep 1 print("悪に染まった醜い姿だ!!!!!\n\n") sleep 1 print("怪人 : やめろ!!やめてくれ!!\n\n") sleep 2 printf("%s : 目をそらすな!お前はまだ……やりなおせるじゃないか…\n\n",name) sleep 2 print("怪人 : 本当に…??\n\n") sleep 1 printf("%s : ああ、そうさ。やりなおせるさ!\n\n",name) sleep 2 print("怪人 : オレ……\n") sleep 1 print("頑張るっ……!!頑張ってみるよ!!\n\n") sleep 2 print("二人は肩を組み、夕日に向かって駆け出した\n\n") sleep 2 print("平和は守られた!!\n\n") print("HAPPY END ☆\n") elsif battle == 2 # "2"を入力したときに表示される print("怪人 : ふふふ…愚かなやつめ!!\n\n") sleep 1 print("バキィっ!!\n\n") sleep 1 printf("%s : グハッ!!\n\n",name) printf("%s はもろに攻撃をくらった!!\n\n",name) sleep 2 printf("打ちどころが悪かった。%s は無念のうちに死んだ…\n\n",name.chomp) sleep 2 print("世界は無間の闇に包まれた…\n\n") print("BAD END!\n") else # "1"でも "2" でもないとき print("怪人は泣いている\n\n") sleep 2 print("怪人 : これがわたしのサガなの!!\n") sleep 1 print("破壊がわたしそのものなの!!なにかを傷付けないと自分が自分じゃいられなくなるの!!\n\n") sleep 2 printf("%s : ………… \n\n",name) sleep 1 printf("%s には怪人の深い心の闇を救う術などなかった…\n\n",name) sleep 2 printf("%s はやり切れない思いを抱え旅立つ決意をした\n\n",name) sleep 2 print("幸せってなんなのでしょう…長官……\n\n") print("END…\n") end == 広告ホームページのソース ==
基礎プログラミング I の個人プログラム広告ページ
* 説明 *
このゲームの主人公はあなたです!
この世界はあなたの手にかかっている!
そして……最後には衝撃の結末がっ…!!
* 注意 *
このゲームはとてもユル〜いゲームです。
気分が落ち込んでいるときはやらないでください 笑
取り扱いについて ※必読
3. <<設定>> プレイヤーがヒーローとなって、出てくる選択肢を選ぶことによって、 物語を進めていくストーリーゲームのプログラム。 <<実行結果の1例>> irsv{c106175}% ./herostory.rb [~/public_html/advertise] あなたは世界の平和を守るヒーローだ !さあキミの名前を教えてくれ!! ( : の後ろに名前を入力してちょーだい ) : 花子 # # ### ##### ##### ### ####### # # ## ## # # # # # # # # ## # # # # # # # # # # # # # # # # # # ##### ##### # # # # # # # # # # # # # # # # # # # # # # # # # # # # ## # # ### ##### ##### ### ####### # # ##### ####### # ###### ####### ### # # # # # # # # ### # # # # # # # ### ##### # # # ###### # # # # ####### # # # # # # # # # # # ### ##### # # # # # # ### 長官 : やあ! 遅かったじゃないか! 花子 くん! 花子 : すいません…。重い荷物を持ったおばあさんがいまして。 長官 : むむむむ!! その正義感! あいかわらず、なかなかのヒーローっぷりだな!! わしの若いころを思い出すよ!!そう… 2あれは忘れもしない…わしが17のころ…… 花子 : そんなことより!早く任務を!! 長官 : おお!そうだった!! 長官 : 街で怪人が暴れている!急げ!出動だ!! 花子 : イエッサー!!! 出動します!!しかし街に行く間にザコ戦闘員を倒さなければいけません。 唐突に敵が現れた!! ザコ戦闘員 1 : イー! ザコ戦闘員 2 : イー!! ザコ戦闘員 3 : イー!!! さぁ!うるさいあいつらを黙らせろ☆ 攻撃だっ!!数字を入力してくれ!! 1: 鉄拳制裁! 2: 乱射! 3: わるぐち!! 1 みぞおちに入った!! かなり悶えているぞ! なんだか 花子 はテンションが上がってきた!! もういっちょ殺ったれ!! 1: 熱くほとばしるエルボー! 2: 辞書 (国語) の角で殴打! 3: いやらしい視線!! 1 バッチリきまった!! …ピクリとも動かなくなった 花子 はかなりスッキリした! ザコは倒した! 先を急げ!! 花子 : ん??なにか落ちている…。どうする? 1: あやしい…。無視する 2: 拾ってみよう! 1 でも気になる…。とりあえず拾う。どうやら手鏡のようだ。 そんなことより怪人が大暴れしている!! はやく倒さねば!! 花子 : 待て待て待てぇぇぇぇぇいぃぃ!!!!! なんやかんやで最終決戦だっ!! 数字を選らんでくれ!! 1: 怪人に拾った手鏡を向ける 2: 気合いだ!!! 突っこむ 3: ん??怪人の様子が…… 1 花子 : これを見ろ!!これがお前の姿だ!! 悪に染まった醜い姿だ!!!!! 怪人 : やめろ!!やめてくれ!! 花子 : 目をそらすな!お前はまだ……やりなおせるじゃないか… 怪人 : 本当に…?? 花子 : ああ、そうさ。やりなおせるさ! 怪人 : オレ…… 頑張るっ……!!頑張ってみるよ!! 二人は肩を組み、夕日に向かって駆け出した 平和は守られた!! HAPPY END ☆ <<考察>> すべての選択肢を実行したが全て正常に起動した。 while --- end を使って物語を分岐するようにした。 プレイヤーに名前を入力してもらい、それを表示させるのに gets.chomp を用いた。 また、print 文を多様して会話形式で物語が進行するようにした。 sleep をつかって停止時間を指定することで、臨場感を演出した。 ほかに banner で文字を大きくすることでメリハリをつけてみた。 4.感想 どのようなプログラムを作るのか考えるのだけで1日費やしてしまったが、いざ 作り始めてみるとどんなふうに面白く作ろうか試行錯誤してるうちに、どんどん のめり込んでしまった。 sleep で停止させた時間が短すぎると会話が読みずらくなってしまうし、長すぎ ると勢いがなくなってしまうので、この辺りは何回も何回もプログラムを起動さ せて微調整した。 今まで作ったことのない長いプログラムを作り終えたとき、かなり達成感をおぼえた。