私は、学習のために MVC アーキテクチャを適切に実装しようとしている Java カード ゲーム アプリケーションに取り組んできました。現在、デッキ、テーブル、およびすべてのプレーヤーのモデルを実装しています。モデルごとにビューアー クラスも作成しました。各ビューアーはそれぞれのモデルを JPanel に表示します。次に、すべてのビューアーを JFrame に配置する GameViewer クラスを作成します。
私の最上位クラスは、すべてのモデルとビューアーのインスタンスを作成する Main を呼び出します。私は現在、ActionListener クラスを使用してユーザーからのボタンのクリックを探し、それに応じてビューアーとモデルを変更するコントローラーを実装しようとしています。これを行う最善の方法については、私は混乱しています。
私のゲームの設計は非常にシーケンシャルで、ゲームはユーザーにメッセージを表示し、マウス クリックによるユーザーの入力を待ってから続行します。このため、実際のゲームをゲームが終了するまで、各反復がゲームのラウンドを表す Main の while ループ。
問題は、特定の時間にユーザーからの入力にのみ関心があることです。たとえば、ユーザーにメッセージを表示して、続行するには [OK] ボタンをクリックするように指示します。この時点では、[OK] ボタンのクリックを探しているだけなので、カードの 1 つをクリックしてもかまいません。また、ユーザーにカードを選択するように求めることもありますが、その場合はユーザーがカードをクリックするのを待っており、[OK] ボタンからのクリックには関心がありません。
ポーリングなしでこれを実装したいのですが、これを行う最善の方法がわかりません。ユーザー入力を待っている状態になった場合、ActionListener からのイベント コールバックが通知を送信するまで、wait() メソッドを使用してゲーム スレッドをスリープ状態にしますか?
それ以外の場合、Main でシーケンシャル コードを使用するのは間違っていますか? ActionListeners からのイベント コールバック内にすべてのゲーム ロジックを実装する必要がありますか?
前もって感謝します。