「2つ同時に画像を動かす」にて

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

「2つ同時に画像を動かす」にて

#1

投稿記事 by ママ » 10年前

int jx=300,jy=440;
int bx=0, by=200;
SetDrawScreen(DX_SCREEN_BACK);
while(ProcessMessage()==0 && CheckHitKey(KEY_INPUT_ESCAPE)==0){
ClsDrawScreen();
int key=GetJoypadInputState(DX_INPUT_KEY_PAD1);
if(key & PAD_INPUT_LEFT) jx=jx-4;
if(key & PAD_INPUT_RIGHT) jx=jx+4;
DrawBox(jx,jy,jx+100,jy+10,GetColor(255,0,0),TRUE);
int col = GetColor(255,255,255);
if (jx<0){
jx=0;
}
if(jx>640-100){
jx=540;
}
DrawBox(bx,by,bx+10,by+10,GetColor(100,150,190),TRUE);
while(1){
by-=1;
if(by<0)break;
}

ScreenFlip();
}
DxLib_End() ;
return (0) ;
}


自機を移動させ動く敵(bx,by)を避けるゲームを作ろうと「2つ同時に画像を動かす」の部分を参考にしましたが
この場合だと敵が一瞬のうちに0まで移動した挙句消えてしまいます
-1ずつ座標をゆっくりと移動させ、0になればwhile文終了のはずなのですが
描画がうまく出来ていないのでしょうか?

kazuoni

Re:「2つ同時に画像を動かす」にて

#2

投稿記事 by kazuoni » 10年前

コードを書く場合は<pre></pre>(<>は半角で)でくくったほうがよろしいかと思います。規約にもかいてあるので^^;
while(1){ 
by-=1; 
if(by<0)break; 
}
この部分では最初
by=200
だと、
ScreenFlip();
にたどり着くまでに0以下になってしまうのではないでしょうか?

はね

Re:「2つ同時に画像を動かす」にて

#3

投稿記事 by はね » 10年前

while文はどういった処理をしているのでしょうか?

見た限りwhile文のループ回数だけ移動させているように見受けられますが
これだと一瞬で移動してしまいます。

希望の処理をさせたいのであればwhileを消せばいいかと思います。

管理人

Re:「2つ同時に画像を動かす」にて

#4

投稿記事 by 管理人 » 10年前

ScreenFlip();までこないと画面に描画されないので、そのことを考えると解決すると思います。

閉鎖

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