999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Java的國際象棋游戲系統設計與實現

2018-11-19 10:58:58覃建運李春青
軟件導刊 2018年11期
關鍵詞:數據庫游戲功能

覃建運,李春青

(廣西民族師范學院 數學與計算機科學學院,廣西 崇左 532200)

0 引言

國際象棋作為一款著名的棋牌類游戲,不僅擁有悠久的歷史和大規模玩家群體,還具有豐富的娛樂性、健腦性和交友性[1]。眾多玩家群體在此具有廣闊的交友空間,然而受地域限制,玩家以棋會友的夢想難以實現。隨著計算機技術的發展,棋牌類游戲得到了快速發展,不僅擁有更加豐富的娛樂性,還打破了地域限制,玩家能交到更多好友。

Java作為一種面向對象設計的編程語言,因其可移植性、簡潔、安全等特點,成為世界上最受歡迎的編程語言之一,深受眾多編程人員喜愛[2-4]。本文在研究國際象棋規則基礎上,結合Java Socket編程技術[5]、Java Swing技術[6]和人機博弈算法[7-9]等,設計并實現一個具有人機博弈、在線博弈、殘局闖關和好友互動等功能的國際象棋博弈系統。

1 總體設計

1.1 網絡通信設計

游戲網絡通訊部分采用C/S模式,并結合Java Socket技術實現客戶端與服務端之間的通信[10]。游戲需實現多用戶同時在線,因此服務端需具有多客戶端同時連接功能。首先在服務端建立ServerSocket類繼承Thread類,并創建ServerSocket對象SS,采用線程實現對客戶端連接請求的持續監聽,即循環調用ServerSocket的accept()方法。當服務器接收到客戶端的連接請求時建立專線連接,建立連接后的兩個scoket將在一個單獨的線程上進行信息交互。

1.2 界面設計

游戲界面采用Java Swing技術,分為登錄界面、用戶界面、游戲界面等。登錄界面為玩家提供登錄和注冊功能,用戶界面為玩家提供玩家互動和功能選擇模塊,玩家在用戶界面點擊功能選項進入相應的功能模塊或游戲界面。

1.3 數據庫設計

用戶在與平臺進行交流過程中,需要運用數據庫進行語言傳遞,數據庫是數據存儲和數據分析的基礎。本文數據庫設計采用E-R圖[11]方式,將用戶需求、平臺內容建設等相對抽象的概念轉化為相對具象的概念模式[12],再由E-R圖呈現。 在邏輯設計過程中,E-R圖在Java的要求下需要轉變為具體的DBMS產品[13]支持數據模型,并根據設計的功能模塊分別形成符合模塊要求的基本表。在基本表中對模塊的不同功能設置不同字段,再借助數據類型使模塊功能完整。

在SQL Server中建立ChessDB數據庫,并根據ER圖設計結果在ChessDB數據庫中建立UserInformation表、Friend表、Count表、Chess表等。為方便數據庫操作,本文新建了SQLDBO類,在SQLDBO類中運用JDBC技術實現服務端與服務器連接[14],在Operate類中實現對數據庫的增刪改查操作。服務端通過調用Operate類實現對數據庫的操作。 玩家在客戶端與數據庫服務器端的交互過程如圖1所示。

圖1 客戶端與數據庫服務器端交互過程

1.4 功能設計

根據需求分析結果確定游戲系統功能,如圖2所示。

圖2 系統功能

關鍵模塊功能如下:

(1)注冊功能為玩家提供便捷的游戲賬號注冊通道。注冊時玩家須填寫用戶名即玩家游戲昵稱和密碼,確認密碼后點擊“注冊”完成注冊;游戲玩家用戶名唯一,不能重復注冊,成功后不可更改。

(2)登陸功能是網絡游戲必備的功能,該功能實現客戶端與服務端連接。玩家須正確輸入游戲賬號和密碼,客戶端將賬號信息發送至服務端,服務端將信息與數據庫內的數據進行比對,驗證成功后方可登陸至游戲界面。

(3)在線對戰分為普通模式和殘局模式。普通模式為完整棋盤,殘局模式由服務器為雙方玩家隨機抽取殘局棋盤,兩種模式均通過服務器為玩家隨機匹配對手,玩家下載模式后可進入匹配隊列服務器為其匹配相應模式下的玩家,匹配成功后方可進行游戲。

(4)人機對戰功能基于人機博弈算法Alpha_Beta[15]實現,游戲玩家可通過搜索算法功能與計算機進行博弈,從而達到鍛煉棋技的目的。

(5)闖關模式是人機對戰的特殊玩法,該功能通過將收錄的殘局棋譜設置成關卡形式供玩家選擇,不同關卡代表不同的殘局。在該模式下玩家將與計算機進行對戰,在對戰中玩家獲勝后方能解鎖下一關卡。

(6)玩家互動功能分為聊天、查找、挑戰和好友功能,其中聊天室功能[16]分為多人文字聊天、一對一文字聊天、一對一網絡語音聊天;查找功能為游戲玩家提供簡單的玩家搜索功能;挑戰功能模塊為玩家提供挑戰功能,通過該功能玩家能對任意在線空閑玩家發起挑戰;好友功能擁有添加和刪除功能,方便玩家對好友進行管理。

(7)我的棋譜功能模塊擁有棋譜上傳、下載、分享、刪除、查看功能,為游戲玩家提供簡單的棋譜管理功能。

(8)排行榜模塊通過對游戲玩家的游戲數據進行統計,根據玩家的勝率排行。

2 游戲實現

2.1 游戲開發和運行環境

操作系統:Windows 7 64-bit,內存:4 GB RAM;開發工具:eclipse + jdk1.8+mysql2005;存儲空間: 1GB 可用空間;環境需求:jdk1.8+mysql2005。

2.2 游戲主要算法

2.2.1 著法實現

著法實現原理:根據當前點擊棋子的坐標和棋子類型,通過當前棋子的行棋規則生成一個可行路徑數組,該數組保存當前棋子所在位置的所有合法著法[17]。著法主要代碼如下:

getMovePos(String selectPiece, int[] startPos, Board board){

switch(selectPiece.charAt(1)){//判斷當前點擊的棋子類型

case 'b':

return 當前棋子可行路徑

default:

return 空數組;

}

}

2.2.2 Alpha_Beta搜索算法實現

Alpha_Beta搜索算法原理:首先判斷葉子節點是否為0或是否有玩家獲勝,如果是則通過局面評估函數[18]返回估值,否則生成所有合法著法,遍歷所有著法并逐個執行。遞歸調用alphabetaSearch,最后保留最大值,撤銷執行著法并剪枝。在搜索算法中需要傳遞兩個值alpha和beta,其中alpha表示搜索到的最好值,beta表示對于對方來說最壞的值,通過判斷這兩個值的關系結束搜索,從而達到剪枝目的[19]。Alpha_Beta搜索算法實現主要代碼如下:

int alphabetaSearch(int depth, int alpha, int beta,boolean flag){

if (depth == 0||board.isWin()!='N')// board.isWin()//判斷輸贏N表示沒有玩家獲勝

return new BoardEvaluation(board, board.player).eval();//返回估值

ArrayList moves = this.getMovesModel(flag);//生成所有著法

for (Node node : moves) {//遍歷所有著法

UpdatePiece(node);//移動棋子

if (flag) {

alpha=Math.max(alpha,alphabetaSearch(depth - 1, alpha, beta, false));//遞歸調用

}else{

beta= Math.min(beta, alphabetaSearch(depth - 1, alpha, beta, true)); //遞歸調用

}

Black();//撤銷移動棋子

if (beta <= alpha) {//剪枝

break;

}

}

}

2.2.3 人機博弈算法實現

人機博弈算法原理:人機博弈算法是人機對戰的靈魂,因此人機博弈算法的實現是人機對戰玩法的重要組成部分。要實現人機博弈算法首先要實現棋子的著法,其次需要設置一個局面評估函數BoardEvaluation實現對棋局的評價,最后使用Alpha_Beta搜索算法搜索出最優著法[20]。人機博弈算法流程如圖3所示。

圖3 人際博弈算法流程

2.2.4 語音聊天功能實現

語音聊天功能實現原理:語音聊天需要實現聊天雙方一對一專線連接,該功能模塊涉及到語音信息的實時采集、傳輸和播放,因此新建語音捕捉類CaptureSound和語音播放類PlaySound。語音捕捉類CaptureSound實現Runnable接口,通過run方法實現麥克風信息的實時采集和發送;語音播放類PlaySound實現Runnable接口,通過run方法實時接收語音信息并解析播放語音信息[21]。語音聊天功能實現代碼如下:

AudioFormat format =new AudioFormat(8000,16,2,true,true);//設置音頻格式

byte[] data = new byte[1024];

//語音捕捉及其發送

DataLine.Info info = new DataLine.Info(TargetDataLine.class,format);

BufferedOutputStream OutputStream=new BufferedOutputStream(SC. getOutputStream());//封裝

TargetDataLine line = (TargetDataLine) AudioSystem.getLine(info);

line.open(format, line.getBufferSize());

line.start();

int num=line.read(data, 0, 1024);//將語音流寫入byte數組

OutputStream.write(data, 0, num);//將數組寫入網絡流

//語音接收及其播放

InputStream=new BufferedInputStream(new AudioInputStream(SC.getInputStream(),

format,2147483647));

DataLine.Info info = new DataLine.Info(SourceDataLine.class,format);

line = (SourceDataLine) AudioSystem.getLine(info);

line.open(format, bufSize);

line.start();

int num = InputStream.read(data); //將解碼后的音頻流寫入byte數組

line.write(data, 0,num);//播放音頻

2.3 游戲系統運行測試

游戲客戶端與服務端均在Window系統上對游戲基本功能、各功能模塊運行狀況進行測試,結果顯示游戲運行狀況良好、基本功能完善、各功能模塊運行正常。

3 結語

本文國際象棋系統采用Java技術、SQL2005數據庫實現。完成的主要功能有人機博弈、在線博弈、闖關模式、玩家互動、殘局模式、棋盤的查看、分享和保存、文字聊天和語音聊天、多人聊天、排行榜、登錄和注冊等,為國際象棋玩家提供了一個具有豐富娛樂性和交友性的對戰平臺。游戲的實時語音聊天使玩家能在游戲中與對方進行語音對話,為游戲增添了趣味。但本國際象棋游戲還存在界面不夠美觀、消息提醒功能不夠完善、玩家無法及時獲取聊天信息等問題,后續需實現消息盒子功能,對人機博弈算法進行深入研究及完善。

猜你喜歡
數據庫游戲功能
也談詩的“功能”
中華詩詞(2022年6期)2022-12-31 06:41:24
關于非首都功能疏解的幾點思考
數據庫
財經(2017年2期)2017-03-10 14:35:35
數獨游戲
瘋狂的游戲
飛碟探索(2016年11期)2016-11-14 19:34:47
爆笑游戲
數據庫
財經(2016年15期)2016-06-03 07:38:02
數據庫
財經(2016年3期)2016-03-07 07:44:46
數據庫
財經(2016年6期)2016-02-24 07:41:51
第八章直接逃出游戲
小學科學(2015年7期)2015-07-29 22:29:00
主站蜘蛛池模板: 久久9966精品国产免费| 精品国产网站| 99色亚洲国产精品11p| 五月天香蕉视频国产亚| 国产剧情伊人| av午夜福利一片免费看| 欧洲精品视频在线观看| 丁香婷婷久久| 欧美.成人.综合在线| 欧美日韩国产综合视频在线观看 | 天天综合天天综合| 专干老肥熟女视频网站| 91精品国产自产在线老师啪l| vvvv98国产成人综合青青| 国产黑丝一区| 午夜天堂视频| 久久人搡人人玩人妻精品| 激情网址在线观看| 五月婷婷精品| 久久影院一区二区h| 久久精品免费看一| 午夜精品久久久久久久无码软件| 国产成人综合亚洲欧美在| 欧美精品在线观看视频| 久久综合亚洲鲁鲁九月天| 日韩资源站| 国产精品欧美激情| 最新国产成人剧情在线播放| 午夜欧美在线| 国产青榴视频| 欧美在线国产| 99久久精品国产综合婷婷| 精品国产污污免费网站| 亚洲中文字幕97久久精品少妇| 中文字幕佐山爱一区二区免费| 中文字幕乱妇无码AV在线| 毛片三级在线观看| 在线播放国产一区| 亚洲欧美日韩精品专区| 中文字幕永久在线观看| A级毛片高清免费视频就| 中文字幕一区二区人妻电影| 波多野吉衣一区二区三区av| 爱做久久久久久| 91精品情国产情侣高潮对白蜜| 99re在线视频观看| 亚洲国产成人综合精品2020| 国产亚洲精品无码专| 视频在线观看一区二区| 毛片久久久| 国产91透明丝袜美腿在线| 最新国产你懂的在线网址| 67194亚洲无码| 蝌蚪国产精品视频第一页| 日韩精品亚洲一区中文字幕| 在线看片国产| 欧美成人精品一区二区| 天天爽免费视频| 亚洲丝袜中文字幕| 午夜电影在线观看国产1区| 国产免费黄| 国产伦片中文免费观看| 国产亚洲欧美在线专区| 国产本道久久一区二区三区| 国产经典免费播放视频| 国精品91人妻无码一区二区三区| 久久无码高潮喷水| 一级全黄毛片| 国产亚洲视频中文字幕视频| 亚洲AV无码精品无码久久蜜桃| 午夜欧美理论2019理论| 亚洲专区一区二区在线观看| 久久久久青草线综合超碰| 成人va亚洲va欧美天堂| 九九香蕉视频| 精品无码视频在线观看| 国产欧美日韩18| 国产丝袜精品| 无码aⅴ精品一区二区三区| 人妻无码一区二区视频| 国产十八禁在线观看免费| 国产精品午夜电影|