java - MVC 井字游戏

标签 java model-view-controller observer-pattern tic-tac-toe

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

问题是游戏没有获悉两位玩家的观点。所以,我应该实现观察者模式。

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

该图像是给定代码的 UML。

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

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

好吧,我认为是对的。但这个项目的目的是将其重构为 MVC 模式。在学校提供的演示中,我发现了这个方案: (网址见评论)

但是我完全不知道如何将代码重构为满足 MVC 模式的要求。如果有人能解释我应该如何做到这一点,那就太好了。比如,模型、 Controller 和 View 是什么?

最佳答案

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

型号是:

  • SingleSquareState(X、O 或 NULL)
  • 游戏板(尺寸为 9 至 3n)
  • 玩家

View 显示棋盘——它本质上“就是”棋盘,并且有 9 个(或 sizeOf(GameBoard))方格,可以将其变为 X、O 或 NULL——也许这里可以使用数组。避免在这里放置太多逻辑,将其留给 Controller 。 Controller 告诉 View 要做什么。

Controller 告诉服务(如下)玩家正在做什么 Action 。然后它从服务接收更新的 GameState 并告诉 View 如何显示它。

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

关于java - MVC 井字游戏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13431273/

相关文章:

java - 如何在同一个 onTimeSet() 中提取两个时间选择器对话框的小时和分钟?

Java 客户端服务器应用程序 - 地址已在使用 : connect

iphone - 在 Objective-C 中绑定(bind)模型类的方法

java - Java 9 中不推荐使用 Observer。我们应该使用什么来代替它?

安卓实时数据 : Not receiving all notifications

java - 如何使用 jar 文件中的依赖项?

java - 无法在子进程中使用 HashMap 作为 TIMESTAMP

c# - 如何根据另一个选择下拉jquery MVC过滤一个选择?

java - 是否可以一次将遗留 servlet 移植到框架一个组件?

c++ - 观察者模式实现