[過去ログ] 1人でゲームが作れるように修行します。 (984レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
601: SGGK ◆6pZCoAtaxk 2009/03/04(水)22:20 ID:M0lqZAHx(1) AAS
こちらは、まだまだバグ取り中〜。

昨日言っていたバグの原因は、プログラムをかなり略して書くと、

メインループ(){
 選手.move();//選手の移動処理
 ボール.move();//ボールの移動処理
 ゴール.move();//ゴールの移動?処理
 当たり判定();//それぞれのオブジェクトの当たり判定をここでまとめて行う
}
・・・となっていて、当たり判定関数の中では、

while(最後の選手まで繰り返す){
if( 選手とボールが当たっているか? ){
 a->atari=true;// 選手のメンバ変数atariのフラグをONする。
      b->atari=true;// ボールのメンバ変数atariのフラグをONする。
}
else{
 a->atari=false;// 選手のメンバ変数atariのフラグをOFFする。
 b->atari=false;// ボールのメンバ変数atariのフラグをOFFする。
}

ボールを蹴る処理は、メインループの「ボール.move();//ボールの移動処理」の中にあって、蹴れる条件は、

(Xキーが押されている)&&(ボールのatariフラグがONである)

なのに対し、今のプログラムでは、自分がコントロールできるのは一番目の選手だけなので、
選手をボールに接触させてatariフラグをONにしても当たり判定関数のwhile内で最後の選手まで
判定するので、最後の選手はボールに触れてないから、b->atari=falseになって、ボールのatariフラグは結局最後にはOFFにされてしまう。
その状態でメインループのボール移動関数に戻るので、いつまでたってもボールを蹴れる条件が成立しない・・・orz
1-
あと 383 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.012s