ページ 11

キャラクタ移動について

Posted: 2009年11月18日(水) 11:51
by たつのしん
現在「19. キャラをキー入力によって移動させる」をやっているのですが、
キャラが動いてくれません。

↓がプログラムです
#include "DxLib.h"

typedef struct{
int x, y, img;
}ch_t;

int image[16];
char Key[256];
ch_t ch;

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
// ウィンドウモードで起動する
ChangeWindowMode(TRUE);
// DXライブラリの初期化
if(DxLib_Init() == -1 ) return -1;
// 描画先画面を裏画面にする
SetDrawScreen( DX_SCREEN_BACK );

while( ProcessMessage() == 0 && CheckHitKey(KEY_INPUT_ESCAPE) == 0 )
{
// 裏画面の内容を表画面に反映する
ScreenFlip();
// 画面全体を初期化
ClearDrawScreen();

ch.x = 320;
ch.y = 240;

LoadDivGraph( "char.png", 16, 4, 4, 32, 32, image );

if( Key[ KEY_INPUT_RIGHT ] == 1 ) // 右ボタンが押されたら
ch.x++; // xの値を1増やす

else if(ch.x%32 != 0) // 32で割り切れない区間はオートで進む
ch.x++;

ch.img = image[12];

DrawGraph( ch.x, ch.y, ch.img, TRUE); // [12]の画像を描画
}
// DXライブラリの終了
DxLib_End();

return 0;
}

ご指摘がありましたら、よろしくお願いします。

Re:キャラクタ移動について

Posted: 2009年11月18日(水) 12:09
by Mist
> ch.x = 320;
> ch.y = 240;

↑がループ内にあるから。

> LoadDivGraph( "char.png", 16, 4, 4, 32, 32, image );

これもループ内で何回も実行してはいけません。
変数の初期化や画像のロードはループに入る前に行いましょう。