编程之美——连连看游戏设计
1 问题描述及分析
连连看游戏是一种很流行的小游戏,记得在小时候去游戏厅玩街机的时候就有两台专门的连连看的机器(当然当时不叫这个名字),一个是连麻将牌、另一个是连水果图片。当时的麻将牌分好几层,相邻层的牌还可以连,看得人眼花缭乱。真是佩服能玩这游戏的人,我还是打“拳皇”比较擅长J。书中给出的Microsoft Link-up界面很漂亮,不过似乎图形只有一层,而且数量也不是很多,降低了不少难度,连我也能玩了J。
图1 广度优先路径搜索 |
书中给出的解法利用了广度优先搜索算法,本质上是一种建立搜索树然后剪枝的策略。具体过程如图 1所示:目标是要找到从左上角的圆形图形(设为图形1)到右下角的圆形图形(设为图形2)之间不超过3个弯的最短路径。首先在图形1所在位置向四个方向进行直线查找,如果在某一方向上找到图形2则结束。否则,记录下所有这四个方向上的空白格