项目:使用GUI创建国际象棋游戏

我是一位有经验的新程序员,希望能够扩展它。 这是我在校外尝试的第一个项目,所以我的资源很波动,因为我根本不知道我需要知道什么。 但是,对于使用Java的基本GUI,我有一些小的基础。

我想创建一个国际象棋游戏,然后实现一个AI。 但是,现在我只是在构建游戏本身。 现在,我想要一个简单的GUI框架,它不必看起来漂亮或复杂。 只需显示棋盘,棋子在哪里,点击棋子,它会突出显示你可以走到哪里,然后点击广场,瞧,移动完成。

这是我在GUI界面设计中的主要问题。 它是否分开逻辑部分完成? 换句话说,如果我创建了一个Piece,我是否需要一个.jpg或其他东西,或者我可以只有一个单独的类,如果在这个正方形中有一个棋子,在这些坐标中显示一个棋子图片。 我需要知道什么来构建GUI? 我主要使用谷歌浏览,但一开始就会被赞赏,同时知道继续在棋盘上工作,同时以不同的速度进行GUI部分的工作是可以的。

非常感谢,如果我提出的任何问题都很容易找到,我很抱歉。 我可能已经触及了它,但没有意识到它对我想做的事情的重要性。

再次感谢 :)


我会更新这个给任何感兴趣的人。 我有一个更好的形式,我将要做的事情,并在我的脑海中有这种结构,并在纸上翻译。 现在,为简单起见,所有的东西都只是在Java中。

无论如何,对于很长的帖子抱歉。 没有人需要阅读。 :)

我会尝试使用MVC格式,尽管它仍然可能会让我感到有些困惑。

模型 - 我将创建一个Piece板[8] [8]。 Piece将是一个抽象类,由我现在调用的坐标和抽象方法canMove(x,y)组成。 我原本也有动作(x,y),但我意识到这些作品不会做动作。 因此,我坚持使用canMove方法,让控制器看到Piece是否确实可以做到这一点。

控制器 - 在这里我将创建电路板并设置所有部分。 我认为这将是最大的一个阶级,因为它几乎可以控制一切。

查看 - 这基本上是GUI。

这就是我认为控制器/视图协调应该起作用的方式。

  • 控制器中会有一个名为hand的变量。 当我第一次点击一个作品时,它会检查它是否是黑/白,这是作品本身的一个参数。 如果它是正确的颜色,它将被分配到手。 那么它会检查双数组中的每个方块。 如果canMove()为true,则在视图中突出显示该方块。 然后第二次点击将检查canMove()。 如果属实,请检查它是否被一块相同颜色占据,如果不是,则移动到那里。 如果是假的,什么都不是 如果你点击手,手就变空了。 对我而言,问题将是视图如何与控制器交互。 稍后会介绍。

  • 在每一步行动结束时,检查每件作品的canMove()以查看国王是否在其中。 如果是这样,请检查。 对于将军,我想我会有一个标记国王周围广场的整体方法,看看他们是否都有标记,包括他所在的那个。

  • 所以我有几件事我也意识到我并不是说我必须弄清楚。 典当捕捉和典当运动将非常具体。 王车易位。 CanMove申请时,一定要有一些碎片的阻碍。

    建筑视图将是一个痛苦,因为我的班级都没有教过我任何关于它的事情。 我想,最后会得到它。 Idk我会如何测试而不是观看,尽管可能不会持续。


    这是我在GUI界面设计中的主要问题。 它是否分开逻辑部分完成?

    绝对没错。

    国际象棋引擎和用户界面实际上是两个完全不同的程序,在不同的进程中运行是非常常见的。

    国际象棋引擎通常针对速度进行优化,通常用C或C ++编写(尽管如果您愿意,可以使用Java)。 GUI通常用Java编写。 引擎和图形用户界面通常由完全不同的具有不同技能组的程序员团队编写。

    有通信的标准协议,例如通用象棋界面,也称为UCI。 如果你采用这个标准,你可以编写你自己的图形用户界面,并与现有的引擎一起使用 然后,如果您稍后编写自己的引擎来实现UCI协议,则只需更改GUI中的设置即可使用您的引擎。

    正如在实施UCI标准的意见中提到的那样,对于您的第一个项目来说可能有点多。 不过,我希望知道如何在现实世界中做到这一点,可以为您选择的任何设计提供一些灵感。


    这是一个模糊的“问题”,但这里有几个最初的指针:

  • 阅读Model-view-controller模式(是的,业务逻辑将在模型中,GUI将成为视图。)

  • 尝试使用GridLayout

  • 在你的单元格中使用JLabelJButton

  • 他们可以轻松地显示图像
  • 你可以将他们的背景设置为黑色或白色,并且
  • 你可以轻松听取点击。

  • 总之,是的。 业务逻辑和表示应该是分开的。 阅读MVC。 祝你好运。

    编辑:读MVP可能是一个好主意,以及。 但要注意的主要问题是应用程序逻辑应与显示器分离。 这听起来像是一个新手编程的雄心勃勃的项目 - 希望这对你来说是一个很好的学习体验。

    链接地址: http://www.djcxy.com/p/14809.html

    上一篇: Project: Creating a Chess Game with GUI

    下一篇: Chessboard in WPF