ページ 11

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

Posted: 2008年5月10日(土) 17:01
by ママ
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文終了のはずなのですが
描画がうまく出来ていないのでしょうか?

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

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

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

Posted: 2008年5月11日(日) 14:18
by はね
while文はどういった処理をしているのでしょうか?

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

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

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

Posted: 2008年5月11日(日) 20:09
by 管理人
ScreenFlip();までこないと画面に描画されないので、そのことを考えると解決すると思います。