ループ内にSetDrawScreen,ClsDrawScreen,
ScreenFlipを入れると表示されました。
しかし次はキャラがものすごい勢いで移動しました。
更にキーを離しても停止せず、
そのまま歩いていってしまいました。
押しっぱなしで加速している気もします。
本にはAddVectorInFrameTimeを使うと書いていますが、前のソースの通り使用しています。
一応現在のソースを再び載せときます
//メインループ
void MyMain(){
Vector curvec1 = {0,0};
char keybuf [256];//これポインタ
int left_key_state = 0;//ここから変数定義
int right_key_state = 0;
int old_left_key_state = 0;
int old_right_key_state = 0;
int press_key = 0;
int PUSH = 0;
int RELEASE = 1;
int NONE = 2;
while(ProcessMessage() == 0 && 1){
SetDrawScreen( DX_SCREEN_BACK );//描画対象を裏に
GetHitKeyStateAll( keybuf ) ;//全てのキーを確認する
old_left_key_state = left_key_state; //現フレームのキー状態をold_left_key_stateに入れる
old_right_key_state = right_key_state; //同じく右キー状態を
if(keybuf[KEY_INPUT_LEFT] == 1){ left_key_state = PUSH; }//左キーチェック 押されている→「PUSH」違う場合は 「RELEASE」を代入
else{ left_key_state = RELEASE; }
if(keybuf[KEY_INPUT_RIGHT] == 1){ right_key_state = PUSH; }//同じく右キーを
else{ right_key_state = RELEASE; }
if(left_key_state == PUSH && right_key_state == RELEASE) curvec1 = AddVector( curvec1 , LEFTMOVEC);{ press_key = KEY_INPUT_RIGHT; }//左PUSH 右RELEASEのとき キーは左
if(left_key_state == RELEASE && right_key_state == PUSH) curvec1 = AddVector( curvec1 , RIGHTMOVEC); { press_key = KEY_INPUT_LEFT; } //同じく 右がPUSH
if(left_key_state == RELEASE && right_key_state == RELEASE){ press_key = NONE; } //両方RELEASEの場合 キーは無し
if(left_key_state == PUSH && right_key_state == PUSH){
if(left_key_state == PUSH && old_left_key_state == RELEASE) curvec1 = AddVectorInFrameTime( curvec1 , LEFTMOVEC);{ press_key = KEY_INPUT_LEFT; }}//今 左が押されている から引く 前 左が押されていない を キーは左
if(right_key_state == PUSH && old_right_key_state == RELEASE) curvec1 = AddVectorInFrameTime( curvec1 , RIGHTMOVEC);{press_key = KEY_INPUT_RIGHT; }// 同じく→
//画面消去
ClsDrawScreen();
//Pキャラ座標計算
g_jikipos = AddVectorInFrameTime(g_jikipos,curvec1);
//Pキャラ描画
DrawAnimation(g_jikipos.x , g_jikipos.y, 1 , 0 , FALSE , &g_jikiimage[2] , 6 , 12);
//画面切り替え
ScreenFlip();
}
}
//ファイル読み込み
int LoadFiles(){
//画像読み込み
if (LoadDivGraph("media\\player01.bmp",11,11,1,64,64,g_jikiimage) == -1) return -1;
return 1;
}
メインループより上は弄っていないので、省きました。