国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于java的五子棋游戲設(shè)計(jì)

2016-12-20 20:11:00關(guān)寧
青春歲月 2016年21期
關(guān)鍵詞:五子棋搜索算法人工智能

【摘要】在Windows平臺(tái)下,系統(tǒng)把五子棋游戲作為研究對(duì)象,運(yùn)用java語言設(shè)計(jì)一款能夠?qū)崿F(xiàn)人機(jī)對(duì)戰(zhàn)的簡(jiǎn)單游戲。五子棋人機(jī)對(duì)弈是計(jì)算機(jī)博弈中的一種。而計(jì)算機(jī)博弈是人工智能研究的一個(gè)重要分支,其中還包括幾個(gè)重要的搜索算法。只有通過一定的研究,才能實(shí)現(xiàn)五子棋的人機(jī)對(duì)戰(zhàn)功能。

【關(guān)鍵詞】人工智能;計(jì)算機(jī)博弈;搜索算法;五子棋

一、研究?jī)?nèi)容

本游戲是在Windows環(huán)境下完成一個(gè)簡(jiǎn)易五子棋游戲的設(shè)計(jì)。五子棋是人工智能的一個(gè)成果之一,它涉及到計(jì)算機(jī)博弈理論,棋盤表示、走法生成以及搜索算法等知識(shí),最終實(shí)現(xiàn)人機(jī)對(duì)戰(zhàn)。

二、五子棋的整體設(shè)計(jì)介紹

一個(gè)好的軟件產(chǎn)品,首先是要有一個(gè)好的人機(jī)界面,也就是說給人的第一感覺是美好的、輕松的。接著是簡(jiǎn)單明了的操作,界面上按鈕夠少,令玩家容易上手。

1、人機(jī)界面的生成

背景圖片的大小要適中,否則后面的一些功能無法顯示出來(比如相應(yīng)的按鈕)在創(chuàng)建完成一個(gè)基本窗口后,將游戲背景圖片和棋盤加載進(jìn)窗口界面,并加入相應(yīng)的控制按鍵,就得到了一個(gè)簡(jiǎn)單的棋盤。

2、按鈕功能的實(shí)現(xiàn)

Java中的鼠標(biāo)和鍵盤事件,使用Mouse Listener接口處理鼠標(biāo)事件。鼠標(biāo)事件有5種:按下鼠標(biāo)鍵,釋放鼠標(biāo)鍵,點(diǎn)擊鼠標(biāo)鍵,鼠標(biāo)進(jìn)入和鼠標(biāo)退出。

三、五子棋的AI算法

在本系統(tǒng)的AI算法里,當(dāng)玩家下棋時(shí),電腦優(yōu)先考慮阻止玩家取得勝利,在這個(gè)過程中,電腦首先在各個(gè)方向進(jìn)行搜索,尋找其中最優(yōu)的位置進(jìn)行下棋,以達(dá)到阻止玩家獲得勝利的目的。

1、電腦智能下棋

電腦通過打擂計(jì)算最佳進(jìn)攻和防守位置,代碼片段如下:

for(int i=0;i< allChesses.length;i++){//通過計(jì)算得到防守的最佳位置,因?yàn)槭欠朗?,所以統(tǒng)計(jì)白色

for(int j=0;j<allChesses.length;j++){

if(allChesses[i][j]==null){//對(duì)還沒有走的空棋格進(jìn)行統(tǒng)

if(isFirst==true){//第一個(gè)為空的空格

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);//計(jì)算當(dāng)前位置的權(quán)值

isFirst=false;//表示第一個(gè)位置計(jì)算完畢

}

2、游戲勝負(fù)的判斷

電腦主要是從八個(gè)方向來判斷哪一方先勝利了,這八個(gè)方向是以一個(gè)棋子為中心,向四周輻射擴(kuò)散出去進(jìn)行搜索判斷,這八個(gè)方向分別是以該棋子為中心的右斜上、右斜下、左斜上、左斜下、列下、列上、列左和行右。每一個(gè)方向都設(shè)一個(gè)參數(shù)count i,初值為1,每判斷一次,如果有相同的棋子,則count i的值增加1,如果有五個(gè)或五個(gè)以上,則該方為勝。代碼片段如下:

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

int leftBiasUp=checkLeftBiasUp(row, col);//得到左斜上的個(gè)數(shù)

int leftBiasDown=checkLeftBiasDown(row, col);//得到右斜下的個(gè)數(shù)

int sum=leftBiasUp+leftBiasDown-1;//在計(jì)算過程中多算了一顆棋子,所以要減一顆棋子

if(sum>=5){//已經(jīng)五子連珠

return true;

}

else{

return false;

}

}

四、結(jié)語

人工智能在計(jì)算機(jī)上實(shí)現(xiàn)時(shí),有2種不同的方式。一種是采用傳統(tǒng)的編程技術(shù),使系統(tǒng)呈現(xiàn)智能的效果,而不考慮所用方法是否與人或動(dòng)物機(jī)體所用的方法相同。這種方法叫工程學(xué)方法(Engineerin gapproach),它已在一些領(lǐng)域內(nèi)做出了成果,如文字識(shí)別、電腦下棋等。另一種是模擬法(Modeling approach),它不僅要看效果,還要求實(shí)現(xiàn)方法也和人類或生物機(jī)體所用的方法相同或相類似。而我設(shè)計(jì)的五子棋游戲正是通過第一種方法實(shí)現(xiàn)的——工程學(xué)方法。了解這些還是遠(yuǎn)遠(yuǎn)不夠的,最重要的是了解計(jì)算機(jī)博弈方面相關(guān)的搜索算法。由于我對(duì)java方面的知識(shí)了解的不多,所以也花了很多的時(shí)間在學(xué)習(xí),可以說是邊學(xué)邊用了。

【參考文獻(xiàn)】

[1] 張孝祥. Java就業(yè)培訓(xùn)教程[M]. 北京: 清華大學(xué)出版社, 2003.

[2] Negnevitsky, M. 人工智能智能系統(tǒng)指南(英文版)[M]. 北京: 機(jī)械工業(yè)出版社, 2005.

[3] 朱福喜. Java語言基礎(chǔ)教程[M]. 北京: 清華大學(xué)出版社, 2008.

【作者簡(jiǎn)介】

關(guān)寧(1994—),女,滿族,吉林永吉人,西北師范大學(xué)在讀本科生。

猜你喜歡
五子棋搜索算法人工智能
改進(jìn)的和聲搜索算法求解凸二次規(guī)劃及線性規(guī)劃
Sim Sim
2019:人工智能
商界(2019年12期)2019-01-03 06:59:05
人工智能與就業(yè)
數(shù)讀人工智能
小康(2017年16期)2017-06-07 09:00:59
下一幕,人工智能!
90后羅運(yùn)生:五子棋是我生命的一部分
金色年華(2016年8期)2016-02-28 01:40:31
基于汽車接力的潮流轉(zhuǎn)移快速搜索算法
基于逐維改進(jìn)的自適應(yīng)步長(zhǎng)布谷鳥搜索算法
財(cái)政部長(zhǎng)吳波的“五子棋局”
得荣县| 青岛市| 伽师县| 松原市| 阿克苏市| 通海县| 来宾市| 旅游| 始兴县| 日照市| 天柱县| 加查县| 维西| 芜湖县| 新干县| 济南市| 双流县| 兴业县| 沙坪坝区| 成都市| 始兴县| 兴国县| 商都县| 府谷县| 邹平县| 邢台市| 略阳县| 登封市| 阿克苏市| 邵阳县| 陇川县| 凌源市| 宝鸡市| 铁岭县| 长阳| 仪陇县| 乌恰县| 观塘区| 正宁县| 综艺| 博湖县|