弾幕のスペルの表示
-
チルチル
Re:弾幕のスペルの表示
スペルってスペル名のことですか?
スペル名を書いた画像を描画するか、
DrawString関数やDrawFormatString関数などの文字出力系関数に
GetDrawStringWidth関数など組み合わせて表示すればいいと思います。
スペル名を書いた画像を描画するか、
DrawString関数やDrawFormatString関数などの文字出力系関数に
GetDrawStringWidth関数など組み合わせて表示すればいいと思います。
-
ひよこ
Re:弾幕のスペルの表示
すみません。わかりずらいですね。
スペル名を表示させようと思ったら
表示されないということなんですが。どうしてでしょうか。
別トピの流星書記のゲームです。
スペル名を表示させようと思ったら
表示されないということなんですが。どうしてでしょうか。
別トピの流星書記のゲームです。
-
yu
Re:弾幕のスペルの表示
あまりにも情報が少ないと思います・・・
具体的にどのような処理をしているのかが分からないので
答えようが無いと思います。
上手くいかないところのソースコードを見せてくださったら
何か分かるかもしれません。
具体的にどのような処理をしているのかが分からないので
答えようが無いと思います。
上手くいかないところのソースコードを見せてくださったら
何か分かるかもしれません。
-
ひよこ
Re:弾幕のスペルの表示
そうですね。きっぱりと決心しました。
こちらがうまくいかなかったソースです。
こちらがうまくいかなかったソースです。
void boss_shot_bulletH012(){
DrawString( 190 , 40, "虹符 カラフルドロップ" ,GetColor( 255 , 255 , 255 ) );
#define TM000 120
int i,k,t=boss_shot.cnt%TM000,t2=boss_shot.cnt;
double angle;
//60カウント以下で10カウントに1回
if(t<60 && t%10==0){
angle=bossatan2();//自機とボスとの成す角
for(i=0;i<30;i++){
if((k=search_boss_shot())!=-1){
boss_shot.bullet[k].col = GetRand(1);//弾の色
boss_shot.bullet[k].x = boss.x;//座標
boss_shot.bullet[k].y = boss.y;
boss_shot.bullet[k].knd = 5;//弾の種類
boss_shot.bullet[k].angle = angle+PI2/30*i;//角度
boss_shot.bullet[k].flag = 1;
boss_shot.bullet[k].cnt = 0;
boss_shot.bullet[k].spd = 3;//スピード
se_flag[0]=1;
}
}
}
if(t<60 && t%10==0){
angle=bossatan2();//自機とボスとの成す角
for(i=0;i<30;i++){
if((k=search_boss_shot())!=-1){
boss_shot.bullet[k].col = GetRand(5);//弾の色
boss_shot.bullet[k].x = 200+i*5;//座標
boss_shot.bullet[k].y = boss.y;
boss_shot.bullet[k].knd = 1;//弾の種類
boss_shot.bullet[k].angle = bossatan3(k, boss_shot.bullet[k].x, boss_shot.bullet[k].y);//角度
boss_shot.bullet[k].flag = 1;
boss_shot.bullet[k].cnt = 0;
boss_shot.bullet[k].spd = 3;//スピード
se_flag[0]=1;
}
}
}
if(t<60 && t%10==0){
angle=bossatan2();//自機とボスとの成す角
for(i=0;i<30;i++){
if((k=search_boss_shot())!=-1){
boss_shot.bullet[k].col = GetRand(5);//弾の色
boss_shot.bullet[k].x = 100+i*5;//座標
boss_shot.bullet[k].y = boss.y;
boss_shot.bullet[k].knd = 1;//弾の種類
boss_shot.bullet[k].angle = bossatan3(k, boss_shot.bullet[k].x, boss_shot.bullet[k].y);//角度
boss_shot.bullet[k].flag = 1;
boss_shot.bullet[k].cnt = 0;
boss_shot.bullet[k].spd = 3;//スピード
se_flag[0]=1;
}
}
}
}
よろしくおねがいします。-
ひよこ
Re:弾幕のスペルの表示
よくわかりませんが、今わかるのは、成功する、成功しないソースがあることと
graph.cpp
graph.cpp
void graph_main(){
if(bright_set.brt!=255)SetDrawBright(bright_set.brt,bright_set.brt,bright_set.brt);
graph_back_main();//背景描画メイン
graph_effect(0);//敵が死ぬエフェクト
if(bright_set.brt!=255)SetDrawBright(255,255,255);
graph_effect(4);//喰らいボムのエフェクト
if(bright_set.brt!=255)SetDrawBright(bright_set.brt,bright_set.brt,bright_set.brt);
graph_child();//ボスのアシスト描画
graph_item();//アイテム描画
graph_boss();//ボス描画
graph_enemy();//敵の描画
graph_cshot();//自機ショットの描画
if(bright_set.brt!=255)SetDrawBright(255,255,255);
graph_ch();//自機の描画
if(bright_set.brt!=255)SetDrawBright(bright_set.brt,bright_set.brt,bright_set.brt);
graph_lazer();//レーザーの描画
if(bright_set.brt!=255)SetDrawBright(255,255,255);
graph_effect(1);//ボムのエフェクト
graph_effect(2);//ボム線のエフェクト
graph_effect(3);//ボムキャラのエフェクト
graph_stage_title();//タイトルの表示
graph_board();//ボードの描画
graph_flash();//フラッシュ描画
graph_bullet();//弾の描画
graph_develop();
draw_fps(565,465);//fps描画
//draw_func_tm(450,250);//処理時間描画
}
main.cpp
case 7://通常処理
enter_func_tm("最初");
calc_ch(); enter_func_tm("キャラ計算");
ch_move(); enter_func_tm("キャラ移動");
cshot_main(); enter_func_tm("自機ショットメイン");
enemy_main(); enter_func_tm("敵処理メイン");
boss_shot_main();enter_func_tm("ボスショットメイン");
shot_main(); enter_func_tm("ショットメイン");
out_main(); enter_func_tm("当たり判定");
effect_main(); enter_func_tm("エフェクトメイン");
calc_main(); enter_func_tm("計算メイン");
graph_main(); enter_func_tm("描画メイン");
if(boss.flag==0)
stage_count++;
break;
というソースが書いてあることです。-
BEMANI
Re:弾幕のスペルの表示
>>ひよこさん
>よくわかりませんが・・・
yuさんが仰っていることは関数を呼ぶ順番が違うのではないかと言う事です。
スペル名描画();
背景描画();
としてしまうと、スペル名を描画した後に背景が描画されてしまうので、
結果、文字が背景の下に隠れてしまいます。
ですので、文字を描画する関数を背景描画の関数の後に入れてみましょう。
ちょっと気になったのですが、
boss_shot_bulletH012 という関数の中でスペル名を表示させているのでしょうか?
DrawString( 190 , 40, "虹符 カラフルドロップ" ,GetColor( 255 , 255 , 255 ) );
これが多分スペル名を描画しているのだと思いますが、
この boss_shot_bulletH012 という関数がどこにも見当たらないのですが
この関数をどこかで呼んでいますか?
>よくわかりませんが・・・
yuさんが仰っていることは関数を呼ぶ順番が違うのではないかと言う事です。
スペル名描画();
背景描画();
としてしまうと、スペル名を描画した後に背景が描画されてしまうので、
結果、文字が背景の下に隠れてしまいます。
ですので、文字を描画する関数を背景描画の関数の後に入れてみましょう。
ちょっと気になったのですが、
boss_shot_bulletH012 という関数の中でスペル名を表示させているのでしょうか?
DrawString( 190 , 40, "虹符 カラフルドロップ" ,GetColor( 255 , 255 , 255 ) );
これが多分スペル名を描画しているのだと思いますが、
この boss_shot_bulletH012 という関数がどこにも見当たらないのですが
この関数をどこかで呼んでいますか?
-
ひよこ
Re:弾幕のスペルの表示
そういうことなんですか。というより順番を変えてなくても表示された例があるので・・・
boss_shot_bulletH012 はひとつの弾幕をあらわしています。
龍神録の館の「1面を作って見よう」を改良したので呼ばれていると思います。
いちおうfunc.hをのせておきます。
boss_shot_bulletH012 はひとつの弾幕をあらわしています。
龍神録の館の「1面を作って見よう」を改良したので呼ばれていると思います。
いちおうfunc.hをのせておきます。
extern void boss_shot_bulletH000();
extern void boss_shot_bulletH001();
extern void boss_shot_bulletH002();
extern void boss_shot_bulletH003();
extern void boss_shot_bulletH004();
extern void boss_shot_bulletH005();
extern void boss_shot_bulletH006();
extern void boss_shot_bulletH007();
extern void boss_shot_bulletH008();
extern void boss_shot_bulletH009();
extern void boss_shot_bulletH010();
extern void boss_shot_bulletH011();
extern void boss_shot_bulletH012();
extern void boss_shot_bulletH013();
extern void boss_shot_bulletH014();
extern void boss_shot_bulletH015();
extern void boss_shot_bulletH016();
extern void boss_shot_bulletH017();
extern void boss_shot_bulletH018();
extern void boss_shot_bulletH019();
extern void boss_shot_bulletH020();
extern void boss_shot_bulletH021();
extern void boss_shot_bulletH022();
extern void boss_shot_bulletH023();
extern void boss_shot_bulletH024();
extern void boss_shot_bulletH025();
void (*boss_shot_bullet[DANMAKU_MAX])() =
{
//中ボス
boss_shot_bulletH005,//ノーマル
boss_shot_bulletH001,//遊符 宇宙の奥までつながる道
//ラスボス
boss_shot_bulletH011,
boss_shot_bulletH004,//宇宙の奥
boss_shot_bulletH010,
boss_shot_bulletH002,//宇宙にて開く花
boss_shot_bulletH012,//虹符 カラフルドロップ
boss_shot_bulletH007,//大風車
boss_shot_bulletH003,//流星雨
//終り
boss_shot_bulletH000,//ぬるぽ回避用(この弾幕は出てこない)
};