MVC井字游戏

问题描述 投票:1回答:2

我目前正在为一个学校项目工作。我们应该将用Java编写的Tic Tac Toe游戏重构为更好的游戏。对于给定的代码,这是一个巨大的问题,用户界面无法正常运行。

问题是,游戏未获知两个玩家的观点。因此,我应该实现观察者模式。

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

此图像是给定代码的UML。

为了使其像真正的游戏一样工作,我想我将创建如下结构:

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

[好,我认为是正确的。但是该项目的目的是将其重构为MVC模式。在学校提供的演示中,我发现了该方案:(请参阅有关URL的评论)

但是我完全不知道如何将代码重构为满足MVC模式要求的代码。如果有人可以向我解释我应该如何做,那就太好了。像是什么模型,contoller和视图?

java model-view-controller observer-pattern tic-tac-toe
2个回答
1
投票

我将MVC模式应用到应用程序当前的View层附近。本质上,MVC可以位于当前非UI游戏逻辑之上,并且该逻辑可以封装在Service Layer中。

Model是:

  • SingleSquareState(X,O或NULL)
  • GameBoard(大小为9至3n)
  • 玩家

View显示棋盘-本质上是“棋盘”,并具有9个(或sizeOf(GameBoard))正方形,可以将其变为X,O或NULL-也许可以在此处进行数组处理。避免在此处放置太多逻辑,而将其留给控制器。控制器告诉视图该怎么做。

Controller告知服务人员(如下)玩家正在采取的行动。然后,它从服务接收更新的GameState,并告诉视图如何显示它。

Service(aka GameState)跟踪所有玩家的游戏状态。它可能具有Controller可以调用的称为Move的方法。该服务通过评估游戏状态等来验证该电影是否合法。然后该服务将更新后的状态返回给控制器。


0
投票

视图可以向模型发送消息吗?视图可以向控制器发送消息吗?一个系统可以有多个视图吗?一个系统可以有多个控制器吗?

© www.soinside.com 2019 - 2024. All rights reserved.