弾幕の管理について

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

弾幕の管理について

#1

投稿記事 by ひよこ » 16年前

龍神録の改造でSTGを作っているのですが、
龍神録の館には下のようなものがあるのですが、
//func.cpp
void (*boss_shot_bullet[DANMAKU_MAX])() =
{
//中ボス
				boss_shot_bulletH000,//ノーマル
				boss_shot_bulletH002,//スペル~パーフェクトフリーズ~
			//ラスボス
				boss_shot_bulletH001,//ノーマル~サイレントセレナ~
				boss_shot_bulletH004,//スペル~ケロちゃん~
				boss_shot_bulletH009,//スペル~反魂蝶~
			//終り
				boss_shot_bulletH000,//ぬるぽ回避用(この弾幕は出てこない)};
}
たくさんステージを作りたいので
自分はわかりやすくswitch文を使って
書いたのですがエラーが出ます。
void (*boss_shot_bullet[DANMAKU_MAX])() =
{
	switch(stage){
			case 0:
			//中ボス
				boss_shot_bulletH000,//ノーマル
				boss_shot_bulletH002,//スペル~パーフェクトフリーズ~
			//ラスボス
				boss_shot_bulletH001,//ノーマル~サイレントセレナ~
				boss_shot_bulletH004,//スペル~ケロちゃん~
				boss_shot_bulletH009,//スペル~反魂蝶~
			//終り
				boss_shot_bulletH000,//ぬるぽ回避用(この弾幕は出てこない)
			break;
			
			case 1:
			//中ボス
				boss_shot_bulletH012,//ノーマル
				boss_shot_bulletH013,//スペル~パーフェクトフリーズ~
			//ラスボス
				boss_shot_bulletH014,//ノーマル~サイレントセレナ~
				boss_shot_bulletH005,//スペル~ケロちゃん~
				boss_shot_bulletH003,//スペル~反魂蝶~
			//終り
				boss_shot_bulletH000,//ぬるぽ回避用(この弾幕は出てこない)
				break;
	}
};
どうすればいいでしょうか?なぜそうなるのでしょうか?

通りすがり

Re:弾幕の管理について

#2

投稿記事 by 通りすがり » 16年前

関数ポインタについて調査したほうが良いです。

ttp://www.geocities.jp/ky_webid/c/043.html

MNS

Re:弾幕の管理について

#3

投稿記事 by MNS » 16年前

代入しようとしているデータの中に、
制御構文などは埋め込めないのではないでしょうか?
(というか、埋め込めないはずです)

ですので、switch文を外に持ってくるなどのアプローチをとってみてはどうでしょう?
(ただし、配列に対して一括に代入することは出来なくなるかも知れませんが。

ひよこ

Re:弾幕の管理について

#4

投稿記事 by ひよこ » 16年前

ただいま勉強しながら試行錯誤中なのですが、
コンパイルしたら次のようなエラーが出ました。
関数定義のようですが、パラメータ リストがありません。外見上の本体をスキップします。
どういう意味なのでしょうか?

ねこ

Re:弾幕の管理について

#5

投稿記事 by ねこ » 16年前

どう修正したのか分からないのですが、switch使おうとしてる点から何か妙な処理をしてるんじゃないかなと。
エラーの意味は検索したらMSのヘルプ出たのでそのへん見てみてください。

処理についてですが関数ポインタの配列に関数突っ込んでるだけなので、
ステージの都度配列の中を入れ替えてあげれば良いんじゃないでしょうか?
よーく見ると int a[3] = { 0, 1, 2 };とほぼ同じ事してるんですよ。

ひよこ

Re:弾幕の管理について

#6

投稿記事 by ひよこ » 16年前

おはようございます。
int a[3] = { 0, 1, 2 };を見て考えたらできました。
通りすがりさん、MNSさん、ねこさん、ありがとうございました。

閉鎖

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