フリーズします・・・
Posted: 2012年8月11日(土) 08:51
こんにちは。
インベーダーゲームをつくっています。
敵(複数)のショットと自機の当たり判定処理をする関数でフリーズします。
現在の状況でHitPlayerJudge関数の中でe_pointer_aに関する処理を行うとフリーズすることが分かっています。
例えば・・・
もう一週間くらい手詰まり状態でお手上げです。
どなたか解決方法が分かる方はいらっしゃいますか?
宜しくお願いします。
インベーダーゲームをつくっています。
敵(複数)のショットと自機の当たり判定処理をする関数でフリーズします。
//HitJudge.cpp
//プレイヤーと敵ショットの当たり判定関数
//引数はプレイヤーの構造体(PLAYER型)のポインタと敵の構造体(ENEMY型)のポインタ
int HitPlayerJudge(PLAYER* p_pointer_a ,ENEMY* e_pointer_a){
//自機が生存していたら
if(p_pointer_a->flag==1){
//当たり判定チェック
if( ( ( (e_pointer_a->shotx > p_pointer_a->x) && (e_pointer_a->shotx < (p_pointer_a->x + p_pointer_a->xsize) ) ) ||
( (p_pointer_a->x > e_pointer_a->shotx ) && (p_pointer_a->x < (e_pointer_a->shotx + e_pointer_a->shotxsize) ) ) ) &&
( ( (e_pointer_a->shoty > p_pointer_a->y )&& (e_pointer_a->shoty < (p_pointer_a->y + p_pointer_a->ysize) ) ) ||
( (p_pointer_a->y > e_pointer_a->shoty) && (p_pointer_a->y < (e_pointer_a->shoty + e_pointer_a->shotysize) ) ) ) ){
//当たっていたら
p_pointer_a->flag=0;
return 1;
}
//それ以外
return 0;
}
}
//main.cpp
//自機の構造体のポインタを取得
p_pointer=GetPlayerData();
for(int i=0;i<ENEMYXNUM;i++){
for(int j=0;j<ENEMYYNUM;j++){
//敵enemy[i][j]の構造体のポインタを取得
e_pointer=GetEnemyData(i,j);
//当たり判定チェック
test=HitPlayerJudge(p_pointer,e_pointer);
}
}
例えば・・・
//フリーズしない
int HitPlayerJudge(PLAYER* p_pointer_a ,ENEMY* e_pointer_a){
if(p_pointer_a->flag==1){
p_pointer_a->flag=0;
return 1;
}
return 0;
}
}
//フリーズする
int HitPlayerJudge(PLAYER* p_pointer_a ,ENEMY* e_pointer_a){
if(p_pointer_a->flag==1 && e_pointer_a->flag==1){
p_pointer_a->flag=0;
return 1;
}
return 0;
}
}
//フリーズする
int HitPlayerJudge(PLAYER* p_pointer_a ,ENEMY* e_pointer_a){
if(p_pointer_a->flag==1){
e_pointer_a->x=0;
p_pointer_a->flag=0;
return 1;
}
return 0;
}
}
どなたか解決方法が分かる方はいらっしゃいますか?
宜しくお願いします。