私はそれがどのように行われたかを見るために簡単なゲームを書こうとしています。私の現在の実装では、私は関数ポインタの配列を使用しています、私のメインゲームループ(剥奪)はこのように見えます。Cで異なるリソースのゲーム状態を扱う
while (stateid != STATE_EXIT) {
handle_events[stateid]();
logic[stateid]();
render[stateid]();
change_state(); // change state id, and load new state
}
このようにして、ゲームの状態によって異なる機能を呼び出すことができます。各状態は異なるリソースを持っているので、ゲームの状態は、タイトル、メニュー、またはレベル1などのようなものであってもよいし、また、私はここに、負荷を持っており、各状態のための機能をアンロードchange_state
ルックス(剥奪)
if (nextstate != STATE_NULL) {
unload_level[stateid]();
load_level[nextstate]();
stateid = nextstate;
nextstate = STATE_NULL;
}
がどのように処理するかです私はグローバルなvoidポインタを作っています。このグローバルは、ゲームの状態に応じてstruct game
またはstruct title
を指している可能性があります。たとえば、load_level [STATE_TITLE]が呼び出されると、struct title
が作成され、グローバルvoidポインタがそのアドレスに設定されます。だから、ゲームの状態関数は、このように使用することができます:
void logic_game()
{
struct game *resources = (struct game *) globalvoidpointer;
// do stuff with resources...
}
しかし、このすべての事は正しく感じません。それは私にとってより強く感じられます。ゲームのリソースや状態を管理することをどのように提案しますか? (これが過度に複雑ではないと言いますが、私はそれに固執する必要があります)。
おそらくhttp://gamedev.stackexchange.com/の質問ですか? –