めるまがきっず「メイドさんが歩き回る」
////////////////////////////////////////////////////////////////////////////////
//
// ☆ めるまがきっず ☆
//
// 〜ゲームプログラミングを主とした、ゲーム制作支援メルマガ〜
//
//
// 配信者:
// 早瀬 竜也(たつにい)
//
// 配信日:
// 2009/03/15
//
//
// 第31回 「メイドさんが歩き回る」
//
変な件名ですみません。
どり〜むきっずの早瀬です。
件名について説明します。
実は最近、DXライブラリなるものを弄ってます。
↓DXライブラリ置き場
http://homepage2.nifty.com/natupaji/DxLib/
僕の考えで説明するのが面倒なので、上記のページの
言葉を引用させていただきます(苦笑)
> DXライブラリとは、DirectXを使ったWindowsソフトの開発に必ず付
> いて回るDirectXやWindows関連のプログラムを使い易くまとめた形で
> 利用できるようにしたC++言語用の2Dゲームライブラリです。(使用
> する際はC言語の知識だけで大丈夫です)
> これによってプログラマーはゲームの本質的なプログラムに専念す
> ることが出来ます。かなり本格的なソフト制作からお遊び程度のミニゲ
> ーム制作まで幅広くカバーしています!
……と、いうことです。便利ですね!
えっ? 件名についての説明になってない?
はい。きちんと説明しますので、
もう少し読み進めてください。
上記のサイトを見ながら、とりあえず僕は小さなプログラムを
チョチョイと組もうと思い、プロジェクトを立ち上げ、
設定を行い、ネットでフリー素材を探し、作ってみたんです。
実際、DirectXでのゲームプログラムの経験がある僕ですが、
今後はこのライブラリを使っていこう……って思わせるほど
便利で手軽で実用性の高いゲームプログラムライブラリでした。
http://dreamkids.sakura.ne.jp/info/002.html
↑でゲームアルゴリズムを勉強し、実際に本格的な
ゲームプログラムを作る際、このDXライブラリを使用すれば、
これまた↑ページの「3、Windowsプログラミングの厄介な構成を
マスターする!」と「5、DirectXのヘルプを読めるようになり、
ゲームライブラリを作る!」を省略する事が出来るため、
更に手早く本格的なゲームプログラムを作ることが出来ます。
はっ! また話が脱線しそうになりました。
件名についてですが、このDXライブラリで実際に作ってみた
小さなプログラムが「メイドさんが歩き回る」プログラム
なので、そのままメルマガの件名にしました。
フリー素材で探してきたドット絵のメイドさんが、
画面内をアニメーションしながら歩き回ります。
まぁ、勝手に歩き回るわけではなく、十字キーで
移動させる事が出来ます。
ちなみにVer1とVer2があり、Ver1は十時キーでそのまま
歩き回り、Ver2はSRPG風の移動システムとなっております。
プログラムプロジェクト自体は、DXライブラリが開発環境に
よって設定が違うため、ソースのみ配布となりますが、
サンプルソースとその実行ファイルも用意しましたので、
もし宜しければダウンロードしてくださいね。
このメールの一番最後でダウンロード先のリンクを記します。
で、今回はそのときのプログラム時に「はっ!」と
思った失敗体験を述べたいと思います。
●条件式におけるイコールの書き方
さて、イキナリですが問題です。
下記の2つのif文の条件式のですが、
どちらの書き方が正しいでしょうか?
if( a == 3 )
if( 3 == a )
※「a」はint型のごく普通の変数です
少し考えてから、下にスクロールして
答えを確認してみてくださいね。
ちなみに、処理的にはどちらも同じですよね。
まぁ、コンピュータ側としては別にどっちでも
きちんと動作してくれるんですよね。
なのにどちらかが正しくて、どちらかが
間違っているなんて、ありえるのでしょうか?
ちなみに僕は、今回「はっ!」っとなってしまった訳ですが、
上記の問題の答えは余裕で知っていました。
答えは……
if( 3 == a )
……です。
何故だか、おわかりになりますか?
これにはれっきとした理由があります。
確かに「 if( a == 3 ) 」でも
何の問題もなしに動作します。
でも、問題なのは人間の方です。
そもそも「==」という式自体が、普通に数学を
習ってきた人間にはあまりなじみの無い式なので、
よく間違えて「=」と入力してしまう事があるのです。
つまり……
if( a = 3 )
……と、間違ってしまうことが多々あるのです。
これが……
if( 3 = a )
……だったら、コンパイルエラーになり、
すぐさま異常に気が付くことができます。
しかし……
if( a = 3 )
……だったら、どうなってしまうのか?
まず、aがどんな数値だったであれ、
if文の行にきたら、変数aに3が代入されます。
そしてaは3だから「真偽」の「真」となり、
aの元の数値がどうであれ、必ずif文の
処理が行われます。
……これは非常に根の深いバグになります。
たった一文字間違えただけで、
「動作はするのに何かがおかしい」といった、
謎の挙動になるのです。
ちなみに僕は意識的に「 if( 3 == a ) 」の
ようにプログラムを組むようにしていたのですが、
今回のプログラムは小さいのをとりあえず試しで
作ってみようという軽い気持ちでプログラミング
していたため、その意識を無視して、テキトーに
「 if( a = 3 ) 」と組んでしまったのです。
「まさか自分がこんな凡ミスするはずが無い!」と
勝手な自信を持ち、横着したときに限って、
本当に凡ミスしてしまったということです。
そのせいで、貴重な一時間を無駄に消費してしまいました。
皆さんもお気をつけてくださいね。
それでは、もしよろしければ下記リンクより
ダウンロードして動かしてみてくださいね。
メイドさんが歩き回るプログラム
メールマガジン「めるまがきっず ゲーム制作支援メルマガ」
発行責任者:早瀬 竜也(たつにい)
公式サイト:「どり〜むきっず」 http://dreamkids.sakura.ne.jp/
問い合わせ:hakka17@hotmail.com
発行サイト:「まぐまぐ!」 http://www.mag2.com/
登録・削除:http://www.mag2.com/m/0000254884.html
上記の記事は僕が配信しているメールマガジンのバックナンバーです。
配信は不定期ですが、忘れた頃にゲーム制作に関しての有益な情報を
受け取ることにより、ゲーム制作の潜在的意欲が上がるかもしれませんよ?
登録は無料ですので、興味のある方は下記フォームよりどうそ!
過去バックナンバー
|