1

私は現在、学校向けのプロジェクトに取り組んでいます。Java で書かれた Tic Tac Toe ゲームを、よりうまく機能するものにリファクタリングする必要があります。指定されたコードは大きな問題であり、ユーザー インターフェイスがうまく機能していません。

問題は、2 人のプレイヤーのビューがゲームに通知されないことです。したがって、オブザーバー パターンを実装する必要があります。

http://www.imgdumper.nl/uploads6/50a794d4ea6ba/50a794d4e2d9f-now.jpg

この画像は、指定されたコードの UML です。

実際のゲームのように機能させるには、次のような構造を作成するとします。

http://www.imgdumper.nl/uploads6/50a7953c6c6b3/50a7953c64186-new.jpg

わかりました、その通りだと思います。しかし、このプロジェクトの目的は、MVC パターンにリファクタリングすることです。学校から提供されたプレゼンテーションで、次のスキームを見つけました: (URL についてはコメントを参照)

しかし、MVC パターンの要件を満たすコードにリファクタリングする方法がまったくわかりません。誰かが私にこれをどのように行うべきかを説明してくれたらいいのにと思います。たとえば、モデル、コントローラー、ビューとは何ですか?

4

1 に答える 1

1

アプリケーションの現在のビュー レイヤーの近くに MVC パターンを適用します。基本的に、MVC は現在の非 UI ゲーム ロジックの上に置くことができ、そのロジックはService Layerにカプセル化できます。

Modelは:

  • SingleSquareState (X、O、または NULL)
  • GameBoard(9~3nサイズ)
  • プレーヤー

Viewボードを表示します -- これは本質的にボード「であり」、X、O、または NULL にすることができる 9 (または sizeOf(GameBoard)) の正方形を持ちます -- おそらく配列がここで機能します。ここに多くのロジックを配置するのは避け、コントローラーに任せてください。コントローラーはビューに何をすべきかを伝えます。

Controllerプレーヤーが行っている動きを Service (下記) に伝えます。次に、サービスから更新された GameState を受け取り、それを表示する方法をビューに伝えます。

Service(別名 GameState) は、すべてのプレイヤーのゲームの状態を追跡します。コントローラーが呼び出すことができる Move というメソッドがある場合があります。サービスは、ゲームの状態などを評価することによって、その映画が合法であるかどうかを検証します。次に、サービスは更新された状態をコントローラーに返します。

于 2012-11-17T14:12:58.323 に答える