1)本書以五子棋游戲制作為背景,介紹使用Java語言進行軟件開發的技術與技巧,內容包括單機版五子棋、網絡五子棋、棋譜保存與回放、以及人機對戰,本書可作為Java程序設計實訓、Java課程設計課程的教材,也可以作為畢業設計或游戲編程愛好者的參考書;
(2)本書在寫作過程中,始終強調面向對象的編程思想,重點訓練Java中的網絡編程、數據庫編程、界面編程、文件操作以及異常處理等;
(3)教材以五子棋游戲制作為例,提高學生的學習興趣,激發學生的學習積極性。
Java是目前使用*廣泛的語言之一,對于軟件開發人員,掌握Java語言基礎以及擁有使用Java進行軟件開發的能力是非常重要的,因此大多數與計算機相關的專業都開設了Java程序設計課程。
Java程序設計是一門實踐性很強的課程,僅僅掌握Java的基本語法知識,與利用Java進行軟件開發還有很大的差距。掌握Java基本知識后,應該通過大量的編程實踐,逐步提高利用Java進行軟件開發的能力。
本書以五子棋游戲制作為例,介紹利用Java進行軟件開發的技術。五子棋游戲比較簡單,是大家比較熟悉的游戲之一,因此選擇五子棋游戲為例,有助于提高學習者的興趣,易于跟著書中介紹的步驟,一步步將五子棋游戲制作出來。為了簡單起見,本書中的五子棋程序不考慮禁手。
本書由4章內容組成,包括單機版五子棋、網絡五子棋、下棋數據的保存,以及人機對戰;涉及的主要知識有異常處理、輸入輸出流、數據庫編程、多線程和網絡編程等。
本書可作為計算機相關專業Java課程設計、Java實訓等課程的教材,也可作為學生畢業設計和Java游戲程序愛好者的參考書。
本書的所有程序都由作者親自編寫,并在JDK1.6環境下調試通過,數據庫使用的是MySQL數據庫。
為了方便教師教學與學生學習,本書為使用本教材的教師提供PowerPoint電子教案,方便教師根據具體情況進行必要的修改,相關資源可以從清華大學出版社網站下載。
本書由寧淑榮、楊國興主編,參加編寫工作的還有莊鳳娟、王國芳等。
由于作者水平有限,書中難免有不妥之處,懇請廣大讀者批評指正。
作者
2017年3月
第1章單機版五子棋游戲/1
1.1五子棋游戲窗口制作/1
1.2創建棋盤類/2
1.2.1準備圖片/2
1.2.2棋盤類的創建/2
1.2.3顯示棋盤/3
1.3創建棋子類/4
1.3.1棋子類/4
1.3.2在棋盤上畫出棋子/6
1.4實現單擊鼠標下棋/6
1.5判斷贏棋/8
1.6實現工具欄上的功能/11
1.7改變鼠標的形狀/13
1.8作業/13第2章網絡五子棋/15
2.1服務器端界面制作/16
2.2創建客戶端界面/17
2.2.1創建主窗口和棋盤/17
2.2.2創建客戶端界面右側的3個類/18
2.2.3創建客戶端界面下方的控制面板類/21
2.3實現“連接主機”按鈕的功能/22
2.3.1連接服務器獲取用戶名/23
2.3.2將已經連接的客戶端添加到用戶列表中/26
2.4實現“加入游戲”按鈕的功能/31
2.4.1客戶端申請加入后對方選擇同意或拒絕/31
2.4.2完成猜棋并準備好下棋/37
2.5實現下棋功能/41
2.5.1客戶端向服務器發送下棋消息/41
2.5.2服務器接收消息并處理/43
2.5.3客戶端接收消息并處理/43
2.6實現“放棄游戲”的功能/45
2.6.1Command類添加常量/46
2.6.2添加“放棄游戲”的響應代碼/46
2.6.3在Communication類中添加giveup()
方法/46
2.6.4服務器接收giveup命令并處理/46
2.7加入計時功能/47
2.7.1設計計時線程類/47
2.7.2猜先后啟動倒計時線程/48
2.8完善“關閉程序”按鈕的功能/49
2.8.1在Command類中添加命令/49
2.8.2客戶端向服務器發送命令/49
2.8.3服務器處理quit命令/50
2.8.4客戶端處理delete命令/50
2.9作業/51第3章下棋數據的保存/52
3.1創建數據庫/52
3.1.1數據庫設計/52
3.1.2創建數據庫/53
3.2用戶管理/55
3.2.1數據庫連接類/55
3.2.2用戶管理/56
3.3用戶注冊和登錄/61
3.3.1準備工作/62
3.3.2用戶登錄/62
3.3.3用戶注冊/67
3.4記錄棋局和棋譜/71
3.4.1記錄棋局/71
3.4.2記錄棋譜/77
3.5查詢棋局和棋譜欣賞/80
3.5.1查詢棋局/81
3.5.2棋譜欣賞/85
3.6作業/90第4章人機對戰/91
4.1準備工作/91
4.1.1在主程序中添加復選框/91
4.1.2在棋盤類中添加成員變量/92
4.1.3棋盤類中添加方法以及修改已有的
方法/92
4.2計算機智能下棋/95
4.2.1處理棋盤類中的數據成員/95
4.2.2五子棋的棋型與估值/97
4.2.3創建估值類Evaluate/100
4.2.4實現計算機智能下棋/111
4.3極小極大搜索法提高下棋水平/112
4.3.1極小極大算法與棋局的評價/113
4.3.2極小極大算法的實現/115
4.4AlphaBeta搜索方法/124
4.4.1AlphaBeta搜索方法簡介/124
4.4.2AlphaBeta搜索方法實現/125
4.5作業/128
作業參考答案/130
參考文獻/152