► スポイラーを表示
この日記には東方Projectのパクリから作ったと作者のDixqさん自らがいっている四聖龍神録の
さらに自らの手による二次創作といえなくもないような龍神録プログラミングの館について
Tatuによる無許可の講座っぽいのかなんなのかわからないものが存在します。
以上のことに対し、OKと思う方はこのままGO!、弾幕だけでいいやという方、
「興味ないね」と思った方はスポイラーを閉じてください。
長い割りに意味のない前書きからのスタートでございます。
弾を得点アイテムに変える処理
ボムを撃ったときやボスを倒した時に弾が得点アイテムにかわりますよね。
弾が多くて難しい弾幕を突破したときに弾が得点アイテムに変わるのは爽快だと思いませんか?
そんなわけで今回はそういう処理を書きます。
基本的には弾を得点アイテムにし、アイテムが追いかけるようにするだけです。
さて、弾が得点アイテムに変わる所を見てみるとアイテムになった後、
しばらくそこにとどまっている時間が存在します。
この状態はitem.state==2であるということにします。
アイテムの動きについてはアイテム計算の時にやればよいので後にしておきます。
最初にアイテムが100個しか出ない状態では足りないのでアイテムの最大数を増やすため
define.hのITEM_MAXをおおきくします。
define.hを以下のように変更
#define ITEM_MAX 10000
アイテムの番号を探す関数とボムと弾の判定がout.cppにあるのでout.cppを変更します。
なんかアイテム探しの関数がserch_itemになってますがそっとしてください。(気になる方は各自置換してください)
laod.cppというよくわからないファイル名がコメントにあったりもします。
out.cppに以下を追加
さらに自らの手による二次創作といえなくもないような龍神録プログラミングの館について
Tatuによる無許可の講座っぽいのかなんなのかわからないものが存在します。
以上のことに対し、OKと思う方はこのままGO!、弾幕だけでいいやという方、
「興味ないね」と思った方はスポイラーを閉じてください。
長い割りに意味のない前書きからのスタートでございます。
弾を得点アイテムに変える処理
ボムを撃ったときやボスを倒した時に弾が得点アイテムにかわりますよね。
弾が多くて難しい弾幕を突破したときに弾が得点アイテムに変わるのは爽快だと思いませんか?
そんなわけで今回はそういう処理を書きます。
基本的には弾を得点アイテムにし、アイテムが追いかけるようにするだけです。
さて、弾が得点アイテムに変わる所を見てみるとアイテムになった後、
しばらくそこにとどまっている時間が存在します。
この状態はitem.state==2であるということにします。
アイテムの動きについてはアイテム計算の時にやればよいので後にしておきます。
最初にアイテムが100個しか出ない状態では足りないのでアイテムの最大数を増やすため
define.hのITEM_MAXをおおきくします。
define.hを以下のように変更
#define ITEM_MAX 10000
アイテムの番号を探す関数とボムと弾の判定がout.cppにあるのでout.cppを変更します。
なんかアイテム探しの関数がserch_itemになってますがそっとしてください。(気になる方は各自置換してください)
laod.cppというよくわからないファイル名がコメントにあったりもします。
out.cppに以下を追加
//雑魚の弾幕の弾をアイテムに変える
void change_enemy_bullet_to_item(int s,int n){
int k=serch_item();
if(k!=-1){//あいているアイテム番号があったら
item[k].cnt=0;
item[k].flag=1;
item[k].knd=2;//弾点アイテムの番号
item[k].state=2;//しばらく止まっている状態
item[k].r=1.0;
item[k].x=shot[s].bullet[n].x;
item[k].y=shot[s].bullet[n].y;
item[k].v=0;
}
shot[s].bullet[n].flag=0;
}
//ボスの弾幕の弾をアイテムに変える
void change_boss_bullet_to_item(int n){
int k=serch_item();
if(k!=-1){//あいているアイテム番号があったら
item[k].cnt=0;
item[k].flag=1;
item[k].knd=2;//弾点アイテムの番号
item[k].state=2;//しばらく止まっている状態
item[k].r=1.0;
item[k].x=boss_shot.bullet[n].x;
item[k].y=boss_shot.bullet[n].y;
item[k].v=0;
}
boss_shot.bullet[n].flag=0;
}
//ボスの弾幕の弾全てをアイテムに変える
void change_boss_shot_to_item(){
int i;
for(i=0;i=540 && t%5==0){
boss_bullet_on(1,8,8,1,boss.x,boss.y,1,bossatan2(),0,3/180.0*(t-540+120),0,0,0,1);
}
for(i=0;i<BOSS_BULLET_MAX;i++){
if(boss_shot.bullet[i].flag==1){
switch(boss_shot.bullet[i].state){
case 1:
if(boss_shot.bullet[i].spd<4){
boss_shot.bullet[i].spd+=10.0/180;
}
else boss_shot.bullet[i].angle+=PI2/2000;
break;
case 2:
if(boss_shot.bullet[i].spd<4){
boss_shot.bullet[i].spd+=10.0/180;
}
else boss_shot.bullet[i].angle-=PI2/2000;
break;
}
}
}
}