freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

基于java的五子棋游戲的設計—計算機畢業(yè)設計-wenkub

2022-12-10 10:23:47 本頁面
 

【正文】 來越多的具有智能的機器進入了人類的生活,人工智能的重要性如今顯而易見。通過一系列的變化,使五子棋這一簡單的游戲復雜化、規(guī)范化,而最終成為今天的職業(yè)連珠五子棋,同時也成為一種國際比賽棋。 五子棋起源于古代中國,發(fā)展于日本,風靡于歐洲。 Computer AI。 分析 估值模塊中的影響精準性的幾個要素,以及提出若干提高精準性的辦法,以及對它們搜索的節(jié)點數(shù)進行比較,在這些算法的基礎上分析一些提高 電腦 AI 方案,如 遞歸算法 、電腦學習等。主要完成了人機對戰(zhàn)和玩家之間聯(lián)網(wǎng)對戰(zhàn) 2 個功能 。 網(wǎng)絡連接部分為 Socket 編程應用, 客戶端和服務器端的交互 用 Class Message 定義,有很好的可擴展性,客戶端 負責界面維護和收集用戶輸入的信息,及錯誤處理。算法的研究有助于理解程序結構,增強邏輯思維能力,在其他人工智能方面也有很大的參考作用。 Gobang 。對于它與圍棋的關系有兩種說法,一說早于圍棋,早在 “ 堯造圍棋 ” 之前,民間就已有五子棋游戲;一說源于圍棋,是圍棋發(fā)展的一個分支。 Java語言是當今最為流行的程序設計語言之一 作為一門非常優(yōu)秀和極為健壯的編程語言,它同時具有的面向對象,與平臺無關 ,分布式應用,安全,穩(wěn)定和多線程等優(yōu)良的特征,使用 Java 語言,不僅可以開發(fā)出功能強大的大型應用程序,而且 Java 語言本身突出的跨平臺的特性也使得它特別適合于 Inter 上的應用開發(fā),可以這樣說, Java 的出現(xiàn)使得所開發(fā)的應用程序“一次編寫,處處可用”的實現(xiàn)成為了可能。 自己對 人工智能比較感興趣,而五子棋 游戲 程序的開發(fā)實現(xiàn)這個課題,正好提供給我這樣一個研究的機會,通過對人工智能中博弈方面的研究(人機對弈),讓 我 在簡單的人機對弈全局設計,以及具體到相關算法上有了深入的了解。而這個課題就是和人工智能中的博弈論領第 2 頁 共 23 頁 域緊密相關的。智能已經(jīng)成為當今各種新產(chǎn)品、新裝備的發(fā)展方向。由于 Applet 運行速度較慢,如果在加上算法搜索時間,顯然不符合程序的設計要求,決定用 Java 應用程序開發(fā) .整個程序的功能實現(xiàn)流程是這樣的:網(wǎng)絡對戰(zhàn)涉及算法較少,所以先實現(xiàn)網(wǎng)絡部分,實現(xiàn)基本的棋盤和棋子的類,添加判斷勝負條件,這部是基礎,也是很重要的,電腦AI 也在這些基礎上添加上來的。 2 課題相關基礎 五子棋 棋盤和棋子 現(xiàn)代五子棋棋盤,經(jīng)過國際棋聯(lián)的多次修改,最終定為 15 X 15 路,即棋盤由橫豎各 15 條平行線交叉組成,共有 225 個交叉點;棋盤上共有五個星位,中間的星位稱為天元,周圍 四點為小星,與圍棋盤略有不同。 規(guī)則及解釋 1:黑棋先行,白棋隨后。黑棋禁 手包括“三、三”;“四、四”;“長連”。 7:黑方禁手形成時,白方應立即指出。如此輪流落子直到某一方首先在棋盤的直線 橫線或斜線上形成連續(xù)的五子或五子以上,則該方就算獲 勝。 五子棋常用術語 二:二是五子棋的一切進攻的基礎;又分為活二和死二。三分為活三、死三、眠三。 我們通常所說的“三”。見圖5。 四:四的形狀有三種,它分為:活四,沖四、跳沖四。 圖 6 活四 第 6 頁 共 23 頁 圖 7 跳沖四 圖 8 反沖四 如圖 8,黑棋在 1 點進攻,形成一子雙殺,這時白棋的妙手是在 a位活三,它同時阻擋了黑棋的兩種取勝方法。 自由獲勝:除了追下取勝以外的獲勝方法,稱之為自由取勝。 之所以這么規(guī)定也是為了規(guī)范比賽,其實我們業(yè)余的棋手,黑白棋子誰先下都不限制,只是先落子會有比較大的優(yōu)勢,另一方始終處于防守的被動狀態(tài)。 A B C D 第 7 頁 共 23 頁 E F 圖 9 禁手 見圖 9。 長連:相同顏色的連續(xù)六子或六子以上。所以,在五子棋的對局眾進攻和防守都是從“二”和“三”的爭奪開始的。 對局的早期,選點的著眼點主要是使本方的棋子保持聯(lián)系,為以后創(chuàng)造盡可能多的成三、成四的機會,同時盡量限制對方成為好形。如果是黑方,還特別要注意進攻終被對方反擊時出現(xiàn)的各種禁手點的可能性。 五子棋的取勝思路是由一個子開始,目標是運用各種方法在棋盤上發(fā)展出五連乃至長連而取勝。 Java 有以下主要特點: 1:簡單( Simple) 制定 Java 的原則之一,是要建立一種結構簡單而且使用容易的系統(tǒng),可以讓用戶不必接受很深的訓練就可以開始設計程序,所以 Java 的語法盡可能與在當前許多程序設計師都采用的 C 及 C++語言相似。對象的封裝性可以使對象的接口定義明確;繼承性可以增加軟件的可重用性,有助于分類及模版設計等。 4:強壯性 (Robust) 由 Java 所編寫的程序要能在各種情況下運行,而且必須具 有高的穩(wěn)定性。 6:結構中立性 (Architecture Neutral) 第 9 頁 共 23 頁 在網(wǎng)絡上存在許多不同類型的計算機,從中央處理器到操作系統(tǒng)的機構均有很高的差異性。 7:多線程 (Multithreaded) 多線程是開發(fā)復雜和功能強大的程序所必須的手段之一, Java 同樣支持這個重要功能。將編好的源文件保存起來,源文件的擴展名必須是 Java。 Java 應用程序必須通過 Java 解釋器( )來解釋執(zhí)行其字節(jié)碼文件; Java 小應用程序可通過支持 Java 標準的瀏覽器來解釋執(zhí)行。 圖 11 環(huán)境變量 Jcreator 的安裝很簡單,這里不在詳細敘述,把路徑配置好就可以了。 定義了面板上的其他元素,包括玩家列表,標題欄等。在具體實現(xiàn)的時候再介紹其作用。139。339。539。739。939。,39。,39。,39。,39。,39。,39。用字符數(shù)組存儲,最后確定位圖 13 五子棋程序流程圖 第 12 頁 共 23 頁 置放上去即可。 //()。 //畫橫向標識符 (line,25,15)。 } for(int i=9,j=0。 i 15。 (25, 25, 25, 455)。i15。 yp=16+j*30。 } if (board[i][j] == 2){ ()。 private static int xp。 (xp,yp,10,28,28)。由于代碼太多,下面給出了一般狀況的判斷勝負函數(shù) ,及以坐標( x,y)為中心的9X9 矩形,只能在棋盤的內部,如果超過棋盤,就要另外考慮。xi=0amp。 } else{ break。x+i15amp。 }else{ break。但是我們一般沒有這個規(guī)則限制,都是輪流先下子。 如果有一方獲勝,彈出提示框,如果確認則清空棋盤繼續(xù)新游戲。 } 需要注意的一點是落下的棋子如果離任何一方的邊界小于 4,則以邊界為限制判斷是否有一方獲勝,這樣的話也要考慮多種方向,但原理還是和基本情況是一樣的。 /** * 消息列表 * type = 1 // 請求連接 , msg = 連接者名字 * type = 2 // 放棋子 * type = 3 // 請求和其他人游戲 第 16 頁 共 23 頁 * type = 4 // 拒絕游戲請求 * type = 5 // 同意請求 * type = 6 // 發(fā)送勝利消息 * type = 7 // 斷開連接請求 * type = 8 // 保存游戲,但是不放在磁盤上,在下一局開始時將會丟失 * type = 9 // 添加新的玩家到所有客戶端的玩家列表 * type = 10// 響應信息 type ==1 * type = 11// 和玩家游戲 ,msg 保存玩家的名字 ,創(chuàng)建游戲的玩家設置游戲 * type = 12//信息設置 * type = 13// 設置玩家顏色 * type = 14// msg= 接受請求的一方設置 * type = 15// 服務端更新信息 * type = 16// 發(fā)送控制或錯誤信息 * type = 17// 游戲失敗 * type = 18// 服務端套接字關閉 * type = 19// 玩家結束游戲及更新 * tyep = 20// 電腦獲勝 / 玩家獲勝 */ SOCKET 監(jiān)聽端口,如果有玩家則更新玩家列表, 如果雙擊除自己以外的玩家,則可以開始游戲,發(fā)送游戲請求,如果同意則返回棋子顏色并開始游戲,同時清空玩家列表。 圖 23 服務端監(jiān)聽 圖 15 服務端監(jiān)聽 第 17 頁 共 23 頁 雙擊除自己以外的一個玩家,發(fā)出游戲請求,同時要確定自己棋子的顏色,用 MSG 發(fā)回服務端 。 } else{ ss = new String(black)。 諾伊曼 ( John von Neumann,19031957)和摩根斯坦恩( Oskar Margenstern, 19021977)在 1944 年出版了《博弈論與經(jīng)濟行為》( Theory of Games and Economic Behavior)一書 中,最早地提出了關于博弈論的概念。換言之,博弈就是研究個體如何在錯綜復雜的相互影響中得出最合理的策略,博弈論正是衍生于古老的游戲或曰博弈如象棋、撲克等。因為有可能有復合棋型,比如“四三 ” ..從第一步起,不管是哪一方下子,電腦都有以這點為中心搜索 9X9 的矩陣內的所有空白點上棋子的重要性,一顆棋子對棋型影響的大小有 9X9。不同的棋類游戲各有所謂的規(guī)則,規(guī)則中就有博弈雙方都可以走哪些著法。 // 39。i++){ if([i][j]!=0){ continue。ik=RectX1 amp。 continue。i+kRectX2 amp。 } if([i+k][j]==0){ flag++。 } } } 設定相應空位的重要值以后,選取最大的值下 子,代碼如下: private void getBiggest(int [][] arr,int x,int y){ int [] temp=new int[2]。i++){ for(int j=0。 swt=arr[i][j]。 } 對于特定的棋型,都有一個不同的估值,以此來區(qū)別不同棋型的優(yōu)劣,也以此來決定最終的落子位置。 同理 ,和判斷勝負 一樣下子 也要考慮邊界 特殊 情況 ,矩形設置如下: private void setRect(int x,int y){ if(x40) RectX1=x4。 if(y40) RectY1=y4。 if(RectX1RectY1) RectX1 = x(yRectY1)。 } 努力提高電腦 AI 一直是五子棋游戲關鍵,第一步的人工智能只是估值和搜索算法的集合,要真正的提高電腦 AI 還有很多步,例如,我的電腦 AI 只是片面的分析了雙方的器型,沒有前瞻性。我大體說一下這 2種算法的思路:遞歸算法的意思可以說 成“今后幾步預測法”,首先讓電腦分析一個可能的點,如果在這兒下子將會形成對手不得不防守的棋型(例如:“沖四”、“活三”);那么下一步對手就會照你的思路來防守你,如第 21 頁 共 23 頁 此一來便完成了第一步的預測。關于 增加細致的特定棋形的判斷 ,前面已經(jīng)說過,以為不同的棋型,例如“死四”就有不同的幾種情況,如果對每一種設置不同的重要值,也可以提高電腦 AI,但是要設置合適的分數(shù)就要在實踐中檢驗了,因為這個不是大小的問題,而是相差多少。但我 并不以為 這是很好的方法。對五子棋相關規(guī)則及技巧有了新的收獲,最重要的是自己動手解決問題的能力得到了提高。隨著新的算法和理論的研究,人工智能必定會在人們生活中扮演重要的角色。 [4] 徐立 ,孫計安 .Java 應用與開發(fā)案例教程 .北京: 清華大學出版社 ,。在此向他表示我最衷心的感謝!
點擊復制文檔內容
公司管理相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1