ページ 11

キャラをキー入力で移動させる

Posted: 2009年11月13日(金) 18:08
by Ω
初めましてー Ω(オメガ)と言います。
今、Borland と BCC Developerでちょっとしたシューティングゲームを作ってますが、
画像をキー入力で移動させるとこで止まってます。
右に移動させるのはキレイに出来たんですけど、左に移動させると残像みてえなのが
1f(ぐらい)表示されて、なんか変な感じなんです。いろいろ試したけどどうしても解決しなくて・・・
↓コードです
#include "DxLib.h"

typedef struct{
   int x,y;}Ziki_date;

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){

int Ziki_image[1];
char Key[256];
Ziki_date Ziki;

if( ChangeWindowMode(TRUE) != DX_CHANGESCREEN_OK || DxLib_Init() == -1 ) return -1; //ウィンドウ化と初期化処理



   Ziki.x=320;
   Ziki.y=240;
   
   SetDrawScreen(DX_SCREEN_BACK);
   LoadDivGraph("Ziki.png",1,1,1,32,32,Ziki_image);

while(!ProcessMessage() && !ClearDrawScreen() && !GetHitKeyStateAll( Key ) && !Key[KEY_INPUT_ESCAPE]){

   if(Key[KEY_INPUT_RIGHT]==1)
      Ziki.x+=4;
   
      DrawGraph(Ziki.x,Ziki.y,Ziki_image[0],TRUE);
      ScreenFlip();
   
   if(Key[KEY_INPUT_LEFT]==1)
      Ziki.x-=4;
      
      DrawGraph(Ziki.x,Ziki.y,Ziki_image[0],TRUE);
      ScreenFlip();
   
}

        DxLib_End() ;           // DXライブラリ使用の終了処理
        return 0 ;              // ソフトの終了
}

Re:キャラをキー入力で移動させる

Posted: 2009年11月13日(金) 18:43
by ひよこ
DrawGraph(Ziki.x,Ziki.y,Ziki_image[0],TRUE);とScreenFlip();
が二つあるからです;
DrawGraphは指定座標に絵を描きます。もし、RIGHTの後ろにあると、左を押したときに
Ziki.xとZiki.x-4が描かれて残像みたいに見えると思います。
ScreenFlip()は裏画面から表へ描きます。よって上の二つが描かれます。
DrawGraphとScreenFlip();
は一番後ろだけに置きましょう。

Re:キャラをキー入力で移動させる

Posted: 2009年11月13日(金) 18:46
by ひよこ
後、int Ziki_image[1];は必要ないなら別に配列にしなくてもいいですよ。

Re:キャラをキー入力で移動させる

Posted: 2009年11月13日(金) 18:59
by Ω
解決しました! 丁寧にありがとうございます。
ScreenFlipとDrawGraphは一個で良かったんですね
int Ziki_imageはあとあと使うんでこうしてあります