First we try, then we trust

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

本部分的程序代码下载:http://www2.cnblogs.com/Files/zhenyulu/HRD_64_HashTable_1.rar

在修改了那么多代码后需要再重新审视一下现在的程序,其实现在的程序代码已经显得很不协调,因为在修改的大量的数据结构后,算法也应当尽量贴近新的数据结构。所以我重新设计了新的布局表示以及棋子的算法。

在原有的华容道程序中,我使用了大量的Position结构来表示棋子的坐标值(x,y)。并且棋子是否可以上下左右移动也是通过计算坐标值得到的。当时之所以选择坐标表示是因为:要计算Int32的布局表示,必须按照坐标进行排序,根据棋子序列得出这个int值。为了便于排序操作,我分离了横、纵坐标。但是当改用Int64来表述布局后,这个坐标的分离就显得多余而且累赘了。为了计算方位不得不将两个变量(x,y)参与到运算当中,可我们完全可以用一个变量实现所有的功能。

基于上述目的,我重新设计了一个全新的坐标体系:

 

之所以这么设计一个棋局的坐标体系,是因为当棋子可能移出边界时,系统能够及时判断出来。有了这个坐标体系,棋子方位的判断可以变得非常容易。

比如要将坐标为16的棋子上移,只要将其坐标减8就行了。而原来的坐标体系要重新计算x与y的值。针对新坐标设计的程序要减少很多运算次数,进而提高整体效率。

调整后的程序运行时间缩短到了0.6秒。

posted on 2005-02-25 21:40  吕震宇  阅读(5738)  评论(27编辑  收藏  举报