複数面のつなげ方
Re:複数面のつなげ方
かんたんな考え方ですけど
参考になるでしょうか・・・・
まずステージを表す数を作り
スイッチ文で
stage[/url]
ケース0
初期化
ケース1
stage[0]だったら1面へ
stage[2]だったら2面へ
ケース2 1面
ラスボスが倒されたら
stage[/url]の中身を増やしケース1へ
って感じでいいんでしょうかね。
参考になるでしょうか・・・・
まずステージを表す数を作り
スイッチ文で
stage[/url]
ケース0
初期化
ケース1
stage[0]だったら1面へ
stage[2]だったら2面へ
ケース2 1面
ラスボスが倒されたら
stage[/url]の中身を増やしケース1へ
って感じでいいんでしょうかね。
Re:複数面のつなげ方1
アドバイスありがとうございますm(__)m
その方法でやってみようと思います。
この場合、各ステージの道中やボスの分岐はどのようにすればいいのでしょうか?
その方法でやってみようと思います。
この場合、各ステージの道中やボスの分岐はどのようにすればいいのでしょうか?
Re:複数面のつなげ方1
こういうのでよろしいのでしょうかね・・・
ケース0
最低限の初期化
ケース1
stage[0]だったら1面へ
stage[2]だったら2面へ
ケース2
1面の内容(敵のデータ、音楽など)をロード
ケース3
1面
ラスボスが倒されたら
ケース2のデータを削除
stage[/url]の中身を増やしケース1へ
ケース4
2面の内容(敵のデータ、音楽など)をロード
ケース5
2面
ラスボスが倒されたら
ケース2のデータを削除
stage[/url]の中身を増やしケース1へ
繰り返し
自分にはこれしか思いつきませんね。
ケース0
最低限の初期化
ケース1
stage[0]だったら1面へ
stage[2]だったら2面へ
ケース2
1面の内容(敵のデータ、音楽など)をロード
ケース3
1面
ラスボスが倒されたら
ケース2のデータを削除
stage[/url]の中身を増やしケース1へ
ケース4
2面の内容(敵のデータ、音楽など)をロード
ケース5
2面
ラスボスが倒されたら
ケース2のデータを削除
stage[/url]の中身を増やしケース1へ
繰り返し
自分にはこれしか思いつきませんね。
Re:複数面のつなげ方1
なんかプログラムが変でした。
まちがい
ケース1
stage[0]だったら1面へ
stage[2]だったら2面へ
修正後
ケース1
stage[0]だったら1面へ
stage[1]だったら2面へ
あくまで参考に・・・してください。
まちがい
ケース1
stage[0]だったら1面へ
stage[2]だったら2面へ
修正後
ケース1
stage[0]だったら1面へ
stage[1]だったら2面へ
あくまで参考に・・・してください。
Re:複数面のつなげ方1
同じ名前の方がw
自分は一つ一つケースで分けるのではなくて
ステージに番号を付けて処理しました。
後はその番号に合わせて画像や敵情報をロードしました。
しかし、自分のやりやすい方法で良いと思います。
後、ひよこさんに対してですが、
stageは配列じゃなくてもいいんじゃないでしょうか?
stage++;
で大丈夫だと思います。
ステージを 0→1→4→2
のように繋げるのならそちらのほうで良いと思いますが
#追記
#配列なんてどこにも書いてありませんでした・・・
#勝手なこと言ってすみません;
自分は一つ一つケースで分けるのではなくて
ステージに番号を付けて処理しました。
後はその番号に合わせて画像や敵情報をロードしました。
しかし、自分のやりやすい方法で良いと思います。
後、ひよこさんに対してですが、
stageは配列じゃなくてもいいんじゃないでしょうか?
stage++;
で大丈夫だと思います。
ステージを 0→1→4→2
のように繋げるのならそちらのほうで良いと思いますが
#追記
#配列なんてどこにも書いてありませんでした・・・
#勝手なこと言ってすみません;
Re:複数面のつなげ方11
質問させていただいた方のyuです。
名前同じでしたね(笑
獲得ポイントや精進状態が共有されてしまっているようなのですが、名前を変えた方がいいでしょうかf^_^;
さて
回答ありがとうございます。
ステージ自体の分岐のさせかたは分かりましたが、具体的なステージの内容の分岐について分からない所が出てしまったので質問させてください。
データを読み込む系(BGMや道中のcsvデータ)の分岐は、多分、ステージごとに、読み込むファイルの種類を変えてやればいいのかなと思います。
しかし、ボス関連のデータの分岐がわかりません。
(一面ではこのボスがでてきてこんな攻撃をしてくる。二面ではこのボスが出てきてこんな攻撃をしてくる。…というような分岐です)
boss_shot.cppで処理をすればいいのでしょうか。
名前同じでしたね(笑
獲得ポイントや精進状態が共有されてしまっているようなのですが、名前を変えた方がいいでしょうかf^_^;
さて
回答ありがとうございます。
ステージ自体の分岐のさせかたは分かりましたが、具体的なステージの内容の分岐について分からない所が出てしまったので質問させてください。
データを読み込む系(BGMや道中のcsvデータ)の分岐は、多分、ステージごとに、読み込むファイルの種類を変えてやればいいのかなと思います。
しかし、ボス関連のデータの分岐がわかりません。
(一面ではこのボスがでてきてこんな攻撃をしてくる。二面ではこのボスが出てきてこんな攻撃をしてくる。…というような分岐です)
boss_shot.cppで処理をすればいいのでしょうか。
Re:複数面のつなげ方1
>>親記事のyuさん
>ボス関連のデータの分岐がわかりません
BGM等のデータが分岐できるのであれば考え方は同じだと思います。
例えば・・・
1面:1面ボスの情報、攻撃パターン関数1, 2, 3, 4・・・
2面:2面ボスの情報、攻撃パターン関数1, 2, 3, 4・・・
3面:3面ボスの情報、攻撃パターン関数1, 2, 3, 4・・・
このようにステージ毎に完全に分けて実装するという手段があります。
似たような攻撃で関数を二つ作るのはどうかな~と感じた時は
引数で変えれるように実装したりするといいと思います。
>boss_shot.cppで処理をすればいいのでしょうか
boss_shot.cppで全て処理する必要はないです。
必要であれば、yuさんがファイルを追加しても構いません。(Stage1_Boss.cpp・Stage2_Boss.cpp等)
>ボス関連のデータの分岐がわかりません
BGM等のデータが分岐できるのであれば考え方は同じだと思います。
例えば・・・
1面:1面ボスの情報、攻撃パターン関数1, 2, 3, 4・・・
2面:2面ボスの情報、攻撃パターン関数1, 2, 3, 4・・・
3面:3面ボスの情報、攻撃パターン関数1, 2, 3, 4・・・
このようにステージ毎に完全に分けて実装するという手段があります。
似たような攻撃で関数を二つ作るのはどうかな~と感じた時は
引数で変えれるように実装したりするといいと思います。
>boss_shot.cppで処理をすればいいのでしょうか
boss_shot.cppで全て処理する必要はないです。
必要であれば、yuさんがファイルを追加しても構いません。(Stage1_Boss.cpp・Stage2_Boss.cpp等)
Re:複数面のつなげ方1
質問者の方のyuです
名前が被ってしまっていたので変えました。
データの読み込みについて質問です。
例えば、load.cpp内に
load.cpp()
…ゲームボードや弾画像など、全ステージ共通のデータの読み込み
load_stage_1()
…一面で使うBGMや敵のドット絵の読み込み
load_stage_2()
…二面で使うBGMなどの読み込み
を作り、main.cppで
case0 :
load();
・
・
・
case99 ://一面初期化
load_stage_1();
・
・
case100 ://一面開始
・
・
・
case199 ://二面初期化
load_stage_2();
・
・
case200 ://二面開始
・
・
…としていく場合に、一面が終わった時、load()はそのままにしてload_stage_1()の読み込みを消し、load_stage_2を読み込みたいのですがどうすればよいでしょうか。
名前が被ってしまっていたので変えました。
データの読み込みについて質問です。
例えば、load.cpp内に
load.cpp()
…ゲームボードや弾画像など、全ステージ共通のデータの読み込み
load_stage_1()
…一面で使うBGMや敵のドット絵の読み込み
load_stage_2()
…二面で使うBGMなどの読み込み
を作り、main.cppで
case0 :
load();
・
・
・
case99 ://一面初期化
load_stage_1();
・
・
case100 ://一面開始
・
・
・
case199 ://二面初期化
load_stage_2();
・
・
case200 ://二面開始
・
・
…としていく場合に、一面が終わった時、load()はそのままにしてload_stage_1()の読み込みを消し、load_stage_2を読み込みたいのですがどうすればよいでしょうか。
Re:複数面のつなげ方1
私もyuさんと同じく、caseで分けるのではなく、ステージに番号を付けて、その番号に合わせてデータをロードするようにしています。
龍神録は通常5面+EXステージ+ファンタズムステージなんですが、
計算上EXは6面、ファンタズムは7面という考え方でした。
敵の出現データやHP、その他諸々の情報が書かれている
1面の情報を持った
1.dat
というファイル、
2面の情報を持った
2.dat
というファイル、、、
このように作っておけば現在のステージ数を表すStageという変数があったならば
sprintf(FileName, "%d.dat", Stage);
fopen(FileName, "rb");
fread....
といった処理が出来て便利では無いかと思います。
基本的に「何か特別な変数を沢山用意する」とか「様々な新しい考え方を取り入れないと
複数ステージが作れない」とかってことは無いと思います。
データのロードが個別に行えたのなら、今まで使っていた
敵の出現情報であったりする部分に今まで通り代入すればいいだけです。
ただ、ゲームに関わるデータを変数宣言と同時に格納している部分があればそれを
ファイルからロード出来るように変更して下さい。
そうすることで、色々な変数が使いまわせます。
後、違うとするならば、ini関数で初期化する時に全部初期化しないように気をつけること位でしょうか。
例えば、ゲームの仕様にもよりますが、自機の残機数データやスコアデータ、現在のステージ数のデータなんかまで一緒に
初期化してしまうと最初の状態戻ってしまいます。
その辺気をつけたら大丈夫だと思います。
>>一面が終わった時、load()はそのままにしてload_stage_1()の読み込みを消し、load_stage_2を読み込みたいのですがどうすればよいでしょうか。
load_stage_1で読み込んだデータを消去する関数
delete_stage_1なるものを用意し、load_stage_2が呼ばれる前に呼んでやればいかがでしょうか?
龍神録は通常5面+EXステージ+ファンタズムステージなんですが、
計算上EXは6面、ファンタズムは7面という考え方でした。
敵の出現データやHP、その他諸々の情報が書かれている
1面の情報を持った
1.dat
というファイル、
2面の情報を持った
2.dat
というファイル、、、
このように作っておけば現在のステージ数を表すStageという変数があったならば
sprintf(FileName, "%d.dat", Stage);
fopen(FileName, "rb");
fread....
といった処理が出来て便利では無いかと思います。
基本的に「何か特別な変数を沢山用意する」とか「様々な新しい考え方を取り入れないと
複数ステージが作れない」とかってことは無いと思います。
データのロードが個別に行えたのなら、今まで使っていた
敵の出現情報であったりする部分に今まで通り代入すればいいだけです。
ただ、ゲームに関わるデータを変数宣言と同時に格納している部分があればそれを
ファイルからロード出来るように変更して下さい。
そうすることで、色々な変数が使いまわせます。
後、違うとするならば、ini関数で初期化する時に全部初期化しないように気をつけること位でしょうか。
例えば、ゲームの仕様にもよりますが、自機の残機数データやスコアデータ、現在のステージ数のデータなんかまで一緒に
初期化してしまうと最初の状態戻ってしまいます。
その辺気をつけたら大丈夫だと思います。
>>一面が終わった時、load()はそのままにしてload_stage_1()の読み込みを消し、load_stage_2を読み込みたいのですがどうすればよいでしょうか。
load_stage_1で読み込んだデータを消去する関数
delete_stage_1なるものを用意し、load_stage_2が呼ばれる前に呼んでやればいかがでしょうか?
Re:複数面のつなげ方111
ありがとうございますm(__)m
難しいですね…
このサイトで初めてプログラミングに触れたもので、基本的な所が分からなかったりするんです;
最後の、『読み込んだデータを削除する関数』について詳しく教えていただけませんでしょうか。
難しいですね…
このサイトで初めてプログラミングに触れたもので、基本的な所が分からなかったりするんです;
最後の、『読み込んだデータを削除する関数』について詳しく教えていただけませんでしょうか。
Re:複数面のつなげ方11
難しいことではないですよ。
例えばImageAという名前の変数にAという画像をロードしたとしましょう。
ロード関数では
ImageA = LoadGraph(A);
とロードしているかもしれません。ならば消去する時は
DeleteGraph(ImageA);
で消せますよね。
ですからもし仮にload_stage_1で
ImageA = LoadGraph(A);
ImageB = LoadGraph(B);
ImageC = LoadGraph(C);
してるならdelete_stage_1内で
DeleteGraph(ImageA);
DeleteGraph(ImageB);
DeleteGraph(ImageC);
すればいいというただそれだけのことです。
例えばImageAという名前の変数にAという画像をロードしたとしましょう。
ロード関数では
ImageA = LoadGraph(A);
とロードしているかもしれません。ならば消去する時は
DeleteGraph(ImageA);
で消せますよね。
ですからもし仮にload_stage_1で
ImageA = LoadGraph(A);
ImageB = LoadGraph(B);
ImageC = LoadGraph(C);
してるならdelete_stage_1内で
DeleteGraph(ImageA);
DeleteGraph(ImageB);
DeleteGraph(ImageC);
すればいいというただそれだけのことです。
Re:複数面のつなげ方1
先程教えてもらったデータの削除ですが、csvデータの読み込みをしているload_story()の場合はどのようにすればいいでしょうか。画像の読み込み、削除と同じようにできますか?