我准备用TC30编一个属于自己的五子棋程序,请各位大哥给点建议,我有几个地方不是很明白!
在做它之前,自己先想到了以下的问题,看我的想法对不对。
1、界面有一个网格,我觉得哪个网格没什么具体用处,只是给用户视觉上的享受
罢了,我只需要用一个2维数组表示着棋点就可以了。
2、核心算法有什么特别之处呢?是不是只是算某点的优先级就可以了吗?那这样
的话,用户不就很容易算出电脑该下哪一步了?
暂时先想到这两个问题,希望大家给我点帮助,谢谢。
问题点数:100、回复次数:15Top
1 楼hanyh(烦恼中……)回复于 2001-10-12 20:38:35 得分 0
没有人知道了吗?我第一次给这么高的分!Top
2 楼icessl(冰山上的来客)回复于 2001-10-12 21:03:44 得分 5
这是人工智能中的搏弈问题,拿一本人工智能方面的教材,里面有比较
严格的说明,算法也有。
Top
3 楼ageofempires(周周)回复于 2001-10-12 21:19:01 得分 50
傻大哥我做过一个:)
当时,我还没掌握面向对象的分析和设计。:)
这种程序具有人工智能的性质。实现的难度根据你期待的人工智能程度高低不同了。
首先是每个点都要给一个分数,即你讲的优先级。但不应该把它作为下步棋的标准。而应该作为一个启发值,换句话说。需要一个启发函数计算各个点的值。然后,考虑启发值较高的点(如前十个),进行回溯,通常应该考虑三个回合(6步)以上。为减小问题的规模,可以采用阿尔法——倍它剪枝。
启发函数是如此重要,事实上,好的启发式函数即使没有回溯,也可以使电脑具有初级的棋力。要考虑多种情况,双活三,死四,活二等价值如何,然后由于在棋盘中居中心点不同,各点价值也有差别的。
可能有不同的启发函数,(自己都不知道那个好),可以在开发此软件前,先做一个测试软件,让两种算法博弈。优胜劣汰。可以使用遗传算法,由机器自动生成对各种组合的不同评分策略,然后自动通过测试优选出较优的算法。
至于第一个问题,网格当然很重要。但是与内部表示可以分离。二维数组是一种最简单的抽象。不要让这些非实质性的表面影响你对问题的建模哟。Top
4 楼Francky(寒星)回复于 2001-10-12 21:22:08 得分 5
五子棋算法就这么简单,要先算用户的棋有没导致你输期的可能。后算出自己优先级最高的点。如果没有威胁的情况下你可以适当的随机。Top
5 楼wondful(莫名)回复于 2001-10-12 21:28:18 得分 5
典型人工智能Top
6 楼shclhs(hello)回复于 2001-10-12 21:44:30 得分 5
我有远程序,什么人工智能,决到Top
7 楼hanyh(烦恼中……)回复于 2001-10-12 23:11:39 得分 0
ageofempires(周周):谢谢,能否把你的程序给我看看。
shclhs(龙海神) :你也有吗?一块给我。
谢谢你们。
EMAIL:bluesky39@sohu.com
Top
8 楼eternalee(看看)回复于 2001-10-12 23:25:14 得分 20
http://release.363.net/code/luffar.zip
Top
9 楼ageofempires(周周)回复于 2001-10-13 09:59:00 得分 0
源程序,很sorry!
几年前,一次出差,机器被人革了命,(没有备份)痛哉!
另外,还有一点想法:(我没有尝试过)
在上述算法的基础上,记录历史数据,增加机器的学习功能。(虽然很微弱)。在实现上,首先,要保证原算法较优,减少例外情况。其次,采用优化的数据存储方式。例如,个个坐标点的表示可以以天元为中心螺旋形向外编号,以三进制表示黑白无三态。等等。。。
总之,有很多方法可以减少存储量。
等等Top
10 楼NowCan(城市浪人)回复于 2001-10-13 14:19:21 得分 10
另外,定义数组的时候最好行列都不实际棋盘大两格,以免在处理边界棋子的时候遇到麻烦。
还有,这种算法一般都是用的深度优先的搜索,表现在程序上就是一个递归函数。但是必须要进行剪枝,否则速度完全无法忍受。
至于启发式算法、遗传算法等,我就不知道了。 Top
11 楼hanyh(烦恼中……)回复于 2001-10-13 16:27:40 得分 0
各位大哥什么学历,这么多算法我都没有遇到过,我要多多学习,请多多指教.遇到问题的时候我再来请教大家,ok!Top
12 楼hanyh(烦恼中……)回复于 2001-10-14 13:55:16 得分 0
谢谢!Top
13 楼ageofempires(周周)回复于 2001-10-14 20:19:41 得分 0
清华大学BBS编程技术版提供了一个网址,可以下载源程序,你可以看看。Top
14 楼hanyh(烦恼中……)回复于 2001-10-14 21:29:51 得分 0
具体地址是什么呢?你知道吗?Top
15 楼hanyh(烦恼中……)回复于 2001-10-15 12:27:11 得分 0
upTop




