キャラクタ移動について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
たつのしん

キャラクタ移動について

#1

投稿記事 by たつのしん » 15年前

現在「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;
}

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

Mist

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

#2

投稿記事 by Mist » 15年前

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

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

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

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

閉鎖

“C言語何でも質問掲示板” へ戻る