0

次のアプリをどのように実装するべきかについて、私は本当にかなり混乱しています。私はコードの 90% を持っていますが、最後の 10% は把握できません。イベントの流れを制御する方法がわかりません。最初にアプリ/ゲームについて説明します。

ゲーム

イベントの流れはこんな感じ。ユーザーは、チーム数とラウンド数を設定します。その後、「チーム 1 にパス」という画面が表示されます。次に、チーム 1 のプレーヤーがボタンを押すと、別のビューが表示されます。

このビューでは、現在のプレーヤーは、画面上の単語/名前をチームの他のプレーヤーに言わずに説明しようとします。誰かが単語/名前を正しく推測するたびに、プレーヤーはボタンを押してより多くの単語を引き出し、そのチームのスコアに 1 を追加します。これは、タイマーが切れるまで続きます。

タイマーが切れると、このビューはナビゲーション コントローラーからポップされ、前のビューはプレーヤーにチーム 2 にパスするように伝えます。

これはチーム数とラウンド数だけループします。

私の問題

私の問題は、これらすべてのイベントを追跡する方法を本当に理解していないことです。スコアやチーム名などの配列を保持する「GameBrain」クラスがありますが、各 ViewController からこれにアクセスする方法がわかりません。

以前に同様の質問をし、誰かが Singleton クラスを提案しましたが、これは悪い習慣であり、MVC 設計パターンに従ってこれを行うことができるはずだと感じずにはいられません。

私の質問は、このようなゲームのコーディングにどのようにアプローチしますか?

漠然とした質問で申し訳ありません。どんな助けでも大歓迎です。

編集:デリゲートは正しい方法ですか? つまり、「GameBrain」から必要な最初の ViewController を作成し、脳 (selfこの場合) をこのインスタンスのデリゲートとして設定し、ViewController に「このラウンドは終了しました」メソッドを呼び出してもらいますか?次のViewControllerを起動する脳?

4

2 に答える 2

3

あなたの GameBrain はシングルトンとして設計する必要があります。

このクラスはすべてのviewControllerからアクセスする必要があり、このクラスの複数のインスタンスを持つ必要がないため、これはシングルトンに完全に適合します

于 2012-07-02T13:38:02.997 に答える
1

私はコメントから始めましたが、答えに移りました。

要するに、@Omarが言うように、Singletonがうまく機能する可能性があることを簡単に説明します。

より長いバージョンは、数年前にこのような簡単な小さなものを設計し、リリースしましたが、すべてうまくいきました。数か月後、私たちは数百万人のユーザーを抱え、複数の開発フェーズを経て、私たちが始めたシングルトン パターンがプロジェクトを台無しにしていました。私の上司は当初、これは小さなプロジェクトであり、2 週間以内にリリースして完了すると主張していたことに言及するかもしれません。

シングルトンがうまく機能しなかった理由は、モジュール性が制限されたためです。最終的に、「ゲーム関連」のすべてがこのクラスを介して返される必要があり、別のクラスにメッセージが送信され、別のクラスがシングルトンなどに応答を返しました。それは恐ろしいことでした。

時間とエネルギーがあれば、ゲームごとに GameBrain (または何でも) クラスを作成することをお勧めします。とにかく、このクラスは通常「ゲーム画面」でのみ使用されるため、メニューに戻ったりメールを送信したりするときに保持する必要はありません。永続化が必要な場合は、データベースに支えられたものにします。1 つか 2 つの余分な場所でのみ必要な場合 (勝利画面で誰が勝ったかを知る必要がある場合など) は、参照して渡すだけです。1 回か 2 回実行するだけで済みます。

幸運を。

于 2012-07-02T13:52:31.273 に答える