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

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

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

#1

投稿記事 by Ω » 15年前

初めましてー Ω(オメガ)と言います。
今、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:キャラをキー入力で移動させる

#2

投稿記事 by ひよこ » 15年前

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

ひよこ

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

#3

投稿記事 by ひよこ » 15年前

後、int Ziki_image[1];は必要ないなら別に配列にしなくてもいいですよ。

Ω

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

#4

投稿記事 by Ω » 15年前

解決しました! 丁寧にありがとうございます。
ScreenFlipとDrawGraphは一個で良かったんですね
int Ziki_imageはあとあと使うんでこうしてあります

閉鎖

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