【正文】
圖 16 邀請(qǐng)游戲 電腦 AI廣義上來講,博弈是指在一定的環(huán)境條件和一定的規(guī)則約束下,依靠自己圖 23 服務(wù)端監(jiān)聽圖 15 服務(wù)端監(jiān)聽所能夠掌握的信息,從各自選擇的行為或是策略進(jìn)行選擇并加以實(shí)施,并從各自取得相應(yīng)結(jié)果或收益的過程。如果,有一方獲勝,則提示消息通知雙方,確定則繼續(xù)開始新游戲。 //繼續(xù)新游戲 (Player2)。 } return false。 if(count==5) return true。 圖 14 獲勝勝負(fù)判斷條件以下給出了 X方向的代碼: protected boolean judge(int x,int y,int clr){ int i=0,j=0,count=0。 // 棋子 Y坐標(biāo) if(col==1) ()。 (xp,yp,28,28)。 (455, 25, 455, 455)。i++,j+=2){ (rowNum2,j,2,10,35+i*30)。 ()。}。,39。,39。char [] rowNum2={39。639。239。 則負(fù)責(zé)網(wǎng)絡(luò)對(duì)戰(zhàn)的處理。 在 命 令 提 示 窗 口 輸 入 Java version 如 果 能 正 確 顯 示 版 本號(hào) , 則 表 示 環(huán) 境 配 置 成 功 。源文件 : 文件名 . j a v a由 J a v a 解釋器執(zhí)行 由瀏覽器執(zhí)行字節(jié)碼文件J a v a 編譯器 : j a v a c編譯生成Java應(yīng)用程序Java小應(yīng)用程序圖 10 Java程序的開發(fā)過程源文件:使用一個(gè)文本編輯器,如 Edit或記事本來編寫源文件。5:安全性(Secure)Java是被設(shè)計(jì)用于網(wǎng)絡(luò)及分布式環(huán)境中的,所以安全性是一個(gè)很重要的考慮。2:面向?qū)ο?ObjectOriented)面向?qū)ο笫墙陙硇畔⒔鐝V為使用的概念和技術(shù)。而雙攻棋指雙向或雙行的攻棋。五 子 棋 的 點(diǎn) 的 選 擇 十 分 關(guān) 鍵 。D、E 中的 X 點(diǎn)為四、四禁手。白棋無禁手,如果黑子在落下的關(guān)鍵的第五子即形成五連的同時(shí),又形成禁手。 沖四:在同一條線上相連的相同顏色的四個(gè)棋子,它與活四不同的是,其中的一端有對(duì)方的棋子進(jìn)行阻擋,它只有再在另一端下一手棋才可形成“連五”。如果是死三,將特別指出。死二:即再下一子可形成死三的二,見圖 3。 五子棋是由兩個(gè)人在一盤棋上進(jìn)行對(duì)抗的競(jìng)技運(yùn)動(dòng)。2:最先在棋盤的橫向、豎向、斜向形成連續(xù)的相同色五個(gè)棋子的一方為勝利。難點(diǎn)是人工智能,可以這樣說,人工智能的好壞決定了這個(gè)題目的完成深度。并且人工智能中的博弈部分,由于采用了大量的搜索算法,其中很多被利用到各方面。其中戰(zhàn)勝過國(guó)際象棋世界冠軍卡斯帕羅夫的“深藍(lán)”便是最具說服力的代表;其它像圍棋的“手淡” 、象棋的“將族”等也以其優(yōu)秀的人工智能深受棋迷喜愛。現(xiàn)代五子棋日文稱之為連珠,英譯為 Renju,英文稱之為 Gobang或 FIR(Five in a Row 的縮寫),亦有連五子、五子連、串珠、五目、五目碰、五格等多種稱謂。在人機(jī)對(duì)弈中通過深度搜索和估值模塊,來提高電腦棋手的智能。需要更多相關(guān)資料和設(shè)計(jì)源代碼。關(guān)鍵詞:深度搜索;估值;電腦 AI;五子棋;算法Gobang Javabased games designAbstractAs a sport, gobang is very popular in civil, in order to bee familiar with gobang rules and techniques, and the study of simple artificial intelligence, I decide to use the Java to develope gobang games and plete the two functions including manmachine war and manman war. Network Connection is Socket Programming for some applications, client and server interaction is definited by Class Message, which is a very good scalability, Client interface is responsible for the collection and maintenance of user input information, and error handling. Server users maintain online basic information and arbitrary twotime users of the chessboard of information, dynamic maintenance user list. During the manmachine players, it improves intelligence of the puter players through depth search and valuation module. Analyzes Module valuation of the precise elements, as well as a number of increased precision, and pares their search for nodes, which raises some puter AI programs on the basis of analysis, such as recursive algorithm, puter learning. Algorithm of procedures contribute to the understanding of the structure, logical thinking ability, In other areas of artificial intelligence has great references. . Key words: Search depth。在中國(guó)的文化里,倍受人們的青睞。人工智能屬于計(jì)算機(jī)科學(xué)的領(lǐng)域,它以計(jì)算機(jī)技術(shù)為基礎(chǔ),近幾十年來,它的理論和技術(shù)已經(jīng)日益成熟,應(yīng)用領(lǐng)域也正在不斷擴(kuò)大,顯示出強(qiáng)大的生命力。所以,趁著這個(gè)機(jī)會(huì),對(duì)人工智能中比較容易實(shí)現(xiàn)的人機(jī)博弈進(jìn)行了解研究學(xué)習(xí),也是很實(shí)用且很有必要的。 見 圖 1。黑方只能用“四、三”去取勝。但是五子棋的特點(diǎn)是先行的一方優(yōu)勢(shì)很大。活三:為再下一子即可變成活四的三(活四介紹見后)。 眠三:是死三的一種特性,它看上去相鄰點(diǎn)沒有對(duì)方棋子防守,很像活三,但由于受空間限制,不論如何發(fā)展都不可能稱為活四,故稱為“眠三“。當(dāng)黑棋仍在 c位跳沖四活三時(shí),白棋即在b位阻斷黑棋沖四并形成反沖四,是黑棋的進(jìn)攻功虧一簣。所以那一方先下子,他就有禁手,這是為了保持公平的一種手段。 五子棋攻防五 子 棋 是 一 項(xiàng) 對(duì) 抗 性 很 強(qiáng) 的 運(yùn) 動(dòng) , 在 開 局 進(jìn) 入 五 手 兩 打 后 , 就 開 始 進(jìn) 入了 白 刃 戰(zhàn) , 相 互 爭(zhēng) 奪 先 手 , 任 何 一 方 都 不 能 掉 以 輕 心 , 要 盡 可 能 少 犯 錯(cuò) 誤 ,甚 至 不 犯 錯(cuò) 誤 , 否 則 將 會(huì) 導(dǎo) 致 速 敗 。 由 于 在 五 子 棋對(duì) 弈 過 程 中 , 通 過 行 棋 落 點(diǎn) 來 控 制 對(duì) 方 的 落 點(diǎn) 是 可 能 的 , 比 如 活 三 沖 四 的應(yīng) 點(diǎn) 是 可 以 預(yù) 知 的 , 完 全 有 可 能 通 過 不 斷 走 出 這 樣 的 先 手 來 控 制 對(duì) 方 的 著 點(diǎn)直 至 勝 利 。在這個(gè)發(fā)展過程中必然要經(jīng)過由一子到兩子 兩子到三子 三子到四子的過程。實(shí)現(xiàn)面向?qū)ο蟮母拍罴捌涓鞣N良好的特性是 Java的設(shè)計(jì)理念之一。因此要使應(yīng)用程序在每一種機(jī)器上均能運(yùn)行是相當(dāng)困難的。編譯器:源文件要經(jīng)過編譯器()的字節(jié)碼文件。如圖 12。見圖 13。,39。,39。039。239。439。棋盤的繪制:private static int xp。 // 畫豎向標(biāo)識(shí)符 for(int i=0。 i++) { (30, 30 + i * 30, 450, 30 + i * 30)。i++){ for (int j = 0。 (xp,yp,28,28)。 勝負(fù)判斷條件要判斷四個(gè)方向,橫向、豎向、以及 2個(gè)斜向。amp。amp。理論上是這樣的。 網(wǎng)絡(luò)對(duì)戰(zhàn)這部分也屬于網(wǎng)絡(luò)套接字編程的經(jīng)典應(yīng)用,根據(jù)服務(wù)器地址連接特定端口。如果被拒絕,則返回原來的狀態(tài)。但是,對(duì)于非合作、純競(jìng)爭(zhēng)型博弈,諾伊曼所解決的只有二人零和博弈。重要看來雖然說進(jìn)攻和防守的重要性一樣的,但是我認(rèn)為防守更重要。39。amp。amp。 int swt=arr[0][0],tmp=0。 } } } x=temp[0]。 else RectX1=0。 else RectY1 = y(xRectX1)。這時(shí)候在調(diào)用盤面分析模塊對(duì)預(yù)測(cè)后的棋型進(jìn)行分析,如果出現(xiàn)了“四三”、“雙三”或“雙四”等制勝點(diǎn),那么己方就可以獲勝了。因?yàn)橛眠@種方法,很有可能它沒有找準(zhǔn)原因,又或者進(jìn)行學(xué)習(xí)的時(shí)候反而把劣等的學(xué)習(xí)進(jìn)去;并且這種學(xué)習(xí)是很片面的,它只會(huì)認(rèn)準(zhǔn)一種極相似的情況(或者說一模一樣的棋局情況),而不會(huì)辨識(shí)出相似的棋局情況