JAVA課程設計圍棋對弈(含代碼).doc_第1頁
JAVA課程設計圍棋對弈(含代碼).doc_第2頁
JAVA課程設計圍棋對弈(含代碼).doc_第3頁
JAVA課程設計圍棋對弈(含代碼).doc_第4頁
JAVA課程設計圍棋對弈(含代碼).doc_第5頁
已閱讀5頁,還剩47頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

摘要 圍棋作為一個棋類競技運動,在民間十分流行,為了熟悉五子棋規(guī)則及技 巧,以及研究簡單的人工智能,決定用Java開發(fā)五子棋游戲。主要完成了人機對 戰(zhàn)和玩家之間聯(lián)網(wǎng)對戰(zhàn)2個功能。網(wǎng)絡連接部分為Socket編程應用,客戶端和服 務器端的交互用Class Message定義,有很好的可擴展性,客戶端負責界面維護和收集用戶輸入的信息 ,及錯誤處理。服務器維護在線用戶的基本信息和任意兩個對戰(zhàn)用戶的棋盤信息 ,動態(tài)維護用戶列表。在人機對弈中通過深度搜索和估值模塊,來提高電腦棋手 的智能。分析估值模塊中的影響精準性的幾個要素,以及提出若干提高精準性的 辦法,以及對它們搜索的節(jié)點數(shù)進行比較,在這些算法的基礎上分析一些提高電 腦AI方案,如遞歸算法、電腦學習等。算法的研究有助于理解程序結構,增強邏 輯思維能力,在其他人工智能方面也有很大的參考作用。 關鍵詞關鍵詞:圍棋,信息自動化,游戲,java ABSTRACT As a chess athletic sports, the folk very popular, to familiar with renju rules and skills, and research simple artificial intelligence, decided to use Java development renju game. Main completed the man-machine against and between players networking against two functions. Network connection parts for Socket programming application, the client and the server interaction with scale-up macro definition, have very good scalability, the client is responsible for maintenance and collect user interface input, and error handling. Server maintenance, online users of the basic information and any two against the user board information, dynamic maintenance user list. In the man-machine right through the depth search and valuations module, to improve the intelligent computer player. Analyses the influence of valuation module precision of several elements, and puts forward some measures of improving precision, and they search number of nodes in the comparison, in these algorithm is analyzed on the basis of some improve computer AI scheme, such as recursion algorithm, computer learning, etc. The algorithm for help to understand the program structure, strengthen the logical thinking ability, in other artificial intelligence also have very great reference role. KeywordsKeywords: information automation , games , Java 目目 錄錄 ABSTRACT.II 目目 錄錄.III 第第1章章 引言引言.1 1.1 背景.1 1.2 課程設計內(nèi)容.2 1.3 任務分工.3 第第2章章 圍棋對弈系統(tǒng)圍棋對弈系統(tǒng).3 2.1 圍棋概述.3 2.1.1圍棋定義.4 2.1.2 開發(fā)圍棋的任務及目的.5 2.2 主要系統(tǒng)介紹.6 第第3章章 圍棋對弈系統(tǒng)的設計圍棋對弈系統(tǒng)的設計.7 3.1 系統(tǒng)需求分析.7 用戶登陸界面圖.7 3.2 系統(tǒng)開發(fā)及運行環(huán)境.9 3.3 系統(tǒng)主要功能要求.10 3.4.系統(tǒng)總體結構.11 第第4章章 圍棋對弈系統(tǒng)的具體實現(xiàn)圍棋對弈系統(tǒng)的具體實現(xiàn).12 4.1界面設計.12 4.1.1用戶登陸界面圖.12 4.1.2用戶注冊界面圖.13 4.1.3 系統(tǒng)主界面.16 第第5章章 結束語結束語.19 致謝致謝.19 參考文獻參考文獻.19 第第1章章 引言引言 1.11.1 背景背景 圍棋是一種智力游戲,起源于中國。中日韓是現(xiàn)今圍棋的三大支柱,但近年來日本圍棋逐步衰弱,形成了中 韓爭霸的局面。 圍棋是中華民族傳統(tǒng)文化中的瑰寶,它體現(xiàn)了中華民族對智慧的追求,古人常以“琴棋書畫”論及一個人的 才華和修養(yǎng),其中的“棋”指的就是圍棋。被人們形象地比喻為黑白世界的圍棋,是我國古人所喜愛的娛樂 競技活動,同時也是人類歷史上最悠久的一種棋戲。由于它將科學、藝術和競技三者融為一體,有著發(fā)展智 力,培養(yǎng)意志品質和機動靈活的戰(zhàn)略戰(zhàn)術思想意識的特點,因而,幾千年來長盛不衰, 并逐漸地發(fā)展成了一種國際性的文化競技活動。 圍棋是一種策略性二人棋類游戲,使用格狀棋盤及黑白二色棋子進行對弈。目前圍棋流行于亞太,覆蓋世界 范圍,是一種非常流行的棋類游戲。 中國圍棋規(guī)則是數(shù)子法,圍棋的本質是:誰的占地面積大誰獲勝。 圍棋的規(guī)則十分簡單,卻擁有十分廣闊的落子空間,使得圍棋變化多端,比其它棋類復雜深奧。這就是圍棋 的魅力所在。下圍棋對人腦的智力開發(fā)很有幫助,可增強一個人的計算能力、創(chuàng)造能力、思維能力、判斷能 力,也能提高人的注意力和控制力。下圍棋對兒童少年的智力發(fā)展起到積極作用,使他們能更好的分析事物 。 Java語言是當今最為流行的程序設計語言之一 作為一門非常優(yōu)秀和極為健壯的編程語言,它同時具有的面向對象,與平臺無關 ,分布式應用,安全,穩(wěn)定和多線程等優(yōu)良的特征,使用Java語言,不僅可以開 發(fā)出功能強大的大型應用程序,而且Java語言本身突出的跨平臺的特性也使得它 特別適合于Internet上的應用開發(fā),可以這樣說,Java的出現(xiàn)使得所開發(fā)的應用程 序“一次編寫,處處可用”的實現(xiàn)成為了可能。 近來隨著計算機的快速發(fā)展,各種各樣的電腦游戲層出不窮,使得我們能有更多 的娛樂項目,而棋類游戲能起到鍛煉人的思維和修身養(yǎng)性的作用,而且棋類游戲 水平頗高,大有與人腦分庭抗禮之勢。其中戰(zhàn)勝過國際象棋世界冠軍- 卡斯帕羅夫的“深藍”便是最具說服力的代表。 越來越多的具有智能的機器進入了人類的生活,人工智能的重要性如今顯而易見 。自己對人工智能比較感興趣,而圍棋游戲程序的開發(fā)實現(xiàn)這個課題,正好提供 給我這樣一個研究的機會,通過對人工智能中博弈方面的研究(人機對弈),讓 我在簡單的人機對弈全局設計,以及具體到相關算法上有了深入的了解。人工智 能屬于計算機科學的領域,它以計算機技術為基礎,近幾十年來,它的理論和技 術已經(jīng)日益成熟,應用領域也正在不斷擴大,顯示出強大的生命力。人工智能大 致可以分成幾個學科,它們每一個都是獨特的,但是它們常常又互相結合起來完 成設計任務,這時,這些學科之間的差別就變的很模糊。人工智能在專家系統(tǒng), 自然語言理解,自動定理證明,自動程序設計,人工智能在機器人學、模式識別 、物景分析、數(shù)據(jù)庫的智能檢索、機器下棋(實質上是博弈論問題)和家用電器 智能化等領域都有廣泛的應用。而這個課題就是和人工智能中的博弈論領域緊密 相關的。 這個題目核心是人工智能和Socekt編程,。并且人工智能中的博弈部分,由于采 用了大量的搜索算法,其中很多被利用到各方面。它的概念、方法和技術,正在 各行各業(yè)廣泛滲透。智能已經(jīng)成為當今各種新產(chǎn)品、新裝備的發(fā)展方向。所以, 趁著這個機會,對人工智能中比較容易實現(xiàn)的人機博弈進行了解研究學習,也是 很實用且很有必要的。 1.21.2 課程設計內(nèi)容課程設計內(nèi)容 此課程設計是一個小游戲(圍棋)的實現(xiàn),主要運用了GUI(用戶圖形界面)API(應用程序借口)來實現(xiàn)。此程 序沒有用到圖片的引用,棋盤和棋子的設計完全是應用函數(shù)繪制, 再加入復選框,按鈕,標簽及實現(xiàn)本游戲的用戶界面布局。 在頁面上通過單純的JCreator實現(xiàn)的下棋程序,能夠實現(xiàn)提子,打劫等簡單的下棋功能。更好的掌握java編程 以及布局和設計。通過課程設計把課堂上講的內(nèi)容融會貫通,學會設計程序、開發(fā)應用軟件、開發(fā)系統(tǒng)軟件 等各項工作。通過實習掌握語言的語法結構,理解類和對象的概念,準確的使用各種數(shù)據(jù)類型,對面向對象 中的繼承和多態(tài)的概念要理解、會使用,在程序中提高代碼的重用性,使設計的程序結構清晰、易于維護。 一、棋盤 盤面有縱橫各十九條等距離、垂直交叉的平行線,共構成1919361個交叉點(以下簡稱為 “點”)。 在盤面上標有幾 個小圓點。稱為星位,中央的星位又稱“天元”。 二、棋子 棋子分黑白兩色。均為扁圓形。 棋子的數(shù)量以黑子181、白子180個為宜。 三、圍棋的下法 一、對局雙方各執(zhí)一色棋子,黑先白后,交替下子,每次只能下一子。 二、棋子下在棋盤的點上。 三、棋子下定后,不得向其他點移動。 四、輪流下子是雙方的權利,但允許任何一方放棄下子權。 四、棋子的氣 一個棋子在棋盤上,與它直線緊鄰的空點是這個棋子的“氣”。 棋子直線緊鄰的點上,如果有同色棋子存在,則它們便相互連接成一個不可分割的整體。它們的氣也應一并 計算。 棋子直線緊鄰的點上,如果有異色棋子存在,這口氣就不復存在。如所有的氣均為對方所占據(jù),便呈無氣狀 態(tài)。無氣狀態(tài)的棋子不能在棋盤上存在,也就是第四條提子。 五、提子 把無氣之子提出盤外的手段叫“提子”。 提子有二種: 一、下子后,對方棋子無氣,應立即提取。 二、下子后,雙方棋子都呈無氣狀態(tài),應立即提取對方無氣之子。 六、計算勝負 1、貼3又3/4子的規(guī)則 第一步,把死子撿掉。第二步,只數(shù)一方圍得點(叫做目)并記錄下來(一般圍得點以整十目為單位),再 數(shù)剛才那一方的子數(shù)并記錄下來,再把目數(shù)和子數(shù)加起來。第三步,如果數(shù)的是黑棋,再減去3又3/4子,如 果數(shù)的是白棋,再加上3又3/4子。第四步,結果和180又1/2(棋盤361個點的一半)比較,超過就算勝,否則 判負。 2、讓先與讓子 讓先不貼目,讓子要貼還讓子數(shù)的一半(就當被讓方是預先收了單官)。 1.31.3 任務分工任務分工 第第2章章 圍棋對弈系統(tǒng)圍棋對弈系統(tǒng) 2.12.1 圍棋概圍棋概述述 網(wǎng)絡圍棋在中國的出現(xiàn)幾乎跟隨著互聯(lián)網(wǎng)同步成長,1998年, 聯(lián)眾率先推出了網(wǎng)絡圍棋對弈。幾年來各大網(wǎng)絡圍棋平臺先后 上線,出身各異,水平也參差不齊。根據(jù)網(wǎng)絡資料顯示,截止 2007年底,中國網(wǎng)絡圍棋平臺平均在線人數(shù)達6萬人。 大型的游戲平臺如QQ游戲、聯(lián)眾游戲中都有圍棋游戲。也就是 說QQ圍棋、聯(lián)眾圍棋都是鑲嵌在其游戲平臺之上。依靠游戲平 臺用戶人數(shù)的優(yōu)勢,這兩個平臺圍棋用戶人數(shù)占據(jù)了網(wǎng)絡圍棋 用戶的半數(shù)之多。 但根據(jù)專業(yè)人士分析:這部分用戶無論在產(chǎn)品使用深度和對圍 棋的認知上是絕對的新手,淺嘗輒止,他們大多是過客。同時 他們的圍棋軟件本身也不夠專業(yè)。專業(yè)的網(wǎng)絡圍棋平臺才是中 國網(wǎng)絡圍棋普及和發(fā)展的出路。 目前國內(nèi)的專業(yè)網(wǎng)絡圍棋平臺,大致可分使用韓產(chǎn)軟件和國 產(chǎn)軟件兩大類。國內(nèi)專業(yè)圍棋平臺的領軍人物弈城、TOM, 便 是使用韓產(chǎn)軟件的代表。兩平臺能夠實現(xiàn)中韓對壘的特性,為 他們吸引了不少高水平的棋手,并受到棋友的廣泛認可。但他 們同樣有一個死穴,就是兩家皆為購買韓國軟件,不掌握主動 權,因此根本無法保證軟件的及時更新,容易受制于韓方?!稗?城事件”便將這個致命缺點暴露無疑。 經(jīng)典的圍棋系統(tǒng)有:Handtalk,Goemate,Wulu,他是陳志行的作品,曾多次獲得過 冠軍。在他的指導下一個研究小組編寫了烏鷺(WUIU),也在比賽中取得過亞軍。 Handtalk是用匯編語言編寫的,執(zhí)行速度快,程序本身也不大。由于程序并不大 ,可以推側出其所用到的模式資料也不多。Handtalk在大多數(shù)的情況下都不會失 誤,作者本人曾提到他是用到一種類似人類棋手在下圍棋時常用到的手割法來幫 助判斷的。Handtalk與其它的程序明顯不同的地方是它的攻殺能力特別強,在大 多數(shù)的比賽中,都是通過吃掉對方幾塊棋而獲勝。這是由于程序的棋塊安危判斷 能力、形勢判斷能力、眼位判斷能力和模式匹配能力都很強的關系.這些系統(tǒng)的好 壞,跟設計者的棋力關系很大,作者本人具有近職業(yè)水準的棋力,對Handtalk的 編寫很有 2.1.1圍棋定義圍棋定義 圍棋是人生的模擬。 開局時,盤上一片空白,就好像一個剛剛有了自覺意識的小孩,睜開了懵懂 的雙眼,開始了自己的人生之路。開局時,你可以有各種選擇,自由度最大,走 哪一步都不會讓你立刻輸?shù)簟?布局基本上是興趣的顯示,有喜歡大模樣的,那是寄希望于未來的做法;有 現(xiàn)實地撈空的;有順應對方的思路,不知不覺中達到自己目的的;也有處處與對 方作對,即使自己不爽,也要給對方添堵的。 由于棋盤的廣大,不可能面面俱到地行棋。過程中,對局者不斷地在判斷、 取舍,好像人生開始在選擇自己的道路了??粗@里想要,那里也想要,可是沒 法面面俱到,終究只能選取一條路。有時候,你的招法對路,越走越暢,有的時 候就有問題,想要的沒要到,越下越添堵。 優(yōu)勢時,好比人生得意時,心情很爽,最好一直就這么下去;劣勢時,千方 百計尋找對手的破綻,伺機翻盤。心理毅力強的人,總能把弦繃得緊緊的,一直 像甲魚一樣咬住對手;心理軟弱的人,很早就放棄抵抗,認輸投降。 優(yōu)勢時被對方翻盤了,就好像原本勝券在握的一件事情,被自己搞砸了,懊 悔痛恨都沒有用;大敗的棋,忽然找到對手的漏勺又贏了回來,就好像本已被逼 到絕境,卻又咸魚翻生,大獲全勝,心情之爽,難以表達! 由于圍棋的棋盤相對比較廣大,過程也較反復,一盤棋下來,通常勢均力敵 的對手都會有不止一次的獲勝機會。這種翻來覆去的體驗,非常象人生經(jīng)歷的一 種濃縮、抽象。人生,是不可重復的,因此在邁出想要嘗試的一步時,有可能隨 之而來的,是非常慘痛的代價。而圍棋的過程,可以讓你在做出種種嘗試后付出 最少的代價大不了輸一盤棋么?推掉再來就是了。 我想,這就是圍棋的魅力之所在吧。 2.1.2 開發(fā)圍棋的任務及目的開發(fā)圍棋的任務及目的 隨著 Intemet 的普及,網(wǎng)絡游戲己經(jīng)成為大家耳濡目染的新生事物。網(wǎng)絡游戲從出現(xiàn)到現(xiàn)在發(fā) 展的時間很短,但是其發(fā)展速度卻非常之快。現(xiàn)在,可以說網(wǎng)絡游戲已經(jīng)成為人 們休閑、娛樂的有效方式。網(wǎng)絡游戲種類很多,目前主要分戰(zhàn)略類、 RPG 類、棋牌類等幾種,常見的棋牌類游戲有中國象棋、國際象棋、圍棋、橋牌、拱 豬、麻將等。網(wǎng)絡游戲具有如下特征: (1)有一個或多個游戲服務器啟動特定游戲服務; (2)游戲者到游戲網(wǎng)站下載客戶端程序并申請游戲賬號。然后啟動客戶端程序 通過某種網(wǎng)絡協(xié)議連接游戲服務器。 (3)客戶端負責處理客戶端顯示和操作界面,具有簡單的邏輯處理功能力, 同時負責接收發(fā)送與服務器端交互的數(shù)據(jù)包。 (4)服務器程序負方處理服務器端邏輯、游戲邏輯、客戶之間的網(wǎng)絡信息傳遞 ,以及數(shù)據(jù)庫之間的數(shù)據(jù)讀取保存工作。 同時服務器端還要承擔客戶端數(shù)據(jù)的接收、轉發(fā)工作。 ( 5 ) 網(wǎng)絡游戲常用的網(wǎng)絡協(xié)議有Internet的 TCp / IP 協(xié)議、適用于局域網(wǎng)(如紅色警報聯(lián)網(wǎng)等采用)的IPX協(xié)議。 雖然目前很多圍棋游戲正在運行,但是使用java平臺開發(fā)的游戲少之又少,這就 使得圍棋客戶端的運行平臺十分有限,不能滿足今后發(fā)展的需求,如移動客戶端 ,就基本上沒有。因此開發(fā)一套基于java的圍棋系統(tǒng)十分必要。 2.22.2 主要系統(tǒng)介紹主要系統(tǒng)介紹 主要功能包括: 用戶連接服務器之后: 1、新用戶可以注冊。 2、老用戶必須登陸,才可以玩游戲等其他動作。 開始游戲之后: 1、用戶雙方選擇白棋和黑棋。 2、任何一方可以隨時隨地認輸,游戲結束。 4、要實現(xiàn)圍棋最基本吃掉對方的法則。 此設計為本站原創(chuàng)作品。其中包括:源程序,可執(zhí)行程序,論文,錄像,使用說 明。 第第3章章 圍棋對弈系統(tǒng)的設計圍棋對弈系統(tǒng)的設計 這一章時介紹開發(fā)環(huán)境和用到的開發(fā)工具,系統(tǒng)主要的功能設計,系統(tǒng)的數(shù) 據(jù)流程圖。 3.13.1 系統(tǒng)需求分析系統(tǒng)需求分析 用戶登陸界面圖用戶登陸界面圖 用戶信息 輸入信息是否 合法 用戶登錄到主界面 是 彈出錯誤信息 否 輸入 登錄界面 自 動 跳 轉 驗 證 3.設計流程(帶流程圖) 用用 戶戶 界界 面面 棋棋 盤盤 展展 示示 復復 選選 框框 : 白白 子子 先先 x 復復 選選 框框 : 黑黑 子子 先先 按按 鈕鈕 : 游游 戲戲 開開 始始 按按 鈕鈕 : 重重 置置 游游 戲戲 標標 簽簽 : 贏贏 或或 輸輸 3.設計流程(帶流程圖) 游戲初始化 白棋贏 黑棋贏 判斷 準備就緒 3.23.2 系統(tǒng)開發(fā)及運行環(huán)境系統(tǒng)開發(fā)及運行環(huán)境 硬件平臺: CPU:P41.8GHz。 內(nèi)存:256MB以上。 軟件平臺: 運行游戲運行游戲 用戶界面用戶界面 白字先白字先黑子先黑子先 游戲開始游戲開始 落子落子 游游 戲戲 重重 置置 操作系統(tǒng):Windows XP。 開發(fā)工具包:JDK Version1.6.2。 JSP服務器:Tomcat 6.0。 瀏覽器:推薦使用IE6.0。 分辨率:最佳效果1024768像素。 3.33.3 系統(tǒng)主要功能要求系統(tǒng)主要功能要求 系統(tǒng)設計目標如下: 主要功能包括: 1、能夠在局域網(wǎng)上實現(xiàn)多人在線對戰(zhàn)。 用戶連接服務器之后: 1、新用戶可以注冊。 2、老用戶必須登陸,才可以玩游戲等其他動作。 3、登陸之后,用戶可以選擇跟哪個在線玩家對戰(zhàn),如果對方同意,游戲開始。 4、如果有以前沒有下完的棋譜,可以選擇讀取棋譜,看看每一部是怎么走的。 開始游戲之后: 1、用戶雙方選擇白棋和黑棋。 2、任何一方可以隨時隨地認輸,游戲結束。 3、如果雙方?jīng)]有下完,可以保存棋盤。 4、要實現(xiàn)圍棋最基本吃掉對方的法則。 此設計為本站原創(chuàng)作品。其中包括:源程序,可執(zhí)行程序,論文,錄像,使用說 明。 3.4.系統(tǒng)總體結構系統(tǒng)總體結構 圖圖3.1 系統(tǒng)功能結構圖系統(tǒng)功能結構圖 介紹:各功能模塊實現(xiàn)的功能為: 庫存管理功能模塊圖如圖3.2所示。 圖圖3.2庫存管理功能模塊圖庫存管理功能模塊圖 圍棋數(shù)據(jù)管理 黑子入庫新增模塊 黑子入庫提子模塊 白子入庫新增模塊 修改入庫單和入庫報表模塊 庫存查詢模塊 第第4章章 圍棋對弈系統(tǒng)的具體實現(xiàn)圍棋對弈系統(tǒng)的具體實現(xiàn) 界面是系統(tǒng)之間最直接的交互界面,界面的友好性體現(xiàn)了軟件設計的質量, 并在很大程度上決定了軟件是否成功。 4.14.1界面設計界面設計 4.1.1用戶登陸界面圖用戶登陸界面圖 用戶信息 輸入信息是否 合法 用戶登錄到主界面 是 彈出錯誤信息 否 輸入 登錄界面 自 動 跳 轉 驗 證 圖圖4.1.1 用戶登錄模塊框圖用戶登錄模塊框圖 圖圖4.14.1 用戶登陸界面用戶登陸界面 此loginDialog函數(shù)的作用是檢測用戶登陸的合法性,并確認用戶輸入了合法的 登錄名和口令。 部分代碼: login = new JDialog(); login.setTitle(登錄); /設置標題 login.setLayout(new FlowLayout(); /利用流布局來設置窗口的布局 login.add(new JLabel(用戶名:); /添加標簽為用戶名的對象 final JTextField name = new JTextField(10); /設置文本框中字符不得超過10個 login.add(name); login.add(new JLabel(密 碼:); final JPasswordField password = new JPasswordField(10); /設置密碼框中字符不得多于10個 password.setEchoChar(*); /設置顯示密碼對應的字符為* 4.1.2用戶注冊用戶注冊界面圖界面圖 圖圖4.24.2 用戶注冊界面用戶注冊界面 private void registerDialog(final JDialog regDialog) Box box1 = Box.createVerticalBox(); box1.add(new JLabel(用戶名:, JLabel.RIGHT); /添加用戶名標簽,用戶名在標簽中靠右對齊 box1.add(Box.createVerticalStrut(10); box1.add(new JLabel(性別:, JLabel.RIGHT); /添加性別標簽,性別在標簽中靠右對齊 box1.add(Box.createVerticalStrut(10); box1.add(new JLabel(密碼:, JLabel.RIGHT), -1); /添加密碼標簽,密碼在標簽中靠右對齊 box1.add(Box.createVerticalStrut(10); box1.add(new JLabel(確認密碼:, JLabel.RIGHT); /添加確認密碼標簽,確認密碼在標簽中靠右對齊 Box box2 = Box.createVerticalBox(); final JTextField nameTextField = new JTextField(10); /設置用戶名文本框字符不得超過10個,且文本框不能被繼承 box2.add(nameTextField); box2.add(Box.createVerticalStrut(8); final CheckboxGroup cbg = new CheckboxGroup(); Box box21 = Box.createHorizontalBox(); final Checkbox cb1 = new Checkbox(男, cbg, true); /復選框默認狀態(tài)選定為男性 box21.add(cb1); box21.add(new Checkbox(女, cbg, false); /當鼠標點擊女性復選框時,flase自動變?yōu)閠rue box2.add(box21); box2.add(Box.createVerticalStrut(8); /定義密碼框中的字符長度小于10個 final JPasswordField pass1 = new JPasswordField(10); box2.add(pass1); box2.add(Box.createVerticalStrut(8); final JPasswordField pass2 = new JPasswordField(10); box2.add(pass2); Box baseBox = Box.createHorizontalBox(); baseBox.add(box1); baseBox.add(box2); regDialog.setLayout(new FlowLayout(); regDialog.add(baseBox); JButton confirm = new JButton(確定); /創(chuàng)建并聲明確定按鈕 JButton cancel = new JButton(取消); /創(chuàng)建并聲明取消按鈕 regDialog.add(confirm); regDialog.add(cancel); regDialog.setSize(200, 200); /設置大小 regDialog.setResizable(false); regDialog.setLocationRelativeTo(null); confirm.addActionListener(new ActionListener() public void actionPerformed(ActionEvent arg0) String sex = null; if (cbg.getSelectedCheckbox() = cb1) sex = 男; else sex = 女; if (saveUserData(nameTextField.getText().trim(), sex, new String(pass1.getPassword(), new String(pass2.getPassword() regDialog.setVisible(false); else JOptionPane.showMessageDialog(regDialog, 輸入有誤,請檢查, 錯誤提示, JOptionPane.ERROR_MESSAGE); ); /獲取監(jiān)聽器 cancel.addActionListener(new ActionListener() public void actionPerformed(ActionEvent arg0) regDialog.setVisible(false); ); /獲取監(jiān)聽器 4.1.3 系統(tǒng)主界面系統(tǒng)主界面 主界主界面面 修改修改前前 主界面修改后主界面修改后 圖圖4.34.3 系統(tǒng)主界面系統(tǒng)主界面 關鍵代碼: void initMyHash(Point startPoint,int interval) One one; Point key; /邏輯點標志 int i,j; /定義i,j for(i=1;i=19;i+) for(j=1;j=19;j+) /循環(huán) key=new Point(i,j); one=new One(); /創(chuàng)建對象 one.posX=startPoint.x+(i- 1)*interval;/相鄰點處理,獲取 one.posY=startPoint.y+(j- 1)*interval;/相鄰點處理。獲取/獲取相鄰點 one.pointAround0=new Point(i,j-1); /上 one.pointAround1=new Point(i,j+1); /下 one.pointAround2=new Point(i-1,j); /左 one.pointAround3=new Point(i+1,j); /右 if(i=1)one.pointAround2=one.OUT; /左的周圍 if(i=19)one.pointAround3=one.OUT; /右的周圍 if(j=1)one.pointAround0=one.OUT; /上的周圍 if(j=19)one.pointAround1=one.OUT; /下的周圍 myHash.put(key,one); /我的我的哈希表并且在里鍵入關鍵字 /更新盤面 public void paint(Graphics g) Point startPoint=STARTPOINT; /創(chuàng)建對象,開始點 int interval=INTERVAL; /定義成員變量 this.paintChessboard(g,startPoint,interval); /棋盤的操作 this.paintChessman(g,startPoint,interval); /棋子的操作 /畫棋盤 4.2程序設計及調(diào)試運行 利用JSP“一次編寫,各處運行”的編程優(yōu)點,按功能模塊結構設計菜單,布置各 明細模塊工作界面,編寫各個模塊的程序代碼,進行編譯連接運行,經(jīng)過反復調(diào) 試修改,以達到系統(tǒng)功能要求。這個過程具有大量的工作量,應仔細對每個程序 細節(jié)進行分析思考、編寫程序并調(diào)試,做到程序簡潔清楚,盡量避免可能潛在的 程序錯誤,并在必要的地方加以注釋,以便于程序閱讀和修改。 4.3 本章小結 本章介紹了系統(tǒng)的具體實現(xiàn)和部分關鍵代碼,其中包括用戶登錄所要用到的 loginDialog函數(shù),主界面的框架設計。 第第5章章 結束語結束語 Java語言是當今最為流行的程序設計語言之一 作為一門非常優(yōu)秀和極為健壯的編程語言,它同時具有的面向對象,與平臺無關,分布式應用,安全,穩(wěn)定 和多線程等優(yōu)良的特征,使用Java語言,不僅可以開發(fā)出功能強大的大型應用程序,而且Java語言本身突出 的跨平臺的特性也使得它特別適合于Internet上的應用開發(fā),可以這樣說,Java的出現(xiàn)使得所開發(fā)的應用程序 “一次編寫,處處可用”的實現(xiàn)成為了可能。 人工智能屬于計算機科學的領域,它以計算機技術為基礎,近幾十年來,它的理論和技術已經(jīng)日益成熟,應 用領域也正在不斷擴大,顯示出強大的生命力。 近來隨著計算機的快速發(fā)展,各種各樣的電腦游戲層出不窮,使得我們能有更多的娛樂項目,而棋類游戲能 起到鍛煉人的思維和修身養(yǎng)性的作用,而且棋類游戲水平頗高,大有與人腦分庭抗禮之勢。其中戰(zhàn)勝過國際 象棋世界冠軍-卡斯帕羅夫的“深藍”便是最具說服力的代表。 致謝致謝 參考文獻參考文獻 1. 基于Java的遠程圍棋對弈軟件的設計 華東交通大學學報 1999年01期 2. 美Rogers Cadenhead. Java編程入門經(jīng)典.梅興文譯.第4版.北京:人民郵電出版社,2007 3. 楊昭編著.二級Java語言程序設計教程.北京:中國水利水電出版社,2006 4. 李芝興,楊瑞龍編.Java程序設計之網(wǎng)絡編程.清華大學出版社,2006年3 5. 宛延闿等編著.實用Java程序設計教程.北京:機械工業(yè)出版社,2006 6. 陳國君等編著.Java2程序設計基礎.北京:清華大學出版社,2006 7. 鄭莉.王行言.馬素霞編著.Java語言程序設計.北京:清華大學出版社,2006 8. 丁振凡主編.Java語言實用教程.北京:北京郵電大學出版社,2005 9. 朱喜福等編.Java程序設計.北京:人民郵電出版社,2005 10. (美)Bruce Eckel編.Java編程思想第3版.機械工業(yè)出版社, 2005年9月 11. (美)Doug Lea著.Java并發(fā)編程:設計原則與模式.中國電力出版社譯。2004年3月。 12. Java技術論壇:/ 13. 瘋狂Java聯(lián)盟:/digest.php 14. 中文Java技術網(wǎng):- 附錄附錄 源代碼源代碼 /*MainWindow*/ import java.awt.BorderLayout; import java.awt.Button; import java.awt.Checkbox; import java.awt.CheckboxGroup; import java.awt.Choice; import java.awt.Color; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.Frame; import java.awt.Graphics; /抽象類,不能用于構造方法創(chuàng)建對象 import java.awt.GridLayout; import java.awt.Image; import java.awt.Label; import java.awt.Panel; import java.awt.Point; import java.awt.TextField; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import java.awt.event.WindowEvent; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.io.RandomAccessFile; import .ServerSocket; import .Socket; import javax.swing.Box; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JLabel; /負責創(chuàng)建標簽對象,標簽用來顯示信息,但沒有編輯功能 import javax.swing.JOptionPane; import javax.swing.JPasswordField; import javax.swing.JTextField; /利用import引用各類包 public class MainWindow extends Frame implements Runnable Go panelGo=new Go(); /用Go類聲明并創(chuàng)建一個panelGo對象 Image myImage; int PORT; Socket sendSocket; /主動連接Socket PrintWriter writer; /用來發(fā)送messa

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論