ページ 11

画像の移動

Posted: 2010年8月23日(月) 00:31
by 16R
初歩的な質問で申し訳ないのですが、

#include "DxLib.h"

int Key[256];
int GetHitKeyStateAll_2(int GetHitKeyStateAll_InputKey[/url]){
char GetHitKeyStateAll_Key[256];
GetHitKeyStateAll( GetHitKeyStateAll_Key );
for(int i=0;i<256;i++){
if(GetHitKeyStateAll_Key==1) GetHitKeyStateAll_InputKey++;
else GetHitKeyStateAll_InputKey=0;
}
return 0;
}

int func_state = 0;
void move();
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
ChangeWindowMode(TRUE
if(DxLib_Init() == -1 || SetDrawScreen( DX_SCREEN_BACK )!=0) return -1;
while(ProcessMessage()==0 && ClearDrawScreen()==0 && GetHitKeyStateAll_2(Key)==0 && Key[KEY_INPUT_ESCAPE]==0){


switch(func_state){
case 0:
move ();
break;
}
ScreenFlip();

}

DxLib_End();
return 0;
}


double jx=0,jy=0;
void move(){

int x=0,y=0;
double naname=1;

int a = LoadGraph("0.png");

int idou=10;
if(Key[ KEY_INPUT_RIGHT ] == 1){
x = idou;
if(jx<500)jx=jx+x;
}
DrawGraph( jx , jy , a , TRUE );

}

と書いてみたのですが画像が表示された後 → を押すと一度動いて止まってしまいます。
押し続けると動き続けるようにするにはどうしたらよいでしょうか・・

Re:画像の移動

Posted: 2010年8月23日(月) 01:10
by shuto
GetHitKeyStateAll_2(Key) は 呼ばれる毎に
右カーソルキーを押していれば Key[ KEY_INPUT_RIGHT ] を1増やすので
Key[ KEY_INPUT_RIGHT ] == 1 は キーを押し続けると一度しか存在しません。
押した瞬間だけ動くのはこれが原因です。
なので

void move() の中の
if(Key[ KEY_INPUT_RIGHT ] == 1) を
if(Key[ KEY_INPUT_RIGHT ] >= 1) とすればとりあえず動き続けますね。

個人的にはdoubleとintがごっちゃになってるのとかが気になりますが。