五子棋算法设计随想

原创 2004年10月12日 11:54:00
 

五子棋算法设计随想<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

作者:张景平

 

五子棋是深受人们特别是年轻朋友喜欢的一种娱乐性很强的益智游戏。本文讲讨论如何让计算机实现具有一定智能的五子棋算法。其中都是随时所想的记录。

一、如何将一个空棋位两端的棋势累加起来

1、两端只有一方的棋子

A.冲+冲型

显然冲+冲还是冲。并且冲值累积。例如,冲1+冲2=冲3。但是,可以看到,当冲值和小于5时,两者累加得到死棋。而冲值和大于等于4时此时为棋势最大。因此,总结起来,对于只有一方的冲值相加,只有两种情况,要么为死棋(棋势最小),要么为极棋(棋势最大)。

B.冲+活型

冲+活还是冲。冲值相加。例如,冲1+活2=冲3。

C.活+活型

活+活还是活,活值相加。例如,活1+活2=活3。

2、两端有不同方的棋子

A.冲+冲型

这个问题也不复杂。因为双方互相在此棋位制约,所以只有冲值不大于4,就是死棋,而冲值大于等于4时又为极棋。例如,敌冲1+我冲2=死棋,敌冲2+我冲3=死棋,敌冲4+我冲1=极棋。

B.冲+活型

这种情况也比较容易讨论。其实,认真观察会发现,双方棋子也在互相制约。

只要冲方不是冲4,此时此位的棋势即取活方棋势,因为无论如何冲方也不可能在此棋位胜利。而,冲方是冲四是就取冲方棋势。例如,敌冲2+我活1=我活1,敌冲4+我活1=敌冲4,敌活1+我冲2=敌活1,敌活2+我冲3=敌活2,敌活3+我冲4=我冲4。

C.活+活型

仍未活型。比较两者棋势,大者的棋势即为该棋位的棋势。例如,敌活1+我活2=我活2,敌活4+我活1=敌活4。

二、关于不同棋型棋势的设计

1、应当让冲4、活4等棋型拥有最高棋势。

 

五子棋算法设计

昨天看了一个五子棋的算法,这个算法其实也并不复杂。主要包括赢法数组、每一种赢法的保存数组、每一个未投子的得分数组。 1.赢法数组: 记录可能的五个子相连的赢法种类,是一个三维数组。如a[i][j]...
  • yutianxin123
  • yutianxin123
  • 2016年04月14日 09:37
  • 612

编程随想的博客

我很佩服"编程随想",觉得他的博客信息量大,有思路,有方法,有工具,有步骤。再加上同为软件开发管理人员, 工作生活中的问题很容易得到共鸣。我觉得,他的每一篇博文都值得一看。他的博客的主要内容是: ...
  • GoingArm
  • GoingArm
  • 2015年05月09日 12:47
  • 17965

编程随想

          虽然接触计算机已经很长时间了,但真正做程序是最近一个月的事情,写一点感悟吧 计算机编程的方法和解决事情的方法的关系          计算机编程中心思想:自顶向下或自底向上但刚开始...
  • alvetjook
  • alvetjook
  • 2006年12月23日 16:36
  • 933

随想·P2P五子棋下载地址

哎呦喂,杂草丛生的博客呦,又是一阵子的迷茫颓废。昨天自家部门办交流酒会,忙中偷闲和一位同专业的大四师姐聊了两句,这位师姐去了华为的产品设计与运营,师姐走的是非技术路线,对于华为的面试,她给我讲了一些,...
  • poseidon2750
  • poseidon2750
  • 2012年05月28日 12:57
  • 150

编程随想(更2015.11.13)

编程随想多模块交互模式思考三种模式 网络模式 每个模块都是同等地位,交互式是直接和其他模块交互。模块内封装发送操作和接受处理,并且配置信息发送的路由。 优势:与其他模块直接交互,效率高。 劣势:多模...
  • wctstc
  • wctstc
  • 2015年11月05日 17:32
  • 583

转载:编程随想的博客

今天一口气把这个博客的内容全部看完,深有体会,学会了很多东西,同样是软件开发人员,怎么差距这么大呢?特别转载过来,以供随时参考。:) 博客地址:http://program-think.blogspo...
  • aXu
  • aXu
  • 2009年02月25日 21:49
  • 1019

生活随想之八十年代人

人们都说八十年代的我们这代人都有一种浮躁心理.临近毕业了,在回首既往时,忽觉得就这样匆匆走过来了.一路上接触了很多,但都没有为某个所吸引、驻足以致流连忘返.而只是就这样匆匆而过.也许是觉得前方还有更多...
  • sytuyuan
  • sytuyuan
  • 2007年04月11日 11:18
  • 554

[原创]五子棋人机对弈算法设计

人机对弈算法属于策略型人工智能算法,本游戏中设置了人机对弈的游戏模式,其算法如下:1,  设置所有获胜组合,获胜表将可能出现的获胜组合存入计算机中,计算机根据此组合判断玩家或计算机是否胜利。例如:10...
  • lewislau
  • lewislau
  • 2005年08月19日 10:00
  • 5015

编程随想的博客

 编程随想的博客 设计软件有两种方法:一种是简单到极致而明显没有缺陷;另一种是复杂到极致以至于没有明显的缺陷。前者要难得多。——C.A.R. Hoare学习技术的三部曲:WHAT、HOW、WHY   ...
  • ppd1982
  • ppd1982
  • 2009年02月25日 12:57
  • 952

初学mfc,根据网上资料写的五子棋

五子棋
  • u011120824
  • u011120824
  • 2014年04月19日 20:38
  • 1649
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:五子棋算法设计随想
举报原因:
原因补充:

(最多只允许输入30个字)