ソースの書き換え

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

ソースの書き換え

#1

投稿記事 by 芽衣子 » 16年前

こんにちは、はじめまして。
龍神録プログラムの館を拝見し、ゲームを作り始めた者です。
現在ミシャグジ様弾幕とみょん弾幕を少々弄ったものをボス用に変更したいのですが、なかなかうまくいきません。
どなたか教えていただけますと幸いです。
以下、変更したいプログラム
void shot_bullet_H007(){
	int t=shot[n].cnt;
	if(t>=0 && t<=300 && t%10==0){
		for(int i=0;i<20;i++){
			if(shot[n].flag!=2 && (k=shot_search(n))!=-1){
				shot[n].bullet[k].knd	=8;
				shot[n].bullet[k].angle	=PI2/10*i;
				shot[n].bullet[k].flag	=1;
				shot[n].bullet[k].x		=enemy[shot[n].num].x+cos(PI/2+PI/150*t)*80;
				shot[n].bullet[k].y		=enemy[shot[n].num].y+sin(PI/2+PI/150*t)*10;
				shot[n].bullet[k].col	=2;
				shot[n].bullet[k].cnt	=0;
				shot[n].bullet[k].spd	=1.2;
			}
		}
		for(int i=0;i<20;i++){
			if(shot[n].flag!=2 && (k=shot_search(n))!=-1){
				shot[n].bullet[k].knd	=8;
				shot[n].bullet[k].angle	=PI2/10*i;
				shot[n].bullet[k].flag	=1;
				shot[n].bullet[k].x		=enemy[shot[n].num].x+cos(PI/2-PI/150*t)*10;
				shot[n].bullet[k].y		=enemy[shot[n].num].y+sin(PI/2-PI/150*t)*80;
				shot[n].bullet[k].col	=5;
				shot[n].bullet[k].cnt	=0;
				shot[n].bullet[k].spd	=1.2;
				se_flag[0]=1;
			}
		}
	}
	if(t>=0 && t<240 && t%20==0){
		double angle=shotatan2(n);
		for(int i=0;i<20;i++){
			if(shot[n].flag!=2 && (k=shot_search(n))!=-1){
				shot[n].bullet[k].knd	=2;
				shot[n].bullet[k].angle	=angle+PI2/20*i;
				shot[n].bullet[k].flag	=1;
				shot[n].bullet[k].x		=enemy[shot[n].num].x;
				shot[n].bullet[k].y		=enemy[shot[n].num].y;
				shot[n].bullet[k].col	=4;
				shot[n].bullet[k].cnt	=0;
				shot[n].bullet[k].spd	=4;
			}
		}
	}
}


void shot_bullet_H008(int n){
   int t=shot[n].cnt;
    int k;
    if(t>=0 && t<1200 && t%90==0){
        double angle=rang(PI);
        for(int j=0;j<3;j++){//途中から2分裂する分
            for(int i=0;i<25;i++){//一度に60個
                if(shot[n].flag!=2 && (k=shot_search(n))!=-1){
                    shot[n].bullet[k].knd    =3;//8番の弾
                    shot[n].bullet[k].angle  =angle+PI2/25*i;//円形60個
                    shot[n].bullet[k].flag   =1;
                    shot[n].bullet[k].x      =enemy[shot[n].num].x;
                    shot[n].bullet[k].y      =enemy[shot[n].num].y;
                    shot[n].bullet[k].col    =0;//4番の色
                    shot[n].bullet[k].cnt    =0;
                    shot[n].bullet[k].state  =1;//ステータス。0か1かで回転がかわる
                    shot[n].bullet[k].spd    =2;
                }

            }
			for(int i=0;i<25;i++){//一度に60個
                if(shot[n].flag!=2 && (k=shot_search(n))!=-1){
                    shot[n].bullet[k].knd    =3;//8番の弾
                    shot[n].bullet[k].angle  =angle+PI2/25*i;//円形60個
                    shot[n].bullet[k].flag   =1;
                    shot[n].bullet[k].x      =enemy[shot[n].num].x;
                    shot[n].bullet[k].y      =enemy[shot[n].num].y;
                    shot[n].bullet[k].col    =1;//4番の色
                    shot[n].bullet[k].cnt    =0;
                    shot[n].bullet[k].state  =0;//ステータス。0か1かで回転がかわる
                    shot[n].bullet[k].spd    =3;
                }

            }
        }
        se_flag[0]=1;//発射音鳴らす
    }
    for(int i=0;i<SHOT_BULLET_MAX;i++){//全弾分
        if(shot[n].bullet.flag>0){//登録されている弾があれば
            int state=shot[n].bullet.state;
            int cnt=shot[n].bullet.cnt;
            if(30<cnt && cnt<120){//30~120カウントなら
                shot[n].bullet.spd-=1.2/90.0;//90カウントかけて1.2減らす
                shot[n].bullet.angle+=(PI/2)/90.0*(state?-1:1);//90カウントかけて90°傾ける
            }
        }
    }
}

yu

Re:ソースの書き換え

#2

投稿記事 by yu » 16年前

boss_shotH.cpp内の

boss_shot_bulletHxxx関数内にコードをコピペして
そのコードをすこし変えるだけでできると思いますよ

具体的には
敵の座標を指定しているところをボスの座標に変更(enemy[shot[n].num].xをboss.xにする。など)
shot[n].bullet.cnt等をboss_shot.bullet.cntに変更
shot[n].cntをboss_shot.cntに変更
shot[n].flag!=2を削除
SHOT_BULLET_MAXをBOSS_BULLET_MAXに変更
shot_search(n)をsearch_boss_shot()に変更
#追記 shotatan2(n)をbossatan2()に変更



まだ変更すべき点があるかもしれません・・・。

自分も最初は適当に弄って遊んでましたw

芽衣子

Re:ソースの書き換え

#3

投稿記事 by 芽衣子 » 16年前

素早い回答ありがとうございます!早速試してみます。
失敗しつつ自分で回答を導き出せるようがんばります!

yu

Re:ソースの書き換え

#4

投稿記事 by yu » 16年前

箇条書きで分かりづらいかなーと思ったので、
実際に書いてみました。

適切な場所にコピペして実行してみてください。(boss_shot_bulletH000と002にコピペすれば良いかも)
(自分は50章で作りました)

後、boss_shot.cnt%TM000;
とかしてますが
これはボスにずっと弾を発射させるようにするために
TM000を周期にその弾幕をループさせています。


#追記
#う・・・投稿時間が被って申し訳無いです。
#自分で解決するのが一番だと思うので、どうしても分からなかったら見てくださいw

芽衣子

Re:ソースの書き換え

#5

投稿記事 by 芽衣子 » 16年前

わわわ正解まで頂きありがとうございます・・・・・・!
とてもありがたいです、ありがとうございますー!

閉鎖

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