五子棋项目文档之终结篇.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
五子棋项目文档之终结篇

Java五子棋项目结题 项目组成员: 赵成龙 张涛 王硕 夏丽丽 洪燕 日 期: 2010-12-18 概述 五子棋是起源于中国古代的传统黑白棋种之一。现代五子棋日文称之为连珠,英译为Renju,英文称之为Gobang或FIR(Five in a Row的缩写),亦有连五子、五子连、串珠、五目、五目碰、五格等多种称谓。 五子棋不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。五子棋既有现代休闲的明显特征短、平、快,又有古典哲学的高深学问阴阳易理;它既有简单易学的特性,为人民群众所喜闻乐见,又有深奥的技巧和高水平的国际性比赛;它的棋文化源渊流长,具有东方的神秘和西方的直观;既有场 的概念,亦有点的连接。它是中西文化的交流点,是古今哲理的结晶。 基于五子棋的简单性和趣味性,我们以java这种面向对象的编程语言构建五子棋游戏。以此来提高对java语言的认识。 需求分析 经过分析五子棋游戏需求画出项目用例图如图2.1所示。 图2.1 五子棋游戏用例图 本游戏在设计过程中,可以完成人人对战和人机对战两种模式。参与游戏者可以选择执子颜色,选择黑色或白色,在单机模式下具备普通AI功能,可以进行一步的悔棋,在网络模式下可以进行聊天。 总体设计 3.1代码管理 为了利于项目的管理,将项目代码划分成类似图3.1所示的包结构。 图3.1 项目包图 3.2项目结构 为了使项目中各个各部分尽量清晰,我们采用的原则是一个类建一个文件。同时尽量将UI和事件处理等部分分开。具体结构如图3.2所示。 图3.2项目结构图(客户端部分) 从图中可以看到,我们将GUI层和对应的事件处理部分分开来进行设计,这样做类似于系统设计中的MVC的架构方式,虽然本系统实际并不大,但是通过这样的方式对于熟悉和了解设计过程非常有帮助。因为本系统没有过多的信息,所以我们并没有考虑去做Model层,而是将他分割到各个类当中。这样无疑会有一定的代码冗余。但是对本系统来言并不会造成太大的问题。 系统类结构图 项目类之间的主要关系如图3.3所示: 图3.3五子棋项目类图 主要类的说明: 界面部分 Test 用于测试整个五子棋客户端。 MainFrame 用户主界面。包含GameJPanel、ChessJPanel、PlayerJPanel的界面自定义组件。 GameJPanel 游戏操作界面实现。如开始,选择棋子颜色等。 ChessJPanel 棋盘界面实现。 PlayerJPanel 用户聊天界面实现。 游戏逻辑部分 Logic 抽象类,定义基础的所需判断的操作和存储量等,如是否有五子相连等。 NetLogic 网络对战时使用的逻辑类,继承自Logic。 AILogic 人机对战时使用的逻辑类,继承自Logic。 GobangControl 用于实现界面事件的相应等。 网络部分 ChessConfigNet 客户端配置服务器信息类。 GobangServer 服务器类。 棋子存储方式 本项目采用二维int数组形式来存放棋子,声明部分为: protected int[][] board; 需要注意的是,采用的存储方式是和屏幕坐标统一的,即倒置式的坐标平面。其中0表示无子,1表示黑子,-1表示白子。 部分实现 具体实现请参照源代码,在这里给出人机对战时的画面,如图4.1所示。 图4.1人机对战界面 博弈树 5.1博弈树的起源 为了探讨一下难度较大的棋类游戏程序,比如五子棋等等。用这些程序来同人或其他程序对弈。然而,有些程序是把计算机精心设计成一个棋盘,人们可以在其上对弈(或者是一种单人玩的棋盘游戏)。这种程序更接近于系统模拟的领域,而不属于人工智能的范畴。我们此处所要介绍的却是让计算机能够“思考”如何下棋。 假定有两个人或者两台机器在下棋。我们把其中一名称为棋手,另一名称为对手。而我们始终从棋手的角度来观看这场竞赛。这样一来,如果棋手赢了、对手输了,我们就说这盘棋赢了;如果棋手输了、对手赢了,我们就说这盘棋输了。假设现在该轮到棋手走了。在大多数情况下,棋手对这步棋可以有若干种选择。对于棋手的每一种选择,对手也有若干可供选择的相应棋步。对于棋手的每一步棋以及对手的每一步回棋,棋手又有自己进一步的选择。显然,这里所遇到的分支情况同我们在状态搜索中遇到的情形相同的。 实际上,我们可以把一盘棋想象成具有一个入口(起始位置)和一组出口的迷宫。有些出口标上了赢的记号;有些出口标上了输的记号;而有些出口标上了和局的记号。在入口处,棋手选择某条路径起步,在路径的一个岔口,对手挑选了自己的路径回步,棋手和对手就这样轮流选择自己的路径走下去。棋手总是力争通向胜利的出口,而对手却总是把棋路引向输的出口。有时双方各自的努力不相上下,最后在和局出口结

文档评论(0)

cgtk187 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档