设计思路
华容道设计主要分为几个部分:一:每一个布局的表示方法,二:每一个布局的存储
(存储分为二种:一种用于后面依次遍历来增加新的布局,二种用于后面增加新的布局时
来查找这些先前存储的布局,如果有相同的则抛弃当前的布局)三:在每一个布局里如何
移动产生新的布局。
布局表示
根据华容道布局图的特点,将布局看成是一个 4x5 的矩阵,每一个矩阵点代表图上的
一个小方块,一共二十个小方块。根据横纵二个坐标值来对应图上的每一个小方块。每一
个小方块由一个数字代替。一共五种类型,所以用五个数字 0,1,2,3,4 来分别代表每一种方
块。
0 代表空格,1 代表一个正方形小方块,2 代表垂直的长方形,由二个小方块组成。3
代表水平长方形,也由二个小方块组成,4 代表曹操,由四个小方块组成。然后通过压缩
将整个布局转换成一个整数,以便存储起来。
布局存储
临时布局
临时布局即每一个布局每次都会有很多的新的移动方法,每一种移动方法就会构成一
个新的布局。这些布局要存储起来以便对其进行遍历,然后产生新的布局。这里利用一个
全局数组来存储这些临时布局。每一个布局每次都会有很多种移法,将它们依次存入这个
数组,然后从头遍历这个数组,将每次产生的临时布局依次放入数组尾部。数组成员的类
型为一个整数,是根据上面的布局里的代表每一个方块种类的数字压缩而成。
稳定布局
稳定布局即从临时布局里面筛选出来的和之前的布局都不相同的布局,同样用一个整
数来表示。存储则采用 AVL 平衡树来进行存储,根据代表每一个布局的整数的大小建立一
个排序的平衡的二叉树。
- 1
- 2
前往页