java - 解决点和线问题的算法?

标签 java android algorithm graph

这是一款经典游戏。想用我自己的话来解释游戏,但 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/

相关文章:

java - 在 Spring Boot 应用程序中启用 SSL

javascript - 我在这里编写了一个用于网络爬行的代码,我能够获取数据,但是准备好的语句不允许在 mysql Db 中插入数据

c# - 设置按钮事件的最快方法

algorithm - 具有开放寻址、非惰性删除(无墓碑)的哈希表

在 Websphere 上运行 POI 3.8 时出现 java.lang.InknownClassChangeError

java - Rest Web 服务中的 AbstractMethodError

java - RxJava + Retrofit - 进行多次调用

java - 图像特征提取

python - pandas - 从一组中取 N 个最后值

c# - 比较字符串相似度