基于web的java五子棋对弈程序的设计与实现_毕业设计内容摘要:

创建 棋盘 X轴坐标 Y轴坐标 棋子状态 下棋 属于 属于 用户 X坐标 用户 Y坐标 电脑 X坐标 电脑 X坐标 1 N 1 N 1 1 每步棋编号 图 45 整体 ER图 2020 届计算机科学与技术专业毕业设计(论文) 第 13 页 共 47 页 系统功能模块设计 该款游戏主要由一下几个模块组成(图 47): 用户登录注册:在玩五子棋之前,用户要先登录游戏,未注册的用户用户前台 注册 登录 数据显示 五子棋 棋盘回放 悔棋 游戏 五子棋游戏 用户登录注册 人机对弈模式 具有悔棋功能 棋局回放功能 图 47 五子棋功能模块图 图 46 系统结构图 罗友:基于 Web 的 JAVA 五子棋对弈程序的设计与实现 第 14 页 共 47 页 应该先注册,如果登录成功会跳到用户管理页面,登录信息错误会提示密码用户名错误。 人机对弈模式:选择该模式可以实 现人与电脑之间的对弈,电脑会智能的选择该在哪处下子,并会在每次下棋结束后判断是否有哪方已经获胜,如果获胜则结束本局游戏,并提示玩家游戏结束。 悔棋功能:这个功能也是根据游戏的实际需求而存在的,在现实生活中难免有失误下错了棋,那么就需要悔棋。 此功能提供了悔棋功能,使得下棋的灵活性有所提高。 玩家若想悔棋,则只需选择悔棋按钮便可以重新下过刚才的棋,但只能悔一步棋。 棋局回放功能:这个功能是更加用户需求设计的,该功能可以回放用户以前下过的棋局只要点击要回放的棋局,进入棋局回放页面,点击下一步就可以回放该棋局,点一下 只能回放一步棋。 设计思路 ,必须先有一个棋盘,所以,通过html 中的表格画的,棋盘是 17*17,表格中是一个层,通过改变其背景图片来表示有无棋子,是白棋还是黑棋。 另外还有一个按钮:悔棋按钮,用于提供悔棋功能,界面还显示系统时间,用户提示用户当前时间。 ,通过对该层鼠标事件监听器 onclick,每次当用户点击鼠标时,先取得点击的坐标值,然后换算成对应棋盘上(即棋盘数组)的位置(数组的下标)。 ,如果有则用 javascript 提示玩家重新下子,否则通过 ajax 把点击的数组传递给后台,通过后台处理返回给前台2020 届计算机科学与技术专业毕业设计(论文) 第 15 页 共 47 页 数据来改变样式,在此处画上棋子。 ,是的话提醒相应玩家获胜,不是的话,更换玩家下棋。 ,每次用户点击鼠标后,若本局还未结束则会变换玩家,从而画出对应黑方白方的棋子,直到有一方获胜程序结束。 程序设计分析 1. 在网站的首页是登录界面,有登录和注册两个功能。 2.在登录成功会跳到用户信息页面,在该页面的右下角会列出该用户在最近 5 次,玩游戏的信息记录 ,点击该记录可以回放对应的棋局。 在信息下方有开始游戏和更改密码两个按钮。 3. 绘制棋盘, 17*17 的方框,在方框处下棋子(实心黑白圆形)。 4. 棋盘处于鼠标监听状态,当鼠标在棋盘上有点击操作的时候,程序会获得鼠标点击的坐标然后换算成对应的棋盘的位置,再判断此处是否有棋子,假如没有,那么在此处画出对应颜色的实心棋子,假如已经有棋子了,则提示玩家此处已经有棋子请重新下棋。 5. 当用户点击表格中的层下完棋后,轮到电脑下子时,电脑会通过算法计算每个没有棋子的位置的重要性来选择最重要的位置下子。 6. 当任何一 方有五个棋子沿着横,竖,斜连在一起时,系统自动判断赢棋,并显示黑方或白方胜利。 棋局结束后,会返回用户信息页面。 7.程序流程如下图 (图 48): 罗友:基于 Web 的 JAVA 五子棋对弈程序的设计与实现 第 16 页 共 47 页 登 录注 册开 始 游 戏 棋 局 回 放悔 棋 下 一 步判 断 结 果 回 放 结 束游 戏 结 束 类的设计 1)由于要用到数据库,所以设计了一个用来连接数据库的类 BaseDao,其中包括了两个方法和 4 个变量 ,类图 (图 49)如下: 图 48 系统结构图 图 49 BaseDao 类图 2020 届计算机科学与技术专业毕业设计(论文) 第 17 页 共 47 页 2)下图是关于数据库中对应的表的类图 (图 410)关系: 3)虽然有了用户相关类,但是无法操作数据库中的用户信息,所以设计了操作用户表的类 UserDishDaoImpl,该类继承 BaseDao,并且实现IUserDao 类,类图 (图 411)如下: 图 410 类表关系图 图 411 UserDishDaoImpl类图 罗友:基于 Web 的 JAVA 五子棋对弈程序的设计与实现 第 18 页 共 47 页 4)对于用户每次玩游戏的信息操作,用 UserDishDaoImpl 实现了各种操作。 类图 (图 412)如下: 5)对棋盘的各种信息保存操作,用类 UserQipanDaoImpl 来实现。 其中类图 (图 413)如下 6)对每局棋及每盘棋的各种保存操作,用 UserStepDaoImpl 来实现,其中类图 (图 414)如下: 图 412 UserDishDaoImpl类图 图 413 UserQipanDaoImpl类图 2020 届计算机科学与技术专业毕业设计(论文) 第 19 页 共 47 页 7)由于程序是人机对弈,电脑下棋算法用 Computer 类来实现,其中有电脑下棋算法,还有电脑判断输赢算法,类图 (图 415)如下: 8)本程序的时序图 (图 416)如下 : 图 414 UserStepDaoImpl类图 图 415 Servlet类图 罗友:基于 Web 的 JAVA 五子棋对弈程序的设计与实现 第 20 页 共 47 页 五子棋对弈系统的数据库设计 系统用户表 名称 编码 数据类型 备注 用户名 userName varchar(255) 用户输入, Not null 约束,是表的主键 用户密码 userPwd varchar(255) 用户输入, Not null 约束 用户权限 userFlag Int(11) 系统分配, Not null 约束,用于判断 用户权限 图 416 时序 图 2020 届计算机科学与技术专业毕业设计(论文) 第 21 页 共 47 页 用户棋局表 名称 编码 数据类型 备注 棋局编号 dishId Int(11) 系统自动分配,是该表的主键,Not null 约束 用户名 userName varchar(255) 用户输入, Not null 约束 创建时间 playDate Date 系统分配, Not null 约束 用户棋盘表 名称 编码 数据类型 备注 棋局编号 dishId Int( 11) 系统自动分配,是改变的主键,Not null 约束 X 轴坐标 X Int(11) 是棋盘的 X 坐标, Not null 约束 Y 轴坐标 Y Int(11) 是棋盘的 Y 坐标, Not null 约束 状态 F Int( 11) 表示棋子状态,Not null 约束 罗友:基于 Web 的 JAVA 五子棋对弈程序的设计与实现 第 22 页 共 47 页 用户下棋信息表 名称 编码 数据类型 备注 下棋编号 stepId Int( 11) 系统自动分配,是改变的主键,Not null 约束 电脑 X 坐标 pcX Int(11) 是电脑该步棋的X 坐标, Not null约束 电脑 Y 坐标 pcY Int(11) 是电脑该步棋的Y 坐 标, Not null约束 用户 X 坐标 psX Int( 11) 是电用户该步棋的 X 坐标, Not null 约束 用户 Y 坐标 psY Int( 11) 是电用户该步棋的 X 坐标, Not null 约束 棋局编号 dishId Int( 11) 是该表的外键,Not null 约束 2020 届计算机科学与技术专业毕业设计(论文) 第 23 页 共 47 页 5 五子棋相关基础 五子棋相关解释 引用《辞海》中所言,五子棋是“棋类游戏,棋具与围棋相同,两人对局,轮流下子,先将五子连成一行者为胜。 ”。 五子棋的名称:日文亦有“连五子、五子连、串珠、五目、五目碰、五格、五石、 五法、五联、京棋”等多种称谓,英文则称之为 FIR (Five In A Row 的缩写 )、 Gomoku(日语“五目”的罗马拼音 )、 Gobang、 connect morphion。 捷克语 piskvorky,韩语 omok、韩国人还称之为情侣棋。 五子棋相关规则 ,黑棋先下第一子,由天元开始,后白棋在黑棋周围的方框的落子。 接着黑方再以天元中心的 25 个交叉点的范围内落盘面的第三子,之后黑白双方相互顺序子。 ,纵向,斜向形成已方的五个棋子连续的一方为胜。 对方指出后将判负,其中包括两个或两个以上的活三,活四,长连均称之为禁手。 ,白棋无禁手。 ,白方需立即指出,黑方将被判负。 若白方未发现黑方禁手存在而继续应子,其后指出黑方禁手不能判黑方负。 ,因黑方已连成五即黑方已获胜,故禁手规则失效。 ,在盘上落下的子又拿起来,此动作称为拔子,若拔子将罗友:基于 Web 的 JAVA 五子棋对弈程序的设计与实现 第 24 页 共 47 页 被判为负。 若推子或蹭子,以盘面第一落点为准。 用手将棋子推正不算违犯规则。 ,一方自行中止比赛如 :中途退场,将被判负。 ,本局获胜。 ,将被判为负:正式比赛期间,迟到时间超过比赛容许时间将被判负。 同意和局提议,判定为平局。 五子棋常用术语 :也称“步”。 对局中把一个棋子按照规则放到某一点,称之为一着棋。 一着是否完成有两种规则: 1)在执行落子无悔规则是,以行棋者的手离开棋子为一着已完成。 2)在执行限时规则时,以行棋者按下棋钟作为一着已完成。 : 五子棋中引入的英文名称,即应该行棋的一方主动放弃此次行棋的机会,由对方继续行棋。 :对方必须应答的着法,如对方形成活三必须阻止其形成活四。 :相对先手而言,即形成同色连四或嵌五,对方必须应着,就是绝对先手。 绝对先手又叫“冲”。 :(Victory of Continus Four 的缩写 ) 意思是利用连续冲四取胜之意。 利用连续不断的冲四或嵌五的绝对先手,制止形成连五获得胜利2020 届计算机科学与技术专业毕业设计(论文) 第 25 页 共 47 页 的一种方法。 在对局接近尾声或排局解题中一种常见的取胜技巧。 :是指白棋利用黑棋禁手取胜的战术。 白 1 冲四,迫使黑2 形成“四、四”禁手 ( 即冲四,活四禁手 ), 这种取胜方法叫做追下取胜。 :追下取胜以外的取胜方法,即未利用黑棋禁手战术而取胜。 :是指对局中一方落子后出现两个叫杀点即两个获胜点,而使对方无法防守的情形。 一般是有两个冲四活三点,白棋的双活三,双四均可称为一子双杀。 :棋盘上可见的横线与直线的总称。 :也称“斜线”。 是棋盘上不可见的斜行线。 11.“四、三”:指同时具备两个先手,其中一个四,另一个是活三。 12.“活三”、“嵌五”、“冲四”:参见五 子棋重要棋形讲座。 13. 禁手:对局中禁止使用的战术或被判为负的行棋手段。 14. 开局:也称“布局”。 布局阶段大体为七至十几着之内。 种类繁多,职业连珠五子棋有二十四种开局。 15. 局面:亦称“局势”。 为对局中某一段时间内双方子力的配置情况。 16. 优势:是指足以取胜的优势局面,其对方即为败势。 17. 妙着:对局中走出的一步精妙的着法。 既合乎逻辑又出人意料,有使局面顿时改观的效果,对局势的发展及对局的质量都有重大影响。 18. 好着:也称“佳着”。 对局中成功的某一步。 罗友:基于 Web 的 JAVA 五子棋对弈程序的设计与实现 第 26 页。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。