[過去ログ] 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