分类号:TP311.1 U D C:D10621-408-(2007)5738-0
密 级:公 开 编 号:2003031221
成 都 信 息 工 程 学 院
学 位 论 文
基于 Java 的五子棋游戏的设计
论 文 作 者 姓 名 :
赵小龙
申 请 学 位 类 别 :
计算机科学与技术
申 请 学 位 类 别 :
工学学士
指导教师姓名(职称):
吴春旺
论 文 提 交 日 期 :
2007 年 06 月 10 日
基于 Java 的五子棋游戏的设计
摘 要
五子棋作为一个棋类竞技运动,在民间十分流行,为了熟悉五子棋规则及技
巧,以及研究简单的人工智能,决定用 Java 开发五子棋游戏。主要完成了人机
对战和玩家之间联网对战 2 个功能。网络连接部分为 Socket 编程应用,客户端
和服务器端的交互用 Class Message 定义,有很好的可扩展性,客户端负责界面
维护和收集用户输入的信息,及错误处理。服务器维护在线用户的基本信息和任
意两个对战用户的棋盘信息,动态维护用户列表。在人机对弈中通过深度搜索和
估值模块,来提高电脑棋手的智能。分析估值模块中的影响精准性的几个要素,
以及提出若干提高精准性的办法,以及对它们搜索的节点数进行比较,在这些算
法的基础上分析一些提高提高电脑 AI 方案,如递归算法、电脑学习等。算法的
研究有助于理解程序结构,增强逻辑思维能力,在其他人工智能方面也有很大的
参考作用。
关键词:深度搜索;估值;电脑 AI;五子棋;算法
Gobang Java-based games design
Abstract
Gobang chess as a sport, is very popular in civil, in order to become familiar with
gobang rules and techniques, and the study of simple artificial intelligence, decided to
use the Java Development gobang games. Completed a major man-machine war and
the war gamers interconnection between the two functions. Network Connection
Socket Programming for some applications, client and server interaction with Class
Message definition, 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. The man-machine players through depth
search and valuation module, the computer players to improve intelligence. Analysis
Module valuation of the precise elements, as well as a number of increased precision,
and on their search for nodes, In these algorithms on the basis of analysis to raise
some computer AI programs, 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 have great references.
.
Key words: Search depth; Valuation; Computer AI; Gobang ; Algorithm
目 录
论文总页数:23 页
1 引言............................................................................................................................................1
1.1 课题背景............................................................................................................................1
1.2 本课题研究的意义............................................................................................................1
1.3 本课题的研究方法............................................................................................................2
2 课题相关基础............................................................................................................................2
2.1 五子棋................................................................................................................................2
2.1.1 棋盘和棋子 ...............................................................................................................2
2.1.2 规则及解释 ...............................................................................................................3
2.1.3 五子棋常用术语 .......................................................................................................4
2.1.4 五子棋攻防 ...............................................................................................................7
3 JAVA .........................................................................................................................................8
3.1 JAVA 简介............................................................................................................................8
3.2 JAVA 开发环境....................................................................................................................9
4 课题详细研究方法..................................................................................................................10
4.1 程序结构说明..................................................................................................................10
4.2 棋盘及棋子的类..............................................................................................................11
4.2.1 棋盘 .........................................................................................................................11
4.2.2 棋子 .........................................................................................................................13
4.3 胜负判断条件..................................................................................................................13
4.4 网络对战..........................................................................................................................15
4.5 电脑 AI.............................................................................................................................17
结 论..........................................................................................................................................21
参考文献..........................................................................................................................................21
致 谢..........................................................................................................................................22
声 明..........................................................................................................................................23
第 1 页 共 23 页
1 引言
1.1 课题背景
五子棋是起源于中国古代的传统黑白棋种之一。现代五子棋日文称之为连珠,
英译为 Renju,英文称之为 Gobang 或 FIR(Five in a Row 的缩写),亦有连五子、
五子连、串珠、五目、五目碰、五格等多种称谓。
五子棋起源于古代中国,发展于日本,风靡于欧洲。对于它与围棋的关系有
两种说法,一说早于围棋,早在 “ 尧造围棋 ” 之前,民间就已有五子棋游戏;
一说源于围棋,是围棋发展的一个分支。在中国的文化里,倍受人们的青睐。本
世纪初五子棋传入欧洲并迅速风靡全欧。通过一系列的变化,使五子棋这一简单
的游戏复杂化、规范化,而最终成为今天的职业连珠五子棋,同时也成为一种国
际比赛棋。
Java 语言是当今最为流行的程序设计语言之一 作为一门非常优秀和极为健
壮的编程语言,它同时具有的面向对象,与平台无关,分布式应用,安全,稳定
和多线程等优良的特征,使用 Java 语言,不仅可以开发出功能强大的大型应用
程序,而且 Java 语言本身突出的跨平台的特性也使得它特别适合于 Internet 上
的应用开发,可以这样说,Java 的出现使得所开发的应用程序“一次编写,处
处可用”的实现成为了可能。
1.2 本课题研究的意义
近来随着计算机的快速发展,各种各样的电脑游戏层出不穷,使得我们能有
更多的娱乐项目,而棋类游戏能起到锻炼人的思维和修身养性的作用,而且棋类
游戏水平颇高,大有与人脑分庭抗礼之势。其中战胜过国际象棋世界冠军-卡斯
帕罗夫的“深蓝”便是最具说服力的代表;其它像围棋的“手淡”、象棋的“将
族”等也以其优秀的人工智能深受棋迷喜爱。
越来越多的具有智能的机器进入了人类的生活,人工智能的重要性如今显而
易见。自己对人工智能比较感兴趣,而五子棋游戏程序的开发实现这个课题,正
好提供给我这样一个研究的机会,通过对人工智能中博弈方面的研究(人机对
弈),让我在简单的人机对弈全局设计,以及具体到相关算法上有了深入的了解。
人工智能属于计算机科学的领域,它以计算机技术为基础,近几十年来,它的理
论和技术已经日益成熟,应用领域也正在不断扩大,显示出强大的生命力。人工
智能大致可以分成几个学科,它们每一个都是独特的,但是它们常常又互相结合
起来完成设计任务,这时,这些学科之间的差别就变的很模糊。人工智能在专家
系统,自然语言理解,自动定理证明,自动程序设计,人工智能在机器人学、模
式识别、物景分析、数据库的智能检索、机器下棋(实质上是博弈论问题)和家
用电器智能化等领域都有广泛的应用。而这个课题就是和人工智能中的博弈论领