c语言围棋报告,C++围棋程序实现报告.doc

TCP-IP协议与网络编程课程设计

- PAGE 20 -

一、软件背景介绍

围棋是一项广有裨益的智力竞技运动,它集休闲娱乐、陶冶性情、修心养性于一身,是中华文化的瑰宝,是人类智慧的最高象征之一。围棋经历了数千年,久盛不衰,且至今还在不断发展。现在的人工智能科学研究在它面前显得很是稚嫩,因而值得将它作为重要的研究对象。在人工智能领域内,博弈是很重要的一个研究分支。通过对博弈的研究,可以解决很多实际问题,使计算机智能向人类智能迈进。计算机国际象棋和计算机围棋一直是人工智能的热门课题,而围棋程序的编制被称作人工智能的“试金石”,是人工智能技术的一大难题,它将会在今后相当长的时期内哺育着人工智能科学的成长。

计算机围棋是计算机博弈研究的一个重要分支,是当前人工智能研究的热点之一,一直以来吸引着大量的研究人员,产生了较大的社会影响和学术影响。由于围棋变化复杂、棋理深奥,是一种高智能的活动,因而围棋的计算机博弈设计难度较大,同时计算机围棋热点问题的研究为人工智能带来了崭新的方法和理论。

计算机围棋的研究和实现需要多门学科的知识交叉,至少会涉及到围棋、计算机、数学、生物、逻辑学、军事学、教育、心理学乃至哲学等领域,因此其发展具有重要的研究价值和应用价值。

本系统是基于C++编程语言的立足于“人―人”围棋对弈系统的设计与实现,具有围棋记谱、打谱、查看定式、最终评分等功能,是一个适宜在计算机上联网的“人―人”的对弈系统。

围棋胜负判断与局面分析功能子系统是围棋对弈系统的重要组成部分。围棋胜负自动判断是一个实用的围棋对弈系统所应具有的功能。在现实的围棋胜负判断中,往往需要一个裁判员通过做棋来判断棋局最终的胜负。如果有一个客观、准确的围棋自动判断胜负系统,一方面可以省时省力,一方面可以做到客观公正。但实现一个具有人(裁判员)一样的判断能力的胜负判断系统,存在着许多困难和挑战。本系统通过建立棋局的记录来判断棋盘上每一点的归属,从而确定棋局中双方地域,故能够对提掉死子后的终局棋盘用中国规则判断胜负;通过建立棋子的影响模型、力学模型以及度量公式,将棋子向棋盘其它部分辐射的影响量化,从而判断对弈双方的影响领域。

论文主要介绍了围棋对弈系统中胜负判断与局面分析功能子系统具有的功能,论述了子系统的开发和实现的过程。

该围棋游戏的主界面如图1。

图1 围棋主界面

二、核心算法思想

该围棋软件主要是由以下三种算法组成的:

1、使每个棋子周围产生某种影响,这种影响随着距离的增加而减少,用一定的公式计算叠加种影响,以判断形势和估计着点的价值。这与围棋的棋理相通,即对于每个棋子可估算其“势力”。此中就有著名的“气位”理论。

2、建立模式库,贮存了大量模式(定式、棋形等),以供匹配。这其实涉及到围棋的许多棋谚与棋理。如“二子头必扳”、“镇以飞应”、“断从一边长”、三子正中、点方等等。这些都是根据围棋的具体情况而设计的。

3、 对目标明确的局部,用人工智能中的搜索法探求其结果。

(一)围棋局面分析功能的实现

?这里定义了Stone的数据结构,用于记录每一点与棋盘上已落棋子的距离和受到的影响值,定义如下:

Public Type Stone

Value As Integer

Distance As Integer

End Type

需要定义显示地域时的棋谱Public Map(1 To 19, 1 To 19) As Stone ,用于记录最后的累加影响。其中Map上每一点Map(i,j)的Distance与value的关系为:Value = 2 的 (6 - Distance)次方。Map(i,j)的最终影响要通过计算影响模型,递减定律以及反射定律,经过度量公式计算,大于定值A的点显示为黑棋地域,小于-A的点显示为白棋地域。

(二) 影响模型

由于棋盘上的每个棋子都要对盘面发出影响,设黑棋影响为正,白棋影响为负。棋盘上的每一点要受到多个棋子的累加影响,其中,受到该点最近的棋子影响最大,依次递减。

设这影响在棋子的紧邻(距离为1)为最大值32,并随距离增加而按比例衰减,衰减因子为1/2。就是距离每增加1时影响值减半。

此时一黑子对其周围辐射的影响如图2。

1

1 2 1

1 2 4 2 1

1 2 4 8 4 2 1

1 2 4 8 16 8 4 2 1

1 2 4 8 16 32 16 8 4 2 1

1 2 4 8 16 32 64 32 16 8 4 2 1

1 2 4 8 16 32 16 8 4 2 1

1 2 4 8 16 8 4 2 1

1 2 4 8 4 2 1

1

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值