数据结构课程设计要求: (1)生成游戏初始局面; (2) 每次用户选择两个图形,如果图形能满足一定条件(如果两 个图形一样,且这个两个图形直接存在少于 3 个弯的路径),则两个 图形都能消掉。给定具有相同图形的任意两个格子,我们需要寻找这 两个格子之间在转弯最少的情况下,经过格子数目最少的路径。如果 这个最优路径的转弯数目少于 3,则这个两个格子可以消去; (3) 判断游戏是否结束。如果所有图形全部消去,游戏结束; (4) 判断死锁,当游戏玩家不可能消去任意两个图像的时候,游 戏进入“死锁”状态。当游戏进入“死锁”状态,可以随机打乱局面, 解除“死锁”。 【设计要点】 (1)两个图形如何消除?如果两个图形相同,求最短路径; (2)求两个相同图形的最短路径可以采用广度优先搜索算法; (3)死锁的问题是判断两个格子或图形是否可以消除的问题。 【思考题】 在连连看游戏设计中,是否可以通过维护任意两个格子之间的最 短路径来实现快速搜索?
实现了上面的所有要求,并且在判断死锁查找存在路径时,使用深度优先搜索进行查找, 深度优先是开辟另外一个线程,每一秒进行一次判定,后续如果有时间的话会进行优化, 添加一些其他的功能,或者对UI界面进行调整,毕竟Java的UI实在是太丑了