0

我正在根据实际的棋盘游戏制作一个名为“围棋”的棋盘游戏。基本上,有 2 名玩家(白色和黑色),他们轮流在棋盘游戏网格的交叉点上放置白色和黑色的石头。

到目前为止,我已经能够绘制石头,在玩家之间交替并更改我的 2D 数组中的值,其中 0 = 空位,1 = 白色,2 = 黑色。

我想将二维数组中的相应石头绘制到我的板上。我能够画出正确的石头并让它跟随我的鼠标,但是一旦我点击了我希望它被放置在该位置并停留在那里的位置。

这就是我用来让石头跟随我的鼠标的方法

if (turn == 1) {
    g2d.drawImage(s.getBlackStone(),
                  s.getBlackX() - Frame.frameLocation.x - 15,
                  s.getBlackY() - Frame.frameLocation.y - 35, null);
} else {
    g2d.drawImage(s.getWhiteStone(),
                  s.getWhiteX() - Frame.frameLocation.x - 15,
                  s.getWhiteY() - Frame.frameLocation.y - 35, null);
}

我在想的是我有一个方法,每次按下鼠标按钮时都会调用该方法,该方法将获取单击鼠标的网格位置以及轮到它的位置并绘制图像。小伙伴们对此有何看法?

4

1 回答 1

2

我通常创建一个 Stone 类,它具有状态(黑色、白色或空)、自由数和数组中的位置等变量。二维数组只是 Stone 类的实例数组。如果状态变量不为空,则我在与数组中的位置对应的单元格上绘制黑色或白色石头。

如果你只使用一个包含代表石头的数字的数组,那么当你需要处理捕获时就会遇到问题。

在回答您的问题时,找到他们在网格上单击的位置,更新阵列中所有受影响的石头,然后重新绘制阵列。

于 2013-06-01T21:05:39.027 回答