1、 实实 习习 报报 告告 课程名称课程名称 信息系统认知实习信息系统认知实习 实习题目实习题目 java 五子棋五子棋 专专 业业 班班 级级 学学 号号 学生姓名学生姓名 实习成绩实习成绩 指导教师指导教师 2010 年年 1 月月 前言前言 1 摘要 五子棋作为一个棋类竞技运动,在民间十分流行,为了熟悉五子棋规则及技巧, 以及研究简单的人工智能,决定用 Java 开发五子棋游戏。主要完成了人机对战 和玩家之间联网对战 2 个功能。网络连接部分为 Socket 编程应用,客户端和服 务器端的交互用 Class Message 定义,有很好的可扩展性,客户端负责界面维护 和收集用户输入的信息,
2、及错误处理。服务器维护在线用户的基本信息和任意两 个对战用户的棋盘信息,动态维护用户列表。在人机对弈中通过深度搜索和估值 模块,来提高电脑棋手的智能。分析估值模块中的影响精准性的几个要素,以及 提出若干提高精准性的办法,以及对它们搜索的节点数进行比较,在这些算法的 基础上分析一些提高电脑 AI 方案,如递归算法、电脑学习等。算法的研究有助 于理解程序结构, 增强逻辑思维能力, 在其他人工智能方面也有很大的参考作用。 1 引言 1.1 课题背景 五子棋是起源于中国古代的传统黑白棋种之一。现代五子棋日文称之为连珠,英 译为 Renju,英文称之为 Gobang或 FIR(Five in a Row
3、 的缩写),亦有连五子、五 子连、串珠、五目、五目碰、五格等多种称谓。 五子棋起源于古代中国,发展于日本,风靡于欧洲。对于它与围棋的关系有两种 说法,一说早于围棋,早在 “ 尧造围棋 ” 之前,民间就已有五子棋游戏;一 说源于围棋,是围棋发展的一个分支。在中国的文化里,倍受人们的青睐。本世 纪初五子棋传入欧洲并迅速风靡全欧。通过一系列的变化,使五子棋这一简单的 游戏复杂化、规范化,而最终成为今天的职业连珠五子棋,同时也成为一种国际 比赛棋。 Java 语言是当今最为流行的程序设计语言之一 作为一门非常优秀和极为健壮的 编程语言,它同时具有的面向对象,与平台无关,分布式应用,安全,稳定和多 线程
4、等优良的特征,使用 Java 语言,不仅可以开发出功能强大的大型应用程序, 而且Java语言本身突出的跨平台的特性也使得它特别适合于Internet上的应用开 发,可以这样说,Java 的出现使得所开发的应用程序“一次编写,处处可用”的 实现成为了可能。 1.2 本课题研究的意义 近来随着计算机的快速发展,各种各样的电脑游戏层出不穷,使得我们能有更多 的娱乐项目,而棋类游戏能起到锻炼人的思维和修身养性的作用,而且棋类游戏 水平颇高,大有与人脑分庭抗礼之势。其中战胜过国际象棋世界冠军-卡斯帕罗 夫的“深蓝”便是最具说服力的代表;其它像围棋的“手淡” 、象棋的“将族” 2 等也以其优秀的人工智能深
5、受棋迷喜爱。 越来越多的具有智能的机器进入了人类的生活,人工智能的重要性如今显而易 见。自己对人工智能比较感兴趣,而五子棋游戏程序的开发实现这个课题,正好 提供给我这样一个研究的机会,通过对人工智能中博弈方面的研究(人机对弈) , 让我在简单的人机对弈全局设计,以及具体到相关算法上有了深入的了解。人工 智能属于计算机科学的领域,它以计算机技术为基础,近几十年来,它的理论和 技术已经日益成熟,应用领域也正在不断扩大,显示出强大的生命力。人工智能 大致可以分成几个学科,它们每一个都是独特的,但是它们常常又互相结合起来 完成设计任务, 这时, 这些学科之间的差别就变的很模糊。 人工智能在专家系统,
6、自然语言理解,自动定理证明,自动程序设计,人工智能在机器人学、模式识别、 物景分析、数据库的智能检索、机器下棋(实质上是博弈论问题)和家用电器智 能化等领域都有广泛的应用。 而这个课题就是和人工智能中的博弈论领域紧密相 关的。 这个题目核心是人工智能和 Socekt 编程, 。并且人工智能中的博弈部分,由于采 用了大量的搜索算法,其中很多被利用到各方面。它的概念、方法和技术,正在 各行各业广泛渗透。智能已经成为当今各种新产品、新装备的发展方向。所以, 趁着这个机会,对人工智能中比较容易实现的人机博弈进行了解研究学习,也是 很实用且很有必要的。 1.3 本课题的研究方法 在进行游戏设计之前,首先决定的第一个问题就是,使用什么开发环境来编写环 境? 自己虽然比较熟悉 Java 语言,但是实际开发项目经验很少,所以决定用 Jcreator,其拥有高亮语法编辑、使用向导以及完全定制的用户界面,最主要的是 能够自动查找文件于 Ma