龍神録のプログラム:ボムで敵ショットを消すには?

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
レッドリ

龍神録のプログラム:ボムで敵ショットを消すには?

#1

投稿記事 by レッドリ » 15年前

こんにちは、DXライブラリとVC++EE2008で作っています。

私は龍神録で
大きなミサイルが何個も直線状に出るボムを作りました。

http://www.youtube.com/watch?v=TL-1lIzZbPM
この動画の1分10秒とほぼ同じようなボムです。

それで、問題が出てきました。
敵ショットと自機のボムを画像のように判定させようと思い、実装してみましたが上手くいきませんでした。
図は赤がミサイル、水色が敵のショットです。
1つのミサイルに複数の敵ショットが重なった場合、敵ショットを複数消したいのです。
龍神録では下記のようにコードを書いています。
//ショットx,ショットy,被弾物体x,被弾物体y,ショット範囲,被弾物体範囲,ショット速さ,ショット角度
//自機ボムと敵弾が当たったかどうかを判定する
int out_judge_cb_Ebullet(int k,int s,int n){
    if(bom.flag>0){//ボム中
        if(out_judge(
            effect[k].x,effect[k].x,  shot.bullet[n].x,shot.bullet[n].y,
            cbom_range[1],bullet_info[shot.bullet[n].knd].range,
            effect[k].spd,effect[k].mvang)){
            return 1;
        }
    }
    return 0;
}
void cshot_and_enemy(){
    int i,s,n,k;
    for(k=0;k<EFFECT_MAX;k++)
        if(effect[k].flag==2)//ボムはエフェクトのフラグを2にしています
        for(s=0;s<SHOT_MAX;s++)
            if(shot.flag>0)
                for(n=0;n<SHOT_BULLET_MAX;n++)
                    if(shot.bullet[n].flag>0)
                        if(out_judge_cb_Ebullet(k,s,n)==1)
                            shot.bullet[n].flag=0;

}


何度も試しても全然分かりませんでした。
どなたかお助けいただけないでしょうか?
どうかよろしくお願いいたします。 画像

yu

Re:龍神録のプログラム:ボムで敵ショットを消すには?

#2

投稿記事 by yu » 15年前

何がうまくいかなかったのか分かりませんが、とりあえず
if(out_judge(
            effect[k].x,effect[k].y
じゃないですか?

レッドリ

Re:龍神録のプログラム:ボムで敵ショットを消すには?

#3

投稿記事 by レッドリ » 15年前

できました(笑)
yuさん、ありがとうございます。

閉鎖

“C言語何でも質問掲示板” へ戻る