因此,如果您还没有看过SlitherLink游戏,请进行查找。无论如何,说我有一个点状网格。如果我单击2个点之间,则就像SLitherLink游戏一样,它在2个点之间绘制一条线。问题是,我试图做到这一点,因此当您使用mouseClicked方法时,它会获得单击的坐标,并查看应绘制的2点之间的哪条线。即水平或垂直。
这是我的mouseClicked()方法:
public void mouseExited(MouseEvent e) {
for (int i = 0; i < game.size() + 1; i++) {
for (int j = 0; j < game.size() + 1; j++) {
if (e.getX() >= i * 100 +10 && e.getX() < i+1 * 100 +10){
horizontalClick(i * 100 + 10,j * 100 + 10);
}
}
}
此代码表示,如果单击位于循环中的第一个点和第二个点之间,请绘制水平线。我知道这是错误的,但这是我尝试过的。
public void horizontalClick(int r, int c)
{
if ((r >= 0 && r < game.size()) && c >= 0 && c < game.size()) {
sc.drawLine(r, c, r+1, c, Color.BLACK);
}
}
我正在使用SimpleCanvas类在窗口上绘制。
所以从根本上说,由于单击永远都不是精确的,我如何说出单击鼠标的位置才能找到最近的点,并查看它应该是该点的垂直线还是水平线。
谢谢