CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

我准备用TC30编一个属于自己的五子棋程序,请各位大哥给点建议,我有几个地方不是很明白!

楼主hanyh(烦恼中……)2001-10-12 17:29:55 在 C/C++ / C语言 提问

在做它之前,自己先想到了以下的问题,看我的想法对不对。  
   
  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

相关问题

  • ^^^^…………100分求"C语言编五子棋游戏!(TC环境下)"
  • 五子棋编程的问题
  • 用C编写五子棋的问题!
  • 用asp编写的五子棋代码
  • 用VB编五子棋游戏的问题
  • 五子棋
  • 请问哪里有五子棋的源程序D,用C编的.
  • 关于五子棋
  • 有谁写过人机对战五子棋的(tc下),麻烦给我发一份,最好有注悉
  • 有谁知道五子棋的算法,或有相关的编程经验?高分请教

关键词

  • 算法
  • 函数
  • 人工智能
  • 网格
  • 用户
  • 大哥
  • 启发
  • 优先级
  • 程序
  • 棋

得分解答快速导航

  • 帖主:hanyh
  • icessl
  • ageofempires
  • Francky
  • wondful
  • shclhs
  • eternalee
  • NowCan

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo