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文終了のはずなのですが
描画がうまく出来ていないのでしょうか?
「2つ同時に画像を動かす」にて
Re:「2つ同時に画像を動かす」にて
コードを書く場合は<pre></pre>(<>は半角で)でくくったほうがよろしいかと思います。規約にもかいてあるので^^;
while(1){ by-=1; if(by<0)break; }この部分では最初
by=200だと、
ScreenFlip();にたどり着くまでに0以下になってしまうのではないでしょうか?
Re:「2つ同時に画像を動かす」にて
while文はどういった処理をしているのでしょうか?
見た限りwhile文のループ回数だけ移動させているように見受けられますが
これだと一瞬で移動してしまいます。
希望の処理をさせたいのであればwhileを消せばいいかと思います。
見た限りwhile文のループ回数だけ移動させているように見受けられますが
これだと一瞬で移動してしまいます。
希望の処理をさせたいのであればwhileを消せばいいかと思います。