基于java的五子棋游戏设计

2016-12-20 20:11关宁
青春岁月 2016年21期
关键词:五子棋人工智能

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

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

一、研究内容

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

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

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

1、人机界面的生成

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

2、按钮功能的实现

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

三、五子棋的AI算法

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

1、电脑智能下棋

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

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

for(int j=0;j<allChesses.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、游戏胜负的判断

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

public boolean checkLeftBias(int row,int col){//检查左斜

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

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

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

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

return true;

}

else{

return false;

}

}

四、结语

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

【参考文献】

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

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

[3] 朱福喜. Java语言基础教程[M]. 北京: 清华大学出版社, 2008.

【作者简介】

关宁(1994—),女,满族,吉林永吉人,西北师范大学在读本科生。

猜你喜欢
五子棋人工智能
我和爸爸拼棋艺
我是“五子棋达人”
滑稽五子棋
人工智能之父
2019:人工智能
人工智能与就业
数读人工智能
下一幕,人工智能!
下一幕,人工智能!
学下五子棋