基于java的五子棋游戏设计.docx

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

?

?

基于java的五子棋游戏设计

?

?

【摘要】在Windows平台下,系统把五子棋游戏作为研究对象,运用java语言设计一款能够实现人机对战的简单游戏。五子棋人机对弈是计算机博弈中的一种。而计算机博弈是人工智能研究的一个重要分支,其中还包括几个重要的搜索算法。只有通过一定的研究,才能实现五子棋的人机对战功能。

【关键词】人工智能;计算机博弈;搜索算法;五子棋

一、研究内容

本游戏是在Windows环境下完成一个简易五子棋游戏的设计。五子棋是人工智能的一个成果之一,它涉及到计算机博弈理论,棋盘表示、走法生成以及搜索算法等知识,最终实现人机对战。

二、五子棋的整体设计介绍

一个好的软件产品,首先是要有一个好的人机界面,也就是说给人的第一感觉是美好的、轻松的。接着是简单明了的操作,界面上按钮够少,令玩家容易上手。

1、人机界面的生成

背景图片的大小要适中,否则后面的一些功能无法显示出来(比如相应的按钮)在创建完成一个基本窗口后,将游戏背景图片和棋盘加载进窗口界面,并加入相应的控制按键,就得到了一个简单的棋盘。

2、按钮功能的实现

Java中的鼠标和键盘事件,使用MouseListener接口处理鼠标事件。鼠标事件有5种:按下鼠标键,释放鼠标键,点击鼠标键,鼠标进入和鼠标退出。

三、五子棋的AI算法

在本系统的AI算法里,当玩家下棋时,电脑优先考虑阻止玩家取得胜利,在这个过程中,电脑首先在各个方向进行搜索,寻找其中最优的位置进行下棋,以达到阻止玩家获得胜利的目的。

1、电脑智能下棋

电脑通过打擂计算最佳进攻和防守位置,代码片段如下:

for(inti=0;iallChesses.length;i++){//通过计算得到防守的最佳位置,因为是防守,所以统计白色

for(intj=0;jallChesses.length;j++){

if(allChesses[i][j]==null){//对还没有走的空棋格进行统

if(isFirst==true){//第一个为空的空格

row=i;//在棋盘中的位置

col=j;

powerValue=RowPowerValue(allChesses,i,j,Color.white)

+ColPowerValue(allChesses,i,j,Color.white)

+RightBiasPowerValue(allChesses,i,j,Color.white)

+LeftBiasPowerValue(allChesses,i,j,Color.white);//计算当前位置的权值

isFirst=false;//表示第一个位置计算完毕

}

2、游戏胜负的判断

电脑主要是从八个方向来判断哪一方先胜利了,这八个方向是以一个棋子为中心,向四周辐射扩散出去进行搜索判断,这八个方向分别是以该棋子为中心的右斜上、右斜下、左斜上、左斜下、列下、列上、列左和行右。每一个方向都设一个参数counti,初值为1,每判断一次,如果有相同的棋子,则counti的值增加1,如果有五个或五个以上,则该方为胜。代码片段如下:

publicbooleancheckLeftBias(introw,intcol){//检查左斜

intleftBiasUp=checkLeftBiasUp(row,col);//得到左斜上的个数

intleftBiasDown=checkLeftBiasDown(row,col);//得到右斜下的个数

intsum=leftBiasUp+leftBiasDown-1;//在计算过程中多算了一颗棋子,所以要减一颗棋子

if(sum=5){//已经五子连珠

returntrue;

}

else{

returnfalse;

}

}

四、结语

人工智能在计算机上实现时,有2种不同的方式。一种是采用传统的编程技术,使系统呈现智能的效果,而不考虑所用方法是否与人或动物机体所用的方法相同。这种方法叫工程学方法(Engineeringapproach),它已在一些领域内做出了成果,如文字识别、电脑下棋等。另一种是模拟法(Modelingapproach),它不仅要看效果,还要求实现方法也和人类或生物机体所用的方法相同或相类似。而我设计的五子棋游戏正是通过第一种方法实现的——工程学方法。了解这些还是远远不够的,最重要的是了解计算机博弈方面相关的搜索算法。由于我对java方面的知识了解的不多,所以也花了很多的时间在学习,可以说是边学边用了。

【参考文献】

[1]张孝祥.Java就业培训教程[M].北京:清华大学出版社,2003.

[2]Negnevitsky,M.人工智能智能系统指南(英文版)[M].北京:机械工业出版社,2005.

[3]朱福

文档评论(0)

183****1225 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档