基于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结构的分布式在线棋牌游戏平台,并实现系统的各项功能,包括用户数据管理、游戏页面开发、实现相应逻辑、游戏数据存储等。
用例图:
转存失败重新上传取消
实体关系图:
转存失败重新上传取消
2.2 系统总体设计
系统总体分成五个模块:
- 五子棋模块
- 象棋模块
- 用户模块
- 数据库模块
- 其他页面模块
本系统利用Java EE开发平台,基于JSF框架实现了一个B/S结构的分布式在线棋牌游戏平台,并实现了系统所需的各项功能,包括用户数据管理、游戏页面开发、实现相应逻辑、游戏数据存储等。
2.3 数据库设计
转存失败重新上传取消
2.4 系统工作流程设计
未注册用户可注册本系统,已注册用户登录本系统后可以修改自身信息、玩游戏等,根据用户选择游戏类型和其他相关操作显示相应界面,用户玩游戏时内部逻辑进行数据的传输、处理与存储。
2.5 资源清单和说明
表现层页面:
- index.xhtml 首页
- layout.xhtml 基本布局部分
- header.xhtml 首页头部信息
- footer.xhtml 首页尾部信息
- MainPage.xhtml 首页中主要内容
- login.xhtml 登录页面
- register.xhtml 注册页面
- error.xhtml 出错页面
- ChineseChessIndexPage.xhtml 象棋人机对战首页
- ChineseChess.xhtml 象棋人机对战主要内容
- PVPChineseChessIndexPage.xhtml 象棋人人对战首页
- PVPChineseChess.xhtml 象棋人人对战主要内容
- ReplayChineseChessIndexPage.xhtml 象棋复盘首页
- ReplayChineseChess.xhtml 象棋复盘主要内容
- GoBangIndex.xhtml 五子棋首页
- man.xhtml 五子棋人人对战界面
- wuzi 五子棋人机对战界面
表现层资源:
- 象棋棋盘图片
- 象棋棋子图片
- 象棋背景音乐、落子及输赢音效
- 五子棋棋盘图片
- 五子棋棋子图片
- 首页大屏轮转图片
- 登录、注册背景图片
BackingBean类:
- LoginControl
- RegisterControl
- RecvBean
- SesstionAtt
- RoomBean
- Ai
- Node
- End
实体映射类:
- Matchstepinfo
- Matchrecord
- Usertable
实体访问类:
- MatchstepinfoFacade
- MatchstepinfoFacadeLocal
- MatchrecordFacade
- MatchrecordFacadeLocal
- UsertableFacade
- UsertableFacadeLocal
业务逻辑组件:
访问数据库相关:
- UserEJB
- MatchStepEJB
- MatchRecordEJB
象棋执行相关:
- ExeBean
五子棋执行相关:
- Ai
- 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框架的在线棋牌游戏平台相关推荐
- 网狐棋牌游戏平台服务器架构设计分析[转]
网狐棋牌游戏平台服务器架构设计分析[转] http://blog.csdn.net/weiwangchao_/article/details/7047044 基本设计概念和处理流程 调用模型 模仿CO ...
- java计算机毕业设计基于MVC框架的在线书店设计源码+数据库+系统+lw文档+mybatis+运行部署
java计算机毕业设计基于MVC框架的在线书店设计源码+数据库+系统+lw文档+mybatis+运行部署 java计算机毕业设计基于MVC框架的在线书店设计源码+数据库+系统+lw文档+mybatis ...
- SSM+基于Vue框架的在线投票系统的设计与实现 毕业设计-附源码221604
基于Vue框架的在线投票系统的设计与实现 摘 要 21世纪时信息化的时代,几乎任何一个行业都离不开计算机,将计算机运用于在线投票系统也是十分常见的.过去使用手工的管理方式对在线投票系统进行管理,造成了 ...
- SSM+基于Vue框架的在线投票系统的设计与实现 毕业设计-附源码
基于Vue框架的在线投票系统的设计与实现 摘 要 21世纪时信息化的时代,几乎任何一个行业都离不开计算机,将计算机运用于在线投票系统也是十分常见的.过去使用手工的管理方式对在线投票系统进行管理,造成了 ...
- 其实,搭建一个有品质的棋牌游戏平台没那么复杂
目前,棋牌游戏平台在市场有很多种,棋牌游戏平台的搭建备受关注,但是高品质的棋牌游戏平台却很少.那么,今天我们就来聊下有品质的棋牌游戏平台该如何搭建? 1.吸引游戏玩家的关注 想要保证这点就应当重视打造 ...
- 【Python程序设计】基于Flask的音乐在线网站/系统/平台
基于Flask的音乐在线网站/系统/平台 零.项目获取 一.项目简介 二.开发环境 三.项目技术 四.系统架构 五.用户流程 六.运行截图 零.项目获取 获取方式(点击下载):是云猿实战 项目经过多人 ...
- 基于Vue框架的在线投票系统的设计与实现毕业设计-附源码221604
摘 要 21世纪时信息化的时代,几乎任何一个行业都离不开计算机,将计算机运用于在线投票系统也是十分常见的.过去使用手工的管理方式对在线投票系统进行管理,造成了管理繁琐.难以维护等问题,如今使用计算机对 ...
- 开发棋牌游戏平台要多少钱?
随着现在棋牌市场的火热,棋牌游戏平台这个概念也再次回到了公众的视野之中,早有联众棋牌.QQ棋牌这样的先驱者,大多时候的棋牌游戏平台大多选择根据这个模式进行复现,如果想要制作一个棋牌平台的话,至少需要半 ...
- 实训代码java毕业设计_基于SSM框架的王者荣耀游戏攻略系统
基于SSM框架的王者荣耀游戏攻略系统mysql数据库创建语句 基于SSM框架的王者荣耀游戏攻略系统oracle数据库创建语句 基于SSM框架的王者荣耀游戏攻略系统sqlserver数据库创建语句 基于 ...
最新文章
- 数据通信技术(一:IP划分)
- python中的enumerate函数用于遍历序列中的元素以及它们的下标
- 是什么狙杀了ERP实施成功?
- linux下安装php扩展模块gettext
- linux期末脚本作业,linux – 使用R Markdown将bash脚本作为Cron作业运行
- ubuntu知道文件名查找文件路径
- django的ajax_get请求
- GM6 frontend Shell._resolveHashFragment when tile is clicked
- 单值二叉树:如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。 只有给定的树是单值二叉树时,才返回 true;否则返回 false。
- 使用PacketSifter从pcap中筛选有价值的信息
- 生活随记 - 2020国庆第四天
- python爬取天天基金历史净值_python爬取天天基金网全部基金的历史全部净值
- 大前端学习工具及网站大全
- 安装远程服务器管理工具(RSAT-Remote Server Administration Tools)
- mac数字键盘错乱_苹果电脑键盘打不出数字解决办法
- html显示器对象属性,Web网站中利用JavaScript中ActiveXObject对象获取硬件信息(显示器数量、分辨率)从而进行单双屏跳转...
- cocos-lua环境搭建
- Android OkHttp 全面详解
- C++刻晴炸弹人小游戏(开发环境为codeblocks)
- 汽车发动机如何做保养,名悦集团教你几个小技巧
热门文章
- Cadence DSP 算子开发上手指南
- 高薪程序员面试题精讲系列74之你熟悉cookie、session吗?有哪些请求方式?请求转发与重定向有什么区别?
- 尼日利亚4g频段_4G全球频段划分及主要运营商对应表2015版.xls
- 路径规划学习之地图生成(二)
- 前向纠错FEC纠错编码原理
- iOS打开沙盒html,ios 开发中,沙盒目录解释
- sincerit 王者荣耀(01背包)
- KUBUNTU 10.04 的安装与配置详解
- 玩客云pc端_玩客云pc端
- C语言或less或sass中,ceil floor 无法传入动态变量取整的办法