0

我正在尝试在 Visual Basic 中制作国际象棋多人游戏。它是一个两个播放器,将以正常方式播放,甚至不能通过 LAN 播放。
到目前为止,我已经完成了电路板的设计。

我的逻辑是:
首先,单击任何方块时,单击事件处理程序将检查一块是否位于该方块上。如果不是,那么它会检查一块是否要移动到那个方格。如果两者都是负数,那么它什么也不做。

现在,这个问题是,我如何编码点击事件?另外,我使用二维数组表示了棋盘。但是我如何在每次移动后更新位置?以及如何检查是否正在执行合法动作?我想补充的另一件事是,每当点击一块时,应该突出显示可能的合法方块。

为此,我所做的是,对于任何方块上的每个点击事件,它都会检查是否有一块。如果有一块,那么它会使用 If-Else-If 逻辑突出显示该块的所有可能移动,但结果证明它太麻烦而且太长了。出现的另一个问题是,我怎么知道用户是否点击了一个空方块来将棋子移到那里?

请帮我。

4

2 回答 2

1

“但是我如何在每次移动后更新位置?”

当这件作品即将被移动时:

检查这块是否可以这样移动。(就像主教只能对角移动)

检查您的团队作品是否不在您要移动的位置。

在已经发生移动的地方创建第二个数组。

检查移动是否合法。(轮到你了,但你的国王一招就可以杀死)

要检查这一点,您需要:

获得你的国王位置

然后为对手查找所有可能的动作

检查移动是否可以落在您的国王位置上。

于 2012-06-19T07:28:02.063 回答
0

这个问题不太适合 Stack Overflow,但我会给你一个指针:

您需要创建一个名为ChessPiece

这将具有类似IsWhiteandLocationXLocationY存储其在棋盘上的当前位置和 PieceType 之类的属性,这将是这样的枚举:

Public Enum ChessPieceType
    King
    Queen
    Bishop
    Pawn
    'etc
End Enum

您需要创建这些类的某种数组,以便您的棋盘上的每一块都有一个,并且您可以在游戏开始时手动设置这些位置。

当用户尝试移动一个棋子时,您检查 PieceType 枚举以确保该类型的棋子实际上可以移动到那里,然后检查该方格上没有他们自己的棋子等等。

于 2012-06-19T10:12:11.360 回答