CSブログ連載シリーズ 松下的コンピュータゲームの世界
第23話 コンピュータプログラミングはRPG?
こんにちは。CS学部教員の松下宗一郎です。
街角では年賀はがきの販売が始まり、そろそろ年の暮れを感じる時期になってまいりました。
大学での授業も折り返し点を過ぎ、「コンピュータゲーム基礎」ではいよいよメインの1つであるゲームプログラミングの部分にさしかかりました。
プログラミングは、コンピュータゲームを作っていく上で大変重要な位置を占めますが、いざ学び始めてみると、あまりにも膨大な知識量や、数々の怪しいテクニックを要求されてしまうことから、1本のゲームプログラムを完成させることは一般的にはとても大変なことであると考えられています。
そして、完成に至るまでの道のりが遠すぎるために、数多くの挑戦者が残念ながら途中で諦めて行くことにつながっています。そこで、「コンピュータゲーム基礎」では、1本のゲームプログラムという、いわばRPGにおけるラスボスをいきなり倒しに行くのではなく、まずは画面1枚に収まる一種の雑魚モンスター的な何かを倒し、レベルを上げていくことを考えてみました。
こちらのプログラムは、数値(整数i)が偶数(even)か奇数(odd)かを計算で求めるものですが、画面1枚どころか、わずか数行しかありません。
原理としては、数値iを2進数(0と1だけで作られた数)で表現すると、数値iが奇数であれば最後の1桁は必ず1になることを使って奇数/偶数の判断を行うプログラムですが、実はこのプログラムは完璧に間違っています。
つまり、「4」という数値は明らかに偶数なのですが、プログラムを走らせるとなぜかコンピュータは奇数だと言ってきます。
授業では、このようなタイプの「間違いプログラム」を難易度別に16個ほど用意し、間違いをひたすら解除していくという一種の「雑魚モンスター退治ゲーム」を行っております。
ちなみに、上記のプログラムでは、i & 1という部分に( )をつけて、(i & 1)とすれば正しく動作しますが、「間違い=雑魚モンスターを見つける」→「弱点=不具合を探す」→「正しく攻撃する」という一連の手順は、正にRPGゲームにおける個々の戦闘にそっくりではないでしょうか?
それではまた!
Soichiro C. Matsushita (テイルズはめでたく2周目に入りました。Gradeは現在7000です)
2011年11月20日 (日)
コメント