`三个月之前写了一个华容道的游戏界面,本想写一个可以自动为曹操找到出口的一个算法,但由于水平有限未能实现,但现在把我一半的成果上传至论讨吧,供大家参考学习。
说到这个智能算法,实现原理也不难,就是采用广度优先的树搜索,去不断的驱动各种可行走法,随着树的搜素深度加深,待存储的数据量也越来愈大,为了提高存储效率可以采用哈希方法,这样可以大大减少计算机的储存空间。
我看过C++版本的解决程序,C++一些标准库可以方便地进行树的节点存储和删除。而在 labview中没有特别行之有效的方法,这个也是当时未能实现自己最初的设想的原因所在。
本华容道游戏目前只能算是一个结构外框,仅可以支持手动的操作,如下图所示:
在程序中,为了方便表示人物的大小,曹操用2*2个单元组成、张飞、赵云、黄忠、马超用2*1个单元格表示,关羽用1*2格单元格表示,小兵用1*1个单元格表示。当鼠标选中某个人物时,会有一个红色外框在其外围以告诉用户当前选择人物,例如图中黄忠外围有红色边框,说明当前用户选择的是黄忠。移动时只要在当前用户的左上角坐标的下一个位置单击即可以使他的位置改变,例如图中黄忠的起始坐标是C位置,需要在D位置单击才可以使其下移。同理假如当前选择的是曹操,就需要在B位置处单击来下移曹操(曹操的起始位置为A)。
这个原因主要是在程序中,用新位置的新的起始位置来驱动人物走子的。这点固然和习惯操作不符,所以也算是本程序一个缺点!
不说这么多了,上传源代码如下:
`
1
评分
-
查看全部评分
|
|
|
|