logo资料库

基于java的五子棋编程设计.doc

第1页 / 共21页
第2页 / 共21页
第3页 / 共21页
第4页 / 共21页
第5页 / 共21页
第6页 / 共21页
第7页 / 共21页
第8页 / 共21页
资料共21页,剩余部分请下载后查看
摘  要
Abstract
第一章:绪论
1.1 前 言
第二章 五子棋的相关基础
2.1五子棋解释
2.2五子棋基本规则
2.3五子棋常用术语
第三章 开发工具、环境及其技术
3.1 JAVA简介
3.2 JAVA 编程环境:
第四章 程序具体研究方法
4.1程序设计思路
4.2 程序设计
4.3程序的运行结果
结 语
参 考 文 献
致 谢
新 乡 学 院 毕 业 论 文 论 文 题 目 五子棋编程设计 院(系)名称 计算机信息工程学院 专 业 名 称 计算机网络技术 班 级 网络一班 学 生 姓 名 陈强 学 号 2007082201024 指导教师姓名 王晓洁 2010 年 4 月完成。
目 录 摘 要 ............................................................ 1 关键词: ............................................................ 1 Abstract ........................................................... 1 Key words: ........................................................ 1 第一章:绪论 ....................................................... 2 1.1 前 言 ........................................................ 2 第二章 五子棋的相关基础 ............................................ 2 2.1 五子棋解释 .................................................... 2 2.2 五子棋基本规则 ................................................ 3 2.3 五子棋常用术语 ................................................ 3 第三章 开发工具、环境及其技术 .................................... 5 3.1 JAVA 简介 .....................................................5 3.2 JAVA 编程环境: .............................................. 7 第四章 程序具体研究方法 ........................................... 7 4.1 程序设计思路 .................................................. 7 4.2 程序设计 ...................................................... 9 4.3 程序的运行结果 ............................................... 17 结 语 .......................................................... 18 参考文献 .......................................................... 19 致 谢 .......................................................... 19
摘 要 五子棋作为一个棋类竞技运动,在民间十分流行,为了熟悉五子棋规则及技巧, 以及研究简单的人工智能,决定用 Java 开发五子棋游戏。主要完成了人机对战 和玩家之间联网对战 2 个功能。网络连接部分为 Socket 编程应用,客户端和服 务器端的交互用 Class Message 定义,有很好的可扩展性,客户端负责界面维护 和收集用户输入的信息,及错误处理。服务器维护在线用户的基本信息和任意两 个对战用户的棋盘信息,动态维护用户列表。在人机对弈中通过深度搜索和估值 模块,来提高电脑棋手的智能。分析估值模块中的影响精准性的几个要素,以及 提出若干提高精准性的办法,以及对它们搜索的节点数进行比较,在这些算法的 基础上分析一些提高电脑 AI 方案,如递归算法、电脑学习等。算法的研究有助 于理解程序结构,增强逻辑思维能力,在其他人工智能方面也有很大的参考作用。 关键词: 深度搜索;估值;电脑 AI;五子棋;算法 Abstract As a sport, gobang is very popular in civil, in order to become familiar with gobang rules and techniques, and the study of simple artificial intelligence, I decide to use the Java to develope gobang games and complete the two functions including man-machine war and man-man war. Network Connection is Socket Programming for some applications, client and server interaction is definited by Class Message, which is a very good scalability, Client interface is responsible for the collection and maintenance of user input information, and error handling. Server users maintain online basic information and arbitrary two-time users of the chessboard of information, dynamic maintenance user list. During the man-machine players, it improves intelligence of the computer players through depth search and valuation module. Analyzes Module valuation of the precise elements, as well as a number of increased precision, and compares their search for nodes, which raises some computer AI programs on the basis of analysis, such as recursive algorithm, computer learning. Algorithm of procedures contribute to the understanding of the structure, logical thinking ability, In other areas of artificial intelligence has great references. Key words: Search depth; Valuation; Computer AI; Gobang ; Algorithm 1
第一章:绪论 1.1 前 言 电脑已经深入到日常工作和生活的方方面面,比如文字处理、信息管理、辅 助设计、图形图像处理、教育培训以及游戏娱乐等。Windows 系统的推出使电脑 从高雅的学术殿堂走入了寻常百姓家,各行各业的人们无须经过特别的训练就能 够使用电脑完成许许多多复杂的工作。然而,虽然现在世界上已经充满了花样繁 多的各种软件,但它们依然不能满足用户的各种特殊需要,人们还不得不开发适 合自己特殊需求的软件。Java 语言作为一种面向对象的编程语言,具有分布式, 可移植,高性能,多线程等特点。通过系统的学习,人们就可以使用它开发出功 能齐全,满足特殊需求的应用程序。Java 语言易学易用,对学习者掌握技能, 开拓思维都有很大的帮助。 我作为一名学生,在系统的学习了 Java 语言之后,经常用它搞一些小程序。 这次毕业设计,正好将学过的 Java 语言中的各种技术综合起来,用 Jbuilder2006 开发工具编写一个小游戏,既对自己学过的技能进行一次检验,也能系统地将学 过的知识复习巩固。 随着计算机技术的不断发展,网络技术的普及范围越来越广,网络能够提供 的服务多样、便捷,已经成为人们生产生活中不可缺少的重要组成部分。如今网 络休闲游戏发展迅速,它凭借健康、方便、互动性强、益智等诸多优点,成为大 部分现代人休闲娱乐的首选。 网络五子棋游戏是使用 Java 语言开发的一款游戏。它使用 SOCKET 建立连接,多 线程处理数据,以及可嵌入网络浏览器的 ALET 作为客户端,这些特点使这款游 戏无论是服务器还是客户端的实现都相对容易。通过对该软件的编写,还可以巩 固我们对以上各种知识的掌握和理解。 第二章 五子棋的相关基础 2.1 五子棋解释 引用《辞海》中所言,五子棋是“棋类游戏,棋具与围棋相同,两人对局, 轮流下子,先将五子连成一行者为胜。”。五子棋的名称:日文亦有“连五子、 五子连、串珠、五目、五目碰、五格、五石、五法、五联、京棋”等多种称谓, 英文则称之为 FIR (Five In A Row 的缩写)、Gomoku(日语“五目”的罗马拼音)、 Gobang、connect 5、mo-rphion。捷克语 piskvorky,韩语 omok、韩国人还称之 为情侣棋 2
2.2 五子棋基本规则 1.五子棋行棋时,黑棋先下第一子,由天元开始,后白棋在黑棋周围的交叉 点的落子。接着黑方再以天元中心的 25 个交叉点的范围内落盘面的第三子,之 后黑白双方相互顺序子。 2.最先在棋盘线交点横向,纵向,斜向形成已方的五个棋子连续的一方 为胜。 3.出现禁手对方指出后将判负,其中包括两个或两个以上的活三,活四, 长连均称之为禁手。 4.禁手只对黑棋有效,白棋无禁手。 5.黑方禁手形成时,白方需立即指出,黑方将被判负。若白方未发现黑 方禁手存在而继续应子,其后指出黑方禁手不能判黑方负。 6.黑方连五与禁手同时形成,因黑方已连成五即黑方已获胜,故禁手规 则失效。 7.在对局中,在盘上落下的子又拿起来,此动作称为拔子,若拔子将被 判为负。 8.在对局中棋子掉落在棋盘上将被判负。若推子或蹭子,以盘面第一落 点为准。用手将棋子推正不算违犯规则。 9.在对局中,一方自行中止比赛如:中途退场,将被判负。 10.在对局中对方宣布认输,本局获胜。 11.超过比赛规定所用时间限制,将被判为负:正式比赛期间,迟到时间 超过比赛容许时间将被判负。 12.如下至最终一子仍不分胜负则定为平局。 13.中盘期间双方 同意和局提议,判定为平局。 2.3 五子棋常用术语 1.着:也称“步”。对局中把一个棋子按照规则放到某一交叉点,称之为一 着棋。一着是否完成有两种规则: 3
(1)在执行落子无悔规则是,以行棋者的手离开棋子为一着已完成。 (2)在执行限时规则时,以行棋者按下棋钟作为一着已完成。 2.PASS :五子棋中引入的英文名称,即应该行棋的一方主动放弃此次行 棋的机会,由对方继续行棋。 3.先手:对方必须应答的着法,如对方形成活三必须阻止其形成活四。 4.绝对先手:相对先手而言,即形成同色连四或嵌五,对方必须应着, 就是绝对先手。绝对先手又叫“冲”。 5.VCF:(Victory of Continus Four 的缩写) 意思是利用连续冲四取胜 之意。利用连续不断的冲四或嵌五的绝对先手,制止形成连五获得胜利的一种方 法。在对局接近尾声或排局解题中一种常见的取胜技巧。 6.追下取胜:是指白棋利用黑棋禁手取胜的战术。白 1 冲四,迫使黑 2 形 成“四、四”禁手( 即冲四,活四禁手), 这种取胜方法叫做追下取胜。 7.自由取胜:追下取胜以外的取胜方法,即未利用黑棋禁手战术而取胜。 8.一子双杀:是指对局中一方落子后出现两个叫杀点即两个获胜点,而 使对方无法防守的情形。一般是有两个冲四活三点,白棋的双活三,双四均可称 为一子双杀。 9.阳线:棋盘上可见的横线与直线的总称。 10. 阴线:也称“斜线”。是棋盘上不可见的斜行线。 11. “四、三”:指同时具备两个先手,其中一个四,另一个是活三。 12. “活三”、“嵌五”、“冲四”:参见五子棋重要棋形讲座。 13. 禁手:对局中禁止使用的战术或被判为负的行棋手段。 14. 开局:也称“布局”。布局阶段大体为七至十几着之内。种类繁多, 职业连珠五子棋有二十四种开局。 15. 局面:亦称“局势”。为对局中某一段时间内双方子力的配置情况。 16. 优势:是指足以取胜的优势局面,其对方即为败势。 17. 妙着:对局中走出的一步精妙的着法。既合乎逻辑又出人意料,有 使局面顿时改观的效果,对局势的发展及对局的质量都有重大影响。 18. 好着:也称“佳着”。对局中成功的某一步。 4
19. 正着:对局的某一局面中的正确着法。 20. 劣着:对局中,导致严重不利后果的一步错误着法。 21. 败着:也称“失着”“漏着”。对局中造成局面恶化的一步严重错 误着法。 22. 等着:对局中具有等待性的一步着法,主要意图是等待有利时机。 23. 废着:也称“空着”。对局中不起作用的着法。实际上指浪费时间 毫无疑义的错着。 24. 抢先:对局中利用反活三或冲四的强制手段夺取主动权的着法。 25. 打谱:按照棋谱演练着法,是提高棋艺水平的重要方法之一。 26. 复局:也叫“复着”。对局结束又重演对局的过程。一般用以研究、 比较双方的成败得失和着法的优劣。 第三章 开发工具、环境及其技术 3.1 JAVA 简介 JAVA 技术介绍: Java 技术是一门编程语言,也是一个平台,它基于 Java 虚拟机技术,借助 这个东西建立了跨平台的优势。(题外话:Java 热门的原因之一就是一个跨平 台的概念,和跨平台类似跨浏览器的好处也是如此,这也是现在 AJAX 技术流行 的原因之一。另外现在热炒的 RIA 富客户端的概念下的技术除了 AJAX 外还有 Adobe 的 Flash/Flex,微软的 Silver Light,SUN 的 JavaFX 等,个人更看好 FLash/Flex,原因是 Flash 插件在浏览器端占用率很高) Java 技术的重要性就不讲了,从最近流行的一个统计数据上来说,目前世界 上编程语言 Java 、C 、VB、C++依次排名前 4 位,这排名本身不说明什么,至 少也是工业界对编程语言使用上一个侧面的反映吧。 Java 编程语言与众不同之处在于:Java 程序既是编译型的(转换为一种称 为 Java 字节码的中间语言),又是解释型的(JVM 对字节码进行解析和运行)。 编译只进行一次,而解释在每次运行程序时都会进行。编译后的字节码采用一种 针对 JVM 优化过的机器码形式;解释器是 JVM 的实现。这段是摘自网上的,编 译原理学的不是很好,对这门语言的背后运行机制理解到这样了。 Java 平台是一种纯软件平台,它有三个版本 Java SE、JavaEE、Java ME。 5
Java SE(Java Platform,Standard Edition)这个版本以前叫做 J2SE,后 来版本号从 1.4 直接跳到 5.0,其实也就是 1.5,所以就叫成 Java SE 5.0。目 前 Java 开发人员使用较多的版本是 5.0,当然还有 Java SE 6.0 这个更新的版 本。它允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的 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 支持的也不 错)。 Java EE(Java Platform,Enterprise Edition)这个版本以前叫做 J2EE, 也就是大家可能听得比较多的,也是 Java 比较流行的领域,Java 的企业级版本。 Java EE 下有很多流行的开发框架,像 Struts、Spring、Hibernate 这种流行的 所谓 SSH 组合等。 根据项目大小、应用领域,技术平台的选择面还是很多的,除了 Java EE, 还有.Net,LAMP 组合(Linux、Apatch、MySql、PHP 组合),相对来说比较新 Ruby 在 Ruby on Rails 的框架应用,后两者可能在相对来说比较轻量级的 Web 领域运用成功案例比较多,更重量的企业级潜力还有待挖掘。 Java ME(Java Platform,Micro Edition)这个版本以前叫做 J2ME。应用 领域像各种移动设备和嵌入式设备,比如:手机、PDA、电视机顶盒和打印机。 Java ME 不是太熟悉,不过移动设备和嵌入式设备的开发个人觉得算是比较 有意思的领域,最近比较瞩目的业界新闻有一个就是 Google 发布开源智能手机 操作系统开发平台 Android,也就是前一阵子炒得很火的 GPhone(原来 Google 出的不是手机,而是一个手机操作系统开发平台)。这个平台貌似会对 Java ME 有些冲击,按照网上的消息,Android 包括:1、高度定制的 Linux 操作系统内 核及智能手机硬件驱动支持;2、经过 Google 修改过的 Java 虚拟机 Dalvik,这 里的性能比 SUN 的 Hotspot 高,支持大部分 Java 核心类库;3、大量智能手机开 发核心类库;4、大量现成的智能手机应用软件;5、基于 Eclipse 的开发环境。 也是按照网上的说法,Java EE 提供了统一的编程平台,但不能调用操作系统的 资源;而 Android 下直达操作系统,上直达应用软件,如:浏览器、日历、地图 等。 Java 开发工具很多,个人使用的 IDE 有 Eclipse 和 NetBeans。Eclispe 比较 流行,各种插件也多,当然用起来也不错;NetBeans 现在也是越做越好了,介 绍这两个 IDE 主要是开源的,当然还有其它工具如 JBuilder、IntelliJ、 JCreator。这些 IDE 各有优势劣势,根据你开发的项目来选择了。 6
分享到:
收藏