「みずほ銀の著作権投資、ゲーム開発にシフト」らしい>挨拶
---
キャラクタクラスCCharaを作るため試行錯誤してたのですが、あれやこれやと色んなモノを詰め込もうとして、訳わからん状態となってしまいました。
これじゃいつまで経っても完成しないという事で、複雑な処理は排除、外部ファイルとして持たせるデータもソースにベタ打ちさせて、とにかく動くもの優先で作ることにしました。
とりあえず以下の値だけ持たせました。
座標mx,my,mz
キャラクタ番号my_no
スプライト番号spr_no
キャラクタ管理クラスへのポインタCCharaManage*
ソースですが、前回のキャラクタ管理クラスCCharaManageからCCharaを継承した自キャラクラスCMyCharaを呼び出します。呼び出し時に即値でスプライトを生成して、spr_noに格納します。今はあまり意味無いけど、CCharaManageへのポインタもCommonInit()の中で格納しています。
Move()ではCInputクラスからキー入力を受け取り、座標mx,myに移動量を加算します。これで移動できます。
最後にDraw()からCommonDraw()を呼び出してスプライト表示させます。今は無駄に見えますが、キャラクタ毎に描画方法は変わりますので、こう書いてます。
一応これで任意の場所にキャラクタを表示し、キーボード等で移動させる事が出来ます。欲張らずに、最初からこうやって組んどけばよかったよ。
次回は当たり判定を行います。
//--------------------------------------------------------- // 初期化 CMyChara::CMyChara(int no, int x, int y, CCharaManage *manage) { RECT workRect; my_no=no; CommonInit(x, y, 1, manage); // スプライト作成 SetRect(&workRect, 0, 0, 48, 96); spr_no[0]=System->Graphics->CreateSprite("data\test.jpg", workRect); } //--------------------------------------------------------- // 移動 void CMyChara::Move() { float work_x, work_y; KEYCODE key; // キーコード取得 System->Input->PressKey(&key); work_x=(float)key.x*6; work_y=(float)key.y*6; mx+=work_x; my+=work_y; } //--------------------------------------------------------- // 描画 void CMyChara::Draw() { CommonDraw(); } //--------------------------------------------------------- // 共通描画 void CChara::CommonDraw() { System->Graphics->DrawSprite(spr_no[0], mx, my, mz, D3DXCOLOR(1,1,1,1), 0, 1, 1); } //--------------------------------------------------------- // 共通初期化 void CChara::CommonInit(int x, int y, int type, CCharaManage *manage) { CharaManage=manage; mx=(float)x; my=(float)y; mz=1.0f; }