基於JSF框架的在線棋牌遊戲平臺

一、項目總體說明

1.1  項目總體說明

該項目是基於JSF框架的在線棋牌遊戲平臺,目前有五子棋和象棋兩項已完成子模塊,皆支持人機對戰與在線匹配對戰,其中象棋還支持大部分棋牌平臺不支持的覆盤功能。項目整體設計合理,功能齊全,有較好的用戶交互功能界面。

1.2  開發環境的選擇、安裝與配置

IDE : NetBeans 8.0.02

數據庫:javaDB

服務器:GlassFish 4

瀏覽器:Chrome

其它:JDK8、jquery3.0.1

 

二、項目設計概要

2.1  項目需求分析

項目要求使用B/S結構,利用Java EE開發平臺,基於JSF框架實現一個B/S結構的分佈式在線棋牌遊戲平臺,並實現系統的各項功能,包括用戶數據管理、遊戲頁面開發、實現相應邏輯、遊戲數據存儲等。

 

用例圖:

uploading.4e448015.gif轉存失敗重新上傳取消

實體關係圖:

uploading.4e448015.gif轉存失敗重新上傳取消

2.2  系統總體設計

系統總體分成五個模塊:

      1. 五子棋模塊
      2. 象棋模塊
      3. 用戶模塊
      4. 數據庫模塊
      5. 其他頁面模塊

本系統利用Java EE開發平臺,基於JSF框架實現了一個B/S結構的分佈式在線棋牌遊戲平臺,並實現了系統所需的各項功能,包括用戶數據管理、遊戲頁面開發、實現相應邏輯、遊戲數據存儲等。

 

2.3  數據庫設計

uploading.4e448015.gif轉存失敗重新上傳取消

2.4  系統工作流程設計

未註冊用戶可註冊本系統,已註冊用戶登錄本系統後可以修改自身信息、玩遊戲等,根據用戶選擇遊戲類型和其他相關操作顯示相應界面,用戶玩遊戲時內部邏輯進行數據的傳輸、處理與存儲。

 

2.5  資源清單和說明

表現層頁面:

  1. index.xhtml 首頁
  2. layout.xhtml 基本佈局部分
  3. header.xhtml 首頁頭部信息
  4. footer.xhtml 首頁尾部信息
  5. MainPage.xhtml 首頁中主要內容
  6. login.xhtml 登錄頁面
  7. register.xhtml 註冊頁面
  8. error.xhtml 出錯頁面
  9. ChineseChessIndexPage.xhtml 象棋人機對戰首頁
  10. ChineseChess.xhtml 象棋人機對戰主要內容
  11. PVPChineseChessIndexPage.xhtml 象棋人人對戰首頁
  12. PVPChineseChess.xhtml 象棋人人對戰主要內容
  13. ReplayChineseChessIndexPage.xhtml 象棋覆盤首頁
  14. ReplayChineseChess.xhtml 象棋覆盤主要內容
  15. GoBangIndex.xhtml 五子棋首頁
  16. man.xhtml 五子棋人人對戰界面
  17. wuzi 五子棋人機對戰界面

 

 

表現層資源:

  1. 象棋棋盤圖片
  2. 象棋棋子圖片
  3. 象棋背景音樂、落子及輸贏音效
  4. 五子棋棋盤圖片
  5. 五子棋棋子圖片
  6. 首頁大屏輪轉圖片
  7. 登錄、註冊背景圖片

 

BackingBean類:

    1. LoginControl
    2. RegisterControl
    3. RecvBean
    4. SesstionAtt
    5. RoomBean
    6. Ai
    7. Node
    8. End

 

 

實體映射類:

    1. Matchstepinfo
    2. Matchrecord
    3. Usertable

 

實體訪問類:

      1. MatchstepinfoFacade
      2. MatchstepinfoFacadeLocal
      3. MatchrecordFacade
      4. MatchrecordFacadeLocal
      5. UsertableFacade
      6. UsertableFacadeLocal

 

業務邏輯組件:

訪問數據庫相關:

  1. UserEJB
  2. MatchStepEJB
  3. MatchRecordEJB

 

象棋執行相關:

  1.  ExeBean

 

五子棋執行相關:

  1. Ai
  2. Node

 

2.6  主要界面設計效果截圖和說明

註冊界面:

uploading.4e448015.gif轉存失敗重新上傳取消

 

登錄界面:

uploading.4e448015.gif轉存失敗重新上傳取消

 

修改個人信息界面:

uploading.4e448015.gif轉存失敗重新上傳取消

 

首頁:uploading.4e448015.gif轉存失敗重新上傳取消

 

象棋部分可選擇彈框:

uploading.4e448015.gif轉存失敗重新上傳取消

象棋選擇人機後的彈框:

uploading.4e448015.gif轉存失敗重新上傳取消

 

選擇進入大廳的彈框:

uploading.4e448015.gif轉存失敗重新上傳取消

 

大廳中選擇進入房間:

uploading.4e448015.gif轉存失敗重新上傳取消

 

象棋遊戲界面:

uploading.4e448015.gif轉存失敗重新上傳取消

象棋輸贏界面:

uploading.4e448015.gif轉存失敗重新上傳取消

選擇象棋覆盤彈框

uploading.4e448015.gif轉存失敗重新上傳取消

象棋覆盤界面:

uploading.4e448015.gif轉存失敗重新上傳取消

 

五子棋首頁:

uploading.4e448015.gif轉存失敗重新上傳取消

 

五子棋人機界面:

uploading.4e448015.gif轉存失敗重新上傳取消

五子棋人人界面:

uploading.4e448015.gif轉存失敗重新上傳取消

uploading.4e448015.gif轉存失敗重新上傳取消

 

2.7  程序代碼

以電子版形式提交

 

三、項目關鍵性問題分析及技術解決方案

3.1  象棋電腦部分如何編寫

象棋AI主要採用極大極小搜索和α-β剪枝算法實現,並使用二進制棋盤和置換表等策略進行加速,其中子力價值表的設定參照了象棋巫師。

 

3.2  五子棋電腦部分如何編寫

五子棋AI主要採用極大極小搜索和α-β剪枝算法實現。

 

3.3  客戶端何時及如何從服務器端動態獲取數據

採用監聽值改變事件的方法確定獲取數據時機。客戶端通過與服務器端屬性進行值綁定,可以在頁面初始化時直接獲取服務器端屬性值,通過表單提交和AJAX方式可局部刷新頁面。但是若想在客戶端獲取值改變事件,因爲通過服務器端直接改變屬性值和AJAX傳輸方式並不會觸發onchange、oninput、attributeValueChange等事件,可通過JS獲取原值,設置一個定時器,每隔0.1秒檢查值是否改變,並作出相應變化。

 

3.4  服務器端的棋局如何展示在客戶端界面上

採用在服務器端和客戶端同時存儲棋盤方式,通過數據傳輸使兩棋盤保持一致。用戶下棋時做出的操作通過提交表單和AJAX方式提交到服務器端,服務器端進行檢查合法性等行爲,再將服務器端返回結果呈現於客戶端界面上。客戶端通過動態接收服務器端數據做出相應改變(移動棋子,顯示棋子邊框等)。

 

3.5  兩個用戶如何進行匹配對戰

服務器默認擁有50個房間(即房間是ApplicationScoped),每個房間都保存了有獨立的ID、房間名、唯一的棋盤、當前的步法、當前房間人數、能否開始的判斷標記以及先後手的ID,在第一個玩家進來後設置先手的ID並進行等待,直到第二個玩家進入,設置後手ID並開始遊戲。雙方玩家在己方行棋時,若行棋合法,則將步法更新到房間的當前步法中,更新界面並設置對方開始行棋;在對方行棋時,則通過計時器不停地取房間的當前步法,若發現對手已經行棋,則更新界面並設置己方開始行棋。如此循環,直到一方勝利。

 

四、項目測試及結論

4.1  測試用戶體驗效果

用戶體驗良好,尤其是象棋界面,背景音樂選擇的皆是著名純音樂,使人身心愉悅。下象棋時遊戲音效和顯示效果很好,表揚象棋前端人員。

4.2  測試象棋AI是否足夠智能

該象棋AI非常強大,我連簡單人機都下不贏,表揚象棋AI後臺人員。

 

4.3 測試系統是否流暢

該系統十分流暢,銜接的很自然。

 

4.4  美中不足的一點

囿於開發人員和開發時間問題,該系統目前只有兩個遊戲,不足以支撐一個平臺運營。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章