基于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  美中不足的一点

囿于开发人员和开发时间问题,该系统目前只有两个游戏,不足以支撑一个平台运营。

发布了67 篇原创文章 · 获赞 159 · 访问量 48万+

猜你喜欢

转载自blog.csdn.net/qq_41371349/article/details/104896188