一、项目总体说明

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结构的分布式在线棋牌游戏平台,并实现系统的各项功能,包括用户数据管理、游戏页面开发、实现相应逻辑、游戏数据存储等。

用例图:

转存失败重新上传取消

实体关系图:

转存失败重新上传取消

2.2  系统总体设计

系统总体分成五个模块:

  1. 五子棋模块
  2. 象棋模块
  3. 用户模块
  4. 数据库模块
  5. 其他页面模块

本系统利用Java EE开发平台,基于JSF框架实现了一个B/S结构的分布式在线棋牌游戏平台,并实现了系统所需的各项功能,包括用户数据管理、游戏页面开发、实现相应逻辑、游戏数据存储等。

2.3  数据库设计

转存失败重新上传取消

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  主要界面设计效果截图和说明

注册界面:

转存失败重新上传取消

登录界面:

转存失败重新上传取消

修改个人信息界面:

转存失败重新上传取消

首页:转存失败重新上传取消

象棋部分可选择弹框:

转存失败重新上传取消

象棋选择人机后的弹框:

转存失败重新上传取消

选择进入大厅的弹框:

转存失败重新上传取消

大厅中选择进入房间:

转存失败重新上传取消

象棋游戏界面:

转存失败重新上传取消

象棋输赢界面:

转存失败重新上传取消

选择象棋复盘弹框

转存失败重新上传取消

象棋复盘界面:

转存失败重新上传取消

五子棋首页:

转存失败重新上传取消

五子棋人机界面:

转存失败重新上传取消

五子棋人人界面:

转存失败重新上传取消

转存失败重新上传取消

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

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

基于JSF框架的在线棋牌游戏平台相关推荐

  1. 网狐棋牌游戏平台服务器架构设计分析[转]

    网狐棋牌游戏平台服务器架构设计分析[转] http://blog.csdn.net/weiwangchao_/article/details/7047044 基本设计概念和处理流程 调用模型 模仿CO ...

  2. java计算机毕业设计基于MVC框架的在线书店设计源码+数据库+系统+lw文档+mybatis+运行部署

    java计算机毕业设计基于MVC框架的在线书店设计源码+数据库+系统+lw文档+mybatis+运行部署 java计算机毕业设计基于MVC框架的在线书店设计源码+数据库+系统+lw文档+mybatis ...

  3. SSM+基于Vue框架的在线投票系统的设计与实现 毕业设计-附源码221604

    基于Vue框架的在线投票系统的设计与实现 摘 要 21世纪时信息化的时代,几乎任何一个行业都离不开计算机,将计算机运用于在线投票系统也是十分常见的.过去使用手工的管理方式对在线投票系统进行管理,造成了 ...

  4. SSM+基于Vue框架的在线投票系统的设计与实现 毕业设计-附源码

    基于Vue框架的在线投票系统的设计与实现 摘 要 21世纪时信息化的时代,几乎任何一个行业都离不开计算机,将计算机运用于在线投票系统也是十分常见的.过去使用手工的管理方式对在线投票系统进行管理,造成了 ...

  5. 其实,搭建一个有品质的棋牌游戏平台没那么复杂

    目前,棋牌游戏平台在市场有很多种,棋牌游戏平台的搭建备受关注,但是高品质的棋牌游戏平台却很少.那么,今天我们就来聊下有品质的棋牌游戏平台该如何搭建? 1.吸引游戏玩家的关注 想要保证这点就应当重视打造 ...

  6. 【Python程序设计】基于Flask的音乐在线网站/系统/平台

    基于Flask的音乐在线网站/系统/平台 零.项目获取 一.项目简介 二.开发环境 三.项目技术 四.系统架构 五.用户流程 六.运行截图 零.项目获取 获取方式(点击下载):是云猿实战 项目经过多人 ...

  7. 基于Vue框架的在线投票系统的设计与实现毕业设计-附源码221604

    摘 要 21世纪时信息化的时代,几乎任何一个行业都离不开计算机,将计算机运用于在线投票系统也是十分常见的.过去使用手工的管理方式对在线投票系统进行管理,造成了管理繁琐.难以维护等问题,如今使用计算机对 ...

  8. 开发棋牌游戏平台要多少钱?

    随着现在棋牌市场的火热,棋牌游戏平台这个概念也再次回到了公众的视野之中,早有联众棋牌.QQ棋牌这样的先驱者,大多时候的棋牌游戏平台大多选择根据这个模式进行复现,如果想要制作一个棋牌平台的话,至少需要半 ...

  9. 实训代码java毕业设计_基于SSM框架的王者荣耀游戏攻略系统

    基于SSM框架的王者荣耀游戏攻略系统mysql数据库创建语句 基于SSM框架的王者荣耀游戏攻略系统oracle数据库创建语句 基于SSM框架的王者荣耀游戏攻略系统sqlserver数据库创建语句 基于 ...

最新文章

  1. 数据通信技术(一:IP划分)
  2. python中的enumerate函数用于遍历序列中的元素以及它们的下标
  3. 是什么狙杀了ERP实施成功?
  4. linux下安装php扩展模块gettext
  5. linux期末脚本作业,linux – 使用R Markdown将bash脚本作为Cron作业运行
  6. ubuntu知道文件名查找文件路径
  7. django的ajax_get请求
  8. GM6 frontend Shell._resolveHashFragment when tile is clicked
  9. 单值二叉树:如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。 只有给定的树是单值二叉树时,才返回 true;否则返回 false。
  10. 使用PacketSifter从pcap中筛选有价值的信息
  11. 生活随记 - 2020国庆第四天
  12. python爬取天天基金历史净值_python爬取天天基金网全部基金的历史全部净值
  13. 大前端学习工具及网站大全
  14. 安装远程服务器管理工具(RSAT-Remote Server Administration Tools)
  15. mac数字键盘错乱_苹果电脑键盘打不出数字解决办法
  16. html显示器对象属性,Web网站中利用JavaScript中ActiveXObject对象获取硬件信息(显示器数量、分辨率)从而进行单双屏跳转...
  17. cocos-lua环境搭建
  18. Android OkHttp 全面详解
  19. C++刻晴炸弹人小游戏(开发环境为codeblocks)
  20. 汽车发动机如何做保养,名悦集团教你几个小技巧

热门文章

  1. Cadence DSP 算子开发上手指南
  2. 高薪程序员面试题精讲系列74之你熟悉cookie、session吗?有哪些请求方式?请求转发与重定向有什么区别?
  3. 尼日利亚4g频段_4G全球频段划分及主要运营商对应表2015版.xls
  4. 路径规划学习之地图生成(二)
  5. 前向纠错FEC纠错编码原理
  6. iOS打开沙盒html,ios 开发中,沙盒目录解释
  7. sincerit 王者荣耀(01背包)
  8. KUBUNTU 10.04 的安装与配置详解
  9. 玩客云pc端_玩客云pc端
  10. C语言或less或sass中,ceil floor 无法传入动态变量取整的办法