どり〜むきっず 〜ゲーム制作支援サイト〜
トップ | 初めての方へ | プロフィール | メールマガジン | リンク

同人ゲーム制作支援 | ゲームアルゴリズム勉強法 | C言語入門

今日のみなせけ | インフォプレナー | ゲームプログラム講座

めるまがきっず「メイドさんが歩き回る」


////////////////////////////////////////////////////////////////////////////////
//
//         ☆ めるまがきっず ☆
//
//     〜ゲームプログラミングを主とした、ゲーム制作支援メルマガ〜
//
//
// 配信者:
//   早瀬 竜也(たつにい)
//
// 配信日:
//   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



上記の記事は僕が配信しているメールマガジンのバックナンバーです。

配信は不定期ですが、忘れた頃にゲーム制作に関しての有益な情報を
受け取ることにより、ゲーム制作の潜在的意欲が上がるかもしれませんよ?

登録は無料ですので、興味のある方は下記フォームよりどうそ!

メルマガ登録・解除
 


過去バックナンバー




メニュー






トップ | 初めての方へ | プロフィール | メールマガジン | リンク
Copyright (C) 2009 どり〜むきっず, All Rights Reserved