「steph52_VCmemo」の編集履歴(バックアップ)一覧に戻る

steph52_VCmemo - (2007/01/06 (土) 11:15:37) のソース

プログラミング覚書。
C++をかじった程度の人間がRPGライクなGUIを作れるようになるまで。
と言いつつ結局は進捗報告の場所になってます……が。

*環境選び
C++開発環境で一般的なのはVC++とBCB?
一般にはVC++が広く使われていると思う。
ライブラリもVC++にのみ対応してるのが結構あるような。
あちこち見る限り、VC++が使えればゲーム業界では無問題らしい。

現在Express Editionが無料で落とせるのでこれを落とす。
さらによく分からないけどMicrosoft Platform SDKも落としておくと良いらしい。
http://www.microsoft.com/japan/msdn/vstudio/express/visualc/usingpsdk/
に従ってインストールし、パスを設定する。
続いてDirectX SDKをインストール。
http://www.microsoft.com/japan/msdn/directx/downloads.aspx
includeに$(DXSDK_DIR)Includeを
libraryに$(DXSDK_DIR)Lib\x86を追加する。

さてこれで開発環境はできたらしいのだが、1から書くってなかなか出来ないっすよね。
なんちゃってプログラマな俺は適当なサンプルコードがないとはじめることが出来ない。
いやだから成長しないんだけど。

----
NEETの俺が無料ソフトだけでRPGを作るスレを見ていたら
[[DXライブラリ>http://homepage2.nifty.com/natupaji/DxLib/]]というのが良いらしい。
2Dゲームを作るには十分な機能を有し、なおかつ日本語リファレンスが充実していて良い。

今は簡単にマップチップやキャラチップを並べるところまでを作ってみた。
素材は[[First Seed Material>http://www.tekepon.net/fsm/]]様から拝借。
次はマップに障害物を設置してキャラをランダムウォークさせるまで。
そしたら客生成ルーチンを組み込んで、キャラチップを右クリックしたら
対応するキャラデータを画面右側に表示させるところまで作ろうと思う。

----
07/01/04進捗。
#ref(steph52_070104.jpg)
-前回
--MAPの障害物判定まで実装して、矢印キーで歩き回るデモを作りました。
--またランダムウォークする客を追加して、左クリックでどの客を選択したかを表示するところまでを実装。
--http://gamdev.org/up/img/8520.zip
-今回
--暫定の住人生成ルーチンを組み込み。
--住人からランダムに客を取り出し。←これから来客ルーチンに置き換え
--左クリックで住人のスペックを欄外に表示。
--ドアをつけた。客や主人公がドアをくぐるとアニメーションします。

----
7スレ147氏から"カスタムリソース"という言葉を教わったので調べる。
~~.rcというファイルを作り、resourse.hをインクルードして
LoadResourceとかを使って読み出せばよい・・・らしい。
これやっておけばコンパイラが勝手に画像ファイルをexeに取り込んでくれるんだろうか。

更に調べると、VC++にはリソース・エディタという機能があるらしい。
しかし起動して試してみたところ、リソースに関するアイコンは灰色のまま・・・。

なんでも2005EEではリソースエディタは使えないらしい。
http://vsug.jp/tabid/63/forumid/42/postid/1935/view/topic/Default.aspx
上記掲示板に書いてあった無料のリソースエディタを試してみようと思う。
http://www.wilsonc.demon.co.uk/d10resourceeditor.htm

しかし、カスタムリソースを使おうとするとちょっと問題が・・・。
LoadResourceで読み込んだ画像はDXライブラリの描画関数には渡せないような。
なんか適当に変換すればいけるんだろうか。それともDXライブラリの使用をやめる?
とりあえず保留にしておこう。
----
どうもマウスイベントの取得が不安定である。
タイミングによって取れたり取れなかったりする。
どうやらDXライブラリのマウス関係の命令は、その時々のマウスの状態しか見れないらしい。
すると100ms程度のポーリング間隔ではイベントを見逃してしまうことがあるようだ。

イベントドリブンにしたい場合、DXライブラリだけでは無理そうである。
色々調べてみる。と、WinAPIでは
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp) 
とかいう関数でイベントを取得してるようなのである。
うーん、これはいったいなんだろう・・・。

http://yonex1.cis.ibaraki.ac.jp/Win32/lecture01.html
によると、windowsアプリはユーザーが動作を記述するWinMain関数のほかに、
イベントをハンドルするためのWindowProc関数を同時に呼び出すらしい。
てことはWindowsProc関数を用意すればいいんだろうか。

あーもう、DXライブラリやめてWinAPIだけで組みたくなってきた!!
1. DXライブラリとWinAPIを併用する(やや茨)
2. 全部WinAPIで書く(超茨)
3. 全部DXライブラリで我慢する(易)
目安箱バナー