gpt4 book ai didi

java - 如何使用 GUI 构建简单的国际象棋游戏的 UML 图?

转载 作者:行者123 更新时间:2023-12-01 23:15:39 26 4
gpt4 key购买 nike

我目前正在学习 Java 面向对象编程类(class),我们需要为上一个实验室创建一个游戏,因此我和我的实验室伙伴选择制作一个没有 AI 并使用模型 View 的 2 人国际象棋游戏- Controller 方法。

我们对于如何开始以及从哪里开始有点迷茫,因此我们需要一个简单的 UML 图,以便我们知道从哪里开始。

我们提出了以下类,但不确定它们是否足够或者所有数据字段和方法是否有意义:

enter image description here

  • ChessBoard(模型)类和ChessLogic类(?)

  • View 类来呈现模型类中的数据

  • Controller 类,根据用户输入更新模型数据以及 View

  • 一个抽象 Piece 类或接口(interface),由 6 个部分中的每个部分继承或实现。

最佳答案

该图是一个很好的开始,但仍有很多工作要做。我会提请您注意一些需要改进的地方,但不会妨碍您边做边学。

首先一些手续:

  • 使用关系箭头仅表示navigability 。如果链接是双向的,则使用 2 个箭头或不使用。例如,这里我们可以理解为View知道ChessBoard ,但尚不清楚 ChessBoard 是否有效了解Views : 怎么可以ChessBoard然后通知Views移动完成后董事会的状态发生了变化?
  • 表示multiplicity :例如,我想知道是否是一个ChessBoard一个View或者可能有几个 Views对于相同的Chessboard
  • 避免关联和属性之间出现歧义。例如,在View中,你有一个model ChessBoard 类型的属性。但您也与ChessBoard有关联。那么这都是一样的吗ChessBoard ?或者我们有两个ChessBoard s,一个关联一个嵌入?删除 model 会更清楚从属性中,并指出 model作为 end of the association 处关联对象的名称。
  • 协会从Controller开始突然 split 成两部分不太实际,特别是如果你告诉我们关联末端和多重性。喜欢在视觉上有两条截然不同的线条。

现在进入核心:

  • 您的模型不应该只是 ChessBoard 。该模型应该是 Game这有几个要素。 ChessBoard只是其中之一: Piece 的当前位置s。但是layers呢? ?他们在哪里 ?我怎么知道是他们两个? Controller 如何知道轮到我了?
  • 通过调用 ChessBoard这不仅仅是一个棋盘,你可能会造成困惑。例如,董事会能否确定 isGameOver() 是否有效? ,只是关于棋子位置的信息?玩家不可能决定放弃吗?因此,请尝试根据类的实际含义来命名你的类。
  • 我怎样才能找到哪个 Pieces板子在哪里?
  • 我怎么知道 colorPiece
  • 如何查明董事会的单元格是否空闲或已被占用?
  • 如果棋子因为被拿走而从棋盘上移走,会发生什么?

您的 UML 图必须不断发展才能阐明这一切。所以我想完成 ChessBoard Piece 你至少缺少Game , Player , BoardCell (也称为“Square”,也许每个玩家的棋盘上仍然有一些Pieces的容器。

完成后,您还需要考虑模型、 View 和 Controller 之间的关系,以确保 Controller 有足够的知识向模型发出命令,而且模型可以通知模型查看何时发生变化。

P.S:我添加了一些指向 Chess Programming Wiki 的链接由于该网站很好地描述了游戏编程的一些基本概念,一些usual questions以及很多引用资料。但请注意,尽管该资源信息丰富,但并不是非常面向对象。

关于java - 如何使用 GUI 构建简单的国际象棋游戏的 UML 图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58354719/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com