基于java五子棋游戏开发.doc

上传人:h**** 文档编号:131185 上传时间:2018-07-09 格式:DOC 页数:105 大小:407.50KB
下载 相关 举报
基于java五子棋游戏开发.doc_第1页
第1页 / 共105页
基于java五子棋游戏开发.doc_第2页
第2页 / 共105页
基于java五子棋游戏开发.doc_第3页
第3页 / 共105页
基于java五子棋游戏开发.doc_第4页
第4页 / 共105页
基于java五子棋游戏开发.doc_第5页
第5页 / 共105页
点击查看更多>>
资源描述

1、 X X 学 院 毕 业 论 文 2010 年 4 月完成 论文题 目 基于 java五子棋游戏 开发 院(系)名 称 计算机与信息工程学院 专业名 称 软件技术 班 级 07软件技术一班 学生姓 名 学 号 2007083201033 指导教师姓名 目录 内容 摘要 1 关 键 词 1 Abstract 1 Keywords 1 1 系统概述 2 1.1 五子棋简介 2 1.2 课题背景及意义 3 1.3 JAVA 简介 4 2. 系统分析 5 2.1 系统需求 6 2.2 系统的功能简介 8 2.3 系统的可行性 分析 8 3系统设计 8 3.1 系统 关键类介绍 8 3.2 胜负判断 1

2、1 4.总结 13 参考文献 13 致 谢 13 1 内容摘要 : 五子棋作为中国古代的传统黑白棋种之一,有着广泛的群众基础,是一种老少皆宜的棋类休闲游戏。开发一款五子棋游戏可以使广大棋牌游戏爱好者在闲暇时间切磋棋艺,对互联网技术的推广和个人棋艺的提高都有好处。 的提高都有好处。 本文是采用 JAVA 语言写的五子棋游戏, JAVA 语言无论体现在 跨平台还是在 面向对象 , 可移植性 , 安全性 , 并发机制 和 可视化图形界面 的支持都是很好的。选用它作为开发语言,对程序开发来说,很具有高效性。 关 键 词 : JAVA 语言 棋牌游戏 跨平台性 Abstract: Backgammon

3、in ancient China, one of the traditional Othello species has a broad mass base, is a casual chess games for all ages. Development of a backgammon board games game can make the general demonstrate their chess enthusiasts in their spare time on Internet technology to promote and improve individual che

4、ss is good. This article is written by JAVA language Gobang games, JAVA language or both reflected in the cross-platform object-oriented, portability, security, concurrency mechanisms and visualization support for graphical interfaces are good. Use it as a development language for the program develo

5、pment, it is very efficient. Key words: JAVA language Card Games Cross-platform 2 1. 第一章 系统概述 1.1 五子棋简介 1.1.1五子棋 五子棋是起源于中国古代的传统黑白棋种之一。亦“ 连五子 ” 、 “ 五子连 ” 、 “ 串珠 ” 、 “ 五目 ” 、 “ 五目碰 ” 、 “ 五格 ” 等多种称谓。 玩家根据自身等级和习惯,可以自由选择不同的游戏房间。其游戏规则也有所不同。详细分为三种棋室:普通棋室、国标棋室、职业棋室。其中普通棋室不受任何规则限制;国标棋室有禁手规则限制;而职业棋室则在国标棋室的基础上

6、增加“三手交换”和“五手 两打”两项规则。(三手交换:是指黑棋下盘面第 3 着棋后,白方在应白 之前,如感觉黑方棋形不利于己方,可提出交换,即执白棋一方变为执黑棋一方,而黑方不可以不换。五手两打:是指黑棋在下盘面上关键的第 5手棋时,必须下两步棋,让白棋在这两步棋中任选一步,然后再继续对弈。) 国际比赛规则规定:对局中如黑方出现禁手,白方应立即指出禁手点,黑方即负。如白方在黑方出现禁手后,又落一步白子,黑棋禁手则不成立了。所以 在 “有禁手 “的房间里,如果黑方出现禁手,白方应立即按下 “禁手 “按钮。程序会判黑方负。如果这时白方又在棋盘上落一子 ,黑棋禁手则不成立了。为了简化用户对 “禁手

7、“按钮的使用,也有 “走禁手就输 “和 “禁手不能落子 “规则的房间,顾名思义不多介绍。虽然采取了禁手的限制,黑棋先行仍有优势,黑棋仍可以必胜。所以如果用户是高段位的棋手 ,或者想成为高手一定要选择国际上比赛选用的比赛标准,即 “ 三手 交换,五手两打”。 1.1.2五子棋棋盘 棋盘正中一点为“天元”。棋盘两端的横线称端线。棋盘左右最外边的两条纵线称边线。从两条端线和两条边线向正中发展而纵横交叉在第四条线形成的四个点称为“星”。天元和星应在棋盘上用直径约为 0.5 厘米的实心小圆点标出 。 以持黑方为准,棋盘上的纵轴线从左到右用英文字母 AO 标记。横行线从近到远用阿拉伯数字 115 标记。纵

8、横轴上的横纵线交叉点分别用横纵线标记的名称合写成。如“天元” H8,四个“星”分别为 D4、 D12、 L12、 L4 等。 3 图 1.1.2 五子棋棋盘 1.1.3五子棋棋盘 行棋顺序 黑 先、白后,从天元开始相互顺序落子。 判断胜负 1、 最先在棋盘横向、竖向、斜向形成连续的相同色五个棋子的一方为胜。 2、 黑棋禁手判负 (Lose),白棋无禁手。黑棋禁手包括 “ 三、三 ”(Double Three)( 包括 “ 四、三、三 ”) 、 “ 四、四 ”(Double Four)(包括 “ 四、四、三 ”) 、 “ 长连 ”(Overline) 。黑棋只能以 “ 四、三 ” 取胜。 3、

9、如分不出胜负,则定为平局 (Draw)。 4、 对局中中途退场判为负。 5、 五连与禁手同时形成,先五为胜。 6、 黑方禁手形成时,白方应立即指出。 若白方未发现或发现后未指明而继续应子,则不能判黑方负。 1.2 课题背景及意义 1.2.1开发背景 随着社会经济的发展,青少年的生活环境日益改善,再加上他们基本上都是独生子女,父母家庭对他们的关爱也就特别强烈。由于家庭给了孩子们太多的关爱,致使许多孩子养成了“以自我为中心”的陋习。围绕“自我”片面地分析问题,解决问题是很难把事情办好的。而五子棋是双人对弈的项目,行棋过程中就必须同时考虑双方4 的意图和利益,只顾自己的利益,得到的往往是“速败”。再

10、次,五子棋棋手必须从全局入手,正确分析全盘形势,尽最大限度调用自己 的有利因素才能达到取胜的目的。由此看来,五子棋可以改善青少年的思维方式,让他们培学会“知己知彼” “ 大局入手”的思考方法,这对他们今后走上竞争日益激烈的社会是大有好处的。 一个没有经历过失败的人,一定是个什么也不懂的人。许多青少年碰到一点挫折就退缩,不敢面对,这是他们脆弱的心理所造成的。五子棋有助于修身养性,对下棋的孩子来说,胜败是常事,关键是要学会善于自我反思,善于吸取教训, 善于积累经验,使他们有面对失败的勇气,有自我调整心态的能力,这也是他们今后走向社会所必须具备的。 1.2.2开发的意义 毕业设 计是大学学习的总结,

11、同时也是自己综合运用所学知识解决实际问题的一次锻炼。鉴于以上这些,我感觉有必要普及五子棋,发扬这种思维方式与方法。而互联网作为现今最大的青少年平台。能很好的推广青少年去学习五子棋,发展智力。开发五子棋程序,并放置在互联网平台上,这样会很好的让青少年去关注,以至于爱好它,学习五子棋,培养青少年的智力发育,提高国民整体素质。 1.3 JAVA简介 Java 是一种简单的,面向对象的,分布式的,解释型的,健壮安全的,结构中立的,可移植的,性能优异、多线程的动态语言。 它不只 是一门编程语言,也是一个平台,它基于 Java 虚拟机技术,借助这个东西建立了跨平台的优势。 Java 技术的重要性就不讲了,

12、从最近流行的一个统计数据上来说,目前世界上编程语言 Java 、 C 、VB、 C+依次排名前 4位,这排名本身不说明什么,至少也是工业界对编程语言使用上一个侧面的反映吧。 Java 平台 : 平台是程序运行的硬件或软件环境。 Java 平台与大多数其它平台 不同之处在于它是运行于其它基于硬件平台的纯软件平台。大多数其它平台是硬件和操作系统的结合。 Java 平台由两部分组成: * Java 虚拟机( Java VM) * Java 应用程序界面( Java API) 5 Java 平台是一种纯软件平台,它有三个版本 JavaSE(Java2 Platform Standard Edition

13、, java 平台标准版 ), JavaEE(Java 2 Platform,Enterprise Edition, java平台企业版 ), JavaME(Java 2 Platform Micro Edition, java 平台微型版 )。 Java SE( Java Platform, Standard Edition)这个版本以前叫做 J2SE,后来版本号从 1.4 直接跳到 5.0,其实也就是 1.5,所以就叫成 Java SE 5.0。目前 Java 开发人员使用较多的版本是 5.0,当然还有 Java SE 6.0 这个更新的版本。它允许开发和部署在桌面、服务器、嵌入式环境和实

14、时环境中使用的 Java 应用程序。 Java SE还包含了支持 Java Web 服务开发的类,并为 Java EE 这个版本提供基础。 虽说桌面应用程序, Java 一直不被看好,但也稍微提一下,负责桌面 GUI 开发的类库我知道的有: JDK 自带的主要是 AWT/SWING 这个 Java 原生类库;也可以使用 IBM的 SWT/JFace这个第三方类库。开发工具我了解的有: NetBeans(最近已经是 6.0final版了,做 GUI 有使用 VB 的感觉), Eclipse( SWT/JFace 这个项目其实就是做 Eclipse项目时扩展出来的,所以对 SWT/JFace 支持

15、的也不错)。 Java EE( Java Platform,Enterprise Edition)这个版 本以前叫做 J2EE,也就是大家可能听得比较多的,也是 Java 比较流行的领域, Java 的企业级版本。 Java EE 下有很多流行的开发框架,像 Struts、 Spring、 Hibernate 这种流行的所谓 SSH 组合等。 Java 平台由 Java 虚拟机( Java Virtual Machine)和 Java 应用编程接口(Application Programming Interface、简称 API)构成。 Java 应用编程接口为 Java应用提供了一个独立于操

16、作系统的标准接口,可分为基本部分和扩展部分。在硬件或操作系统平台上安装一个 Java 平台之后, Java 应用程序就可运行。现在 Java 平台已经嵌入了几乎所有的操作系统。这样 Java 程序可以只编译一次,就可以在各种系统中运行。 Java 应用编程 接口已经从 1.1x 版发展到 1.2 版。目 前常用的 Java 平台基于 Java1.4,最近版本为 Java1.7。 2. 第 二章 系统分析 2.1 系统需求 我们在设计游戏的时候有以下一些要求: 一 软件的界面简洁明了,操作简单容易。我们设计的软件界面必须是简洁的,游戏需 要设计得易操作。 6 二 软件具有人工智能算法原理要简单,

17、并且运行快速。游戏是需要快速反应的。我们 需要使用简单实用的智能算法。 三 游戏要设置几个难度,便于不同玩家选择 .玩家的游戏水平不一样,我们设置不同难 度供各个水平的玩家选择。 游戏玩法及规则 现代五子棋专 用棋盘为十五路 (15X15),共 225 个交叉点。棋盘正中一点为天元。对局开始时,先由执黑棋一方将一枚棋子落在天元点上,然后由执白棋一方在黑棋周围的交叉点上落子。但是,为了尊重对方和礼貌起见,持白棋的一方通常将盘面的第二着棋布在自己河界的一侧,即直止或斜止。此后黑白双方轮流落子,直到某一方首先在棋盘的横线、纵线或斜线上形成连续五子或五子以上仅对白棋而言,则该方就算获胜 。连珠五子棋的

18、一个特点是先行的一方优势很大,因此在职业比赛中对黑方做了种种限制,以利公平竞争。五子棋的比赛规则如下: 1、 黑先、白后,从 天元开始相互顺序落子; 2、 最先在棋盘横向、纵向或斜向形成连续的同色五个棋子的一方为胜; 3、 黑棋禁手判负、白棋无禁手。黑棋禁手有 “ 三、三 ” 、 “ 四、四 ” 和 “ 长连 ” , 包括“四、三、三”和“四、四、三”。黑棋只能以“四、三”取胜; 4、 如分不出胜负,则到为平局; 5、 五连与禁手同时形成,判胜; 6、 黑方禁手形成时,白方应立即指出。若白方未发现或发现后不立即指出,反而继续 落子,则禁手失效,不再判黑方负。 2.2 系统的功能简介 人机对弈的

19、程序,至少应具备如下几个部分: 1、 某种在机器中表示棋局的方法,能够让 程序知道博弈的状态。 2、 产生合法走法的规则,以使博弈公正地进行,并可以判断人类对手是否乱走。 3、 从所有合法走法中选择最佳走法的技术。 4、 一种评估局面优劣的方法,用以同上面的技术配合做出智能的选择。 5、 一个界面,有了它,这个程序才能用。 2.2.1 棋盘表示 7 棋盘表示就是使用一种数据结构来描述棋盘及棋盘上的棋子,通常使用一个二维数组。棋盘的数据表示直接影响到程序的时间及空间复杂度。为了追求更高的效率,研究人员针对不同棋类提出了多种不同的表示方法。有些方法具有更高的效率如比特棋盘表示法。 2.2.2 走法

20、产生 博弈的规则决定了哪些走法是合法的。对有的游戏来说,这很简单,比如五子棋,任何空白的位置都是合法的落子点。但是对于象棋来说,就有马走日,象走田等一系列复杂的规则。走法产生是博弈程序中一个相当复杂而且耗费运算时间的过程。不过,通过良好的数据结构可以显著的提高走法生成的速度。 2.2.3 搜索技术 对于计算机来说,直接通过棋盘信息判断走法的好坏并不精确。除了输赢这样的局面可以准确判断外,其它的判断都只能做到大致估计。判断两种走法孰优孰劣的一个好方法就是观看棋局走下去的结果。也就是向下搜索若干步,然后比较发 展下去的结果。为了避免差错,我们假定对手的思考也和我们一样,也就是,我们想到的内容,对手

21、也想到了。这就是极大极小搜索算法的基本原则。极大极小搜索算法的时间复杂度是 O( bn)。这里 b是分枝因子,指棋局在各种情况下的合法走步的平均值; n是搜索的最大深度,也就是向下搜索的博弈双方的走步之和。例如向下搜索甲乙双方各走一步的情形, n就是 2。显然对于五子棋这种分枝因子在 200 左右的棋类游戏,时间开销随着 n的增大会急剧的增长,不出几层就会超出计算机的处理能力,这将导致在有限时间内得不到令人满意的结果。 人们在开发高效的搜 索算法上投入了大量的研究。在过去的几十年中,一些相当成功的改进大大提高了极大极小搜索的效率。 Alpha-Beta 剪枝、迭代深化、置换表、历史启发等手段的

22、综合运用将搜索效率提高了几个数量级。 2.2.4用户功能 用户可以直接使用的游戏功能,通过按键进行操作。每个用例的简要说明如下: 1、 新游戏:初始化相关变量,清空棋盘。 2、 步数计算 : 计算当前是第几步 4、 棋子坐标 : 显示当前所下棋子坐标 。 6、 下棋提示 : 提示该哪方下棋子 。 8 7、 重新开局 : 初始化相关变量,清空棋盘。 2.3 系统的可行性分析 2.3.1 经济可行性 本游戏使用模块化设计方案,易于编写和维护,核心代码易于移植,总体开发成本低。游戏短小精悍,对目标设备要求低,产品面向受众广,可以带来可观的经济效益。 2.3.2 技术可行性 JAVA 提供了丰富的接口

23、和类服务,本游戏的开发只需要用到基本的绘图接口和系统的文件服务,实现起来非常简单。使用 JAVA 封装好的数据类可以简化编码实现,避免不必要的错误。对于以处理数据为主的棋类游戏,编码实现没有困难。 2.3.3 系统安全性分析 本游戏的开发只使用很少的系统接口和系统服务,数据处理都是在程序内部解决,不涉及与其它程序的数据 交互。使用 JAVA 定义好的构造法分配内存空间,这样不会在构造出现异常时产生内存泄露。系统会根据已经入栈的对象指针,通过析构函数收回内存。所以即使程序因为内存不足无法运行,也不会因此而影响系统本身的稳定性和安全性。另外,使用模块化方法进行设计编码,可以很方便的调整算法的搜索深

24、度,减小内存的使用量,提高程序的兼容性 3. 第 三 章 系统设计 3.1 系统 关键 类 介绍 1、 Chess 类是游戏的主类,负责初始化游戏 棋盘 ,其实 Chess 类就 是游戏的入口,只有启动了此类,才有游戏菜单,才可以进行选择游戏 。代码如下 setVisible(true); setLayout(null); Label label = new Label(“Gobang v1.0“, Label.CENTER); add(label); label.setBounds(10, 50, 440, 26); label.setBackground(Color.orange); add(chesspad); chesspad.setBounds(10, 90, 440, 440); addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文资料库 > 毕业论文

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。