这是一款经典游戏。想用我自己的话来解释游戏,但 wiki 做得更好,
http://en.wikipedia.org/wiki/Dots_and_Boxes
我正在尝试将此游戏创建为 2 人游戏,因此目前不需要 AI。
但是对使用什么数据结构和算法感到困惑, 我将所有点保存为数组中的坐标, 例如 [x1,y1,x2,y2,x3,y3,x4,y4,....] 其中 x1,y1 成对并坐标,
我正在使用 java(Android),存储坐标的更好方法是什么?
上面的方法似乎太基础了,以后会使事情复杂化。
规划对象数组,其中每个对象包含 x、y 坐标和一些其他信息
在对象中。
我应该应用什么算法来检查循环,即要知道,
玩家的移动已经关闭了点。这是图形问题吗?
关于我必须在哪里寻找解决此类问题的任何提示。
PS:目前是2人游戏,不用担心电脑搬家,
但更关心决定最后一步是否连接点
(基本上创建了一个循环?,关闭框)
我检查过这个,
http://en.wikipedia.org/wiki/Flood_fill
我想我应该做类似的事情。
最佳答案
您可以用作方形类,并在二维方形对象数组上具有所有游戏结构。
public class Square {
boolean up;
boolean right;
boolean down;
boolean left;
private boolean isClosed() {
return up && right && down && left;
}
}
private static final int TABLE_SIZE = 5;
Square [][] table = new Square[TABLE_SIZE][TABLE_SIZE];
所有走法都影响2个方格(外线除外),设置它们的状态为真,同时关闭对方格的控制;
// draw line
table[1][1].right = true;
table[2][1].left = true;
// Check for closed
table[1][1].isClosed();
table[2][1].isClosed();
我的代码不太好,是为显示算法而写的。
关于java - 解决点和线问题的算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6606408/