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