1

Java でステート マネージャーの優れたチュートリアルを持っている人はいますか? 私は過去数日間これを調べてきました. ユーザー入力を受け取り、タイトル状態からゲーム状態に切り替えることができるようにする必要があります。前もって感謝します。

4

2 に答える 2

6

「Finite State Machine」という専門用語を使って正しい方向を示します。ゲーム メニューの場合は、FSM で十分です。バズワードがわかったので、グーグルで検索するだけでたくさんの例を見つけることができるはずです. 基本的な考え方は非常に単純ですが、さまざまな実装がたくさんあります。この種のゲーム状態遷移のシステムは、それほど極端である必要はないことを覚えておいてください。

私は個人的に、過度に設計された多次元状態遷移から巨大な数千行の switch ステートメントまで、あらゆる種類のものを見てきました。

ストリーミングやクレイジーなゲームの中断がない基本的なゲームの場合、おそらくこれよりも複雑ではないオブジェクト指向のアプローチを探す必要があります。

public enum GameState {
    TITLE_STATE = 0,
    MAINGAME_STATE,
    PAUSE_STATE,
}

void GameStateUpdate() {
     // handle update
    switch(m_curState) {
       case TITLE_STATE:
          UpdateTitleScreen();
          if(UserPressesEnter()) {
              m_curState = MAINGAME_STATE;
          }
          break;
       case MAINGAME_STATE:
          UpdateMainGame();
          if(UserPressesPause()) {
              m_curState = PAUSE_STATE;
          }
          break;
       case PAUSE_STATE:
          UpdatePause();
          if(UserDoneWithPause()) {
              m_curState = MAINGAME_STATE;
          }
          break;
    }
}

このようなものから作業して、一時停止メニューのポップインとアウト、または「MAINGAME_STATE」開始前の紹介ムービーなどの遷移状態を追加できるかどうかを確認します。

于 2012-01-21T00:39:43.793 に答える
0

列挙型は、状態を処理する方法です。これをチェックしてください:http: //docs.oracle.com/javase/tutorial/java/javaOO/enum.html

于 2012-01-21T03:18:23.383 に答える