トップページ > 記事閲覧
Stack Overflow とでて起動しない。
名前:ゆめ 日時: 2024/08/08 16:15

現在全10ステージのアクションゲームをDxlibを使用して制作しました。 ステージは関数化されていて、例えばStage2Loopという関数でステージ2が動作します。 メイン関数に1ステージ分だけ入れたら、動作します。 これが、メイン関数に10ステージ分を入れると Stack Overflow と出て、起動しません。 ステージ進行は、メイン関数内で↓ while(StageFlag == 1) { Stage1Loop(); //ステージクリア if(〜〜〜)StageFlag = 2; } while(StageFlag == 2) { Stage2Loop(); //ステージクリア if(〜〜〜)StageFlag = 3; } while(StageFlag == 3) (以下同様) というような感じです。 10ステージを一つのゲームにしたいのですが、それができません。 どうかご教授お願いできませんでしょうか。
メンテ

Page: 1 |

Re: Stack Overflow とでて起動しない。 ( No.1 )
名前:ゆめ 日時:2024/08/08 21:55

そもそもゲーム制作は素人で、ステージを一つのゲームにまとめるやり方が、これで正しいのかもわかりません。 一般的にはステージが始まるとき、NowLoading などが出ますから、ファイル自体が分かれて、それを読み込んでいるのでしょうか? そのやりかたがあったら教えていただきたいです。 今私のやり方は、別のcppファイルにステージの関数を作り、そのヘッダーファイルを作り、メイン関数のインクルードで一番上で全ステージのヘッダーファイルを読み込んでいます。
メンテ
Re: Stack Overflow とでて起動しない。 ( No.2 )
名前:管理人 日時:2024/08/09 00:47

> これが、メイン関数に10ステージ分を入れると Stack Overflow と出て、起動しません。 スタックオーバーフローはローカル変数( 関数内で定義されている変数や構造体や配列 )が多いと発生するエラーです サイズの大きい配列や構造体などが関数のローカル変数になっていないでしょうか? もしそのような配列や構造体があり、且つグローバル変数にしてしまっても問題ない場合は ローカル変数からグローバル変数に変更することでスタックオーバーフローを解消することができます > 一般的にはステージが始まるとき、NowLoading などが出ますから、ファイル自体が分かれて、それを読み込んでいるのでしょうか? ステージとステージの間で何をロードするかはソフトによって異なると思いますが 一般的には『そのステージでしか使用されない画像や音楽や効果音』がステージ開始前に読み込まれます 敵キャラクターの動きなどが C++ のプログラムではなく、スクリプトによって制御されている場合は、そのステージにしか登場しない 敵キャラクターのスクリプトがステージ開始前に読み込まれます > 今私のやり方は、別のcppファイルにステージの関数を作り、そのヘッダーファイルを作り、メイン関数のインクルードで一番上で全ステージのヘッダーファイルを読み込んでいます。 現在のPCやゲーム機は昔と比べて使用できるメモリの容量が非常に大きいので、その設計でも問題ないと思います ( スタックオーバーフローは解決する必要がありますが )
メンテ
Re: Stack Overflow とでて起動しない。 ( No.3 )
名前:ゆめ(解決済) 日時:2024/08/14 11:29

ローカル変数からグローバル変数にしたことで解決いたしました。 ご教授ありがとうございました!
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存