基于JAVA的五子棋游戏设计与实现

 2022-01-17 11:01

论文总字数:14899字

目 录

1.绪论 3

1.1选题背景 3

1.2五子棋概述 3

1.2.1五子棋简介 3

1.2.2五子棋术语 3

1.2.3五子棋规则 4

1.3研究内容与方法 4

1.4论文结构 5

2.开发工具与运行环境 5

2.1 开发工具 5

2.2运行环境 6

3.算法描述 6

3.1贪心算法 6

3.2博弈树搜索 7

3.3评估函数的设计 11

4.系统设计与实现 12

4.1系统需求分析 12

4.1.1系统目标 12

4.1.2系统实现功能 12

4.2系统总体设计 13

4.3数据结构设计 13

4.3.1布局设计 13

4.3.2游戏胜负判断 14

4.4系统实现 14

4.4.1整体界面 14

4.4.2功能说明 15

4.4.3其他截图 16

5.结论 17

参考文献 18

致谢 19

基于JAVA的五子棋游戏设计与实现

罗隐卿

, China

Abstract:The field of artificial intelligence has developed very rapidly in recent years. Game is one of the important points in the research field of artificial intelligence. Domestic and foreign research on the game has reached a very high level, such as chess program "deep blue" it has reached the level of world champion, and this year's alpha dog go level also overcome the chess master Li Shishi. This program needs to go through a lot of practice, or by rote, or is the many search algorithms, will make the program has a very high "intelligence".As a result, a good search algorithm is very important. This paper is through the analysis and research of the board of artificial intelligence algorithm, basing on the minimax search algorithm, through the Java programming to achieve a personal computer Gobang game. Through practice,it is proved that this method is very successful, because it in the Gobang has compared with the human shoulder "intelligence".

Key words:Artificial Intelligence;Game-playing;Search Algorithm;Five-In-A-Row

  1. 绪论

1.1选题背景

50年代人工智能这个概念被第一次提了出来,经过人们不断的探索,在人工智能方面也取得的显著的成果,如机器证明定理等。但是由于其中有限机器编译等一些问题失败了,人工智能的发展逐渐走向低谷。到了70年代,出现了比如治疗系统等很多专家系统,人工智能被引向了实用化,人工智能的研究再次迎来了新的春天。80年代虽然日本的第五代计算机的研制计划失败了,但是吸引了越来越多的人来研究人工智能领域。在60年代末的时候,神经网络这门科学出现了。在90年代的时候,国际互联网技术迅速发展起来,单个智能为主的研究开始向网络下分布式人工智能的研究转变,使得人工智能越来越实用化。此外,多层神经网络模型被提出,使人工神经网络的研究也跟着迅速发展。我们社会生活的各个领域都能看见人工智能的身影。

五子棋人机对战游戏里也体现出人工智能的存在,并且五子棋游戏规则简单易操作更是吸引了不同年龄段的人。随着电脑的逐渐普及,电脑已经成为日常生活中很常见的东西,人们也开始在电脑上下五子棋。本论文主要通过研究五子棋人工智能相关算法,通过Java编程,并把人工智能算法添加到程序中去,实现一个人工智能化的五子棋人机对战游戏程序。

1.2五子棋概述

1.2.1五子棋简介

五子棋有许多各种各样的名称,它是由中国古代黑白棋种发展而来。五子棋规则简单,适合各个年龄阶段的人,而且特别有趣;五子棋游戏不仅能增强人的思维能力,提高人的智力,而且富含深刻的哲理,有助于修养身心。

相传五子棋起源于尧帝时期,它的出现比围棋更早,一些早期有关于五子棋和围棋的史料记载中它们有很多相似的地方,因此五子棋和围棋的下棋棋局是完全一样的。

在古代虽然五子棋和围棋有相同的棋具,但是它们的下法则是完全不一样的。五子棋是两人对局,轮流落子,现将五子连在一起者为胜者;而围棋则不一样。

根据日本的一些史料记载,中国的五子棋开始是由中国传到高丽(朝鲜),再通过朝鲜才传播到日本的。在日本,五子棋开始是在皇宫贵族之前流行的,之后才传播到日本民间,并在日本民间流行。

现在,职业连珠也称为一种国际上的比赛内容。1988年国际连珠比赛联盟正式成立了,其中包含9个国家。现在世界上有数十个国家和地区加入了国际连珠联盟,中国在1996年成为国际连珠联盟的正式会员。

1.2.2五子棋术语

1.天元:棋盘上最中间的那个点。

2.阳线:棋盘上那些可以看见的横线和阳线的总称。

3.阴线:棋盘上无实线相连接的隐形的斜线。

4.连:在棋盘上阴线或者阳线形成五个或者五个以上相同颜色不间隔紧密相连。

5.五连:棋盘上有五个相同颜色的棋子并且无间隔紧密相连形成的“连”。

6.长连:棋盘上有六个或者以上相同颜色的棋子并无间隔紧密相连形成的“连”。

7.活四:棋盘阳线或者阴线上有4个相同颜色的棋子不间隔紧密相连,并且这4个棋子的两端延长线上都存在一个无子交叉点与这4个棋子紧密相连。

8.冲四:除“活四”以外,下棋的时候能够形成五连,并且存在形成五连的局面。

9.连三:棋盘上阳线或者阴线上有3个相同颜色的棋子不间隔紧密相连,并且这3个棋子的两端延长线上最少存在一个,另一端最少有2个无子交叉点与这3个棋子紧密相连。

10.跳三:棋盘上只间隔一个无子交叉的连三,但是这个连三的两端的延长线上至少能存在一个这样的无子交叉点可以与这3个棋子连在一起的。[1]

1.2.3五子棋规则

1.无禁手规则

无禁手是一种玩法简单而且很古老的规则。

  1. 黑棋先下,并且第一手必须要下在棋盘的天元位置;
  2. 黑白两方轮流下棋;
  3. 最先把同种棋子形成“连”的就是优胜者。

2.禁手规则

在无禁手的规则下,黑棋先下棋的优势特别大。经过多次研究表明,在没有设定禁手规则的情况下,并且双方选手下棋水平都极高,但是先手还是一定会取得胜利。因此,为了限制先手的绝对优势,在一些五子棋对战的时候加入禁手规则。一般可以把禁手规则分为以下这三种情况:

  1. 三三禁手:黑子下子后能同时形成了多个活三的棋盘局面。
  2. 四四禁手:黑子下子后能同时形成了多个冲四或活四的棋盘局面。
  3. 长连禁手:黑子下子后能同时形成一个或者多个长连的棋盘局面。

3.其他规则

由于先手黑棋的优势很难通过设置禁手规则来完全消除,因此,在一些高级的五子棋比赛中,会出现以下三种特殊的规定。

  1. 指定打法:双方事先就约定以某一种棋局为开局,然后再继续进行比赛。
  2. 三手可交换:黑棋下第二手棋后,白棋可以根据当前局面判断局势是否对自己有利,如果不利可以和黑方交换棋子,即白方换成黑棋来下,前面的黑方则换成白棋来下。(这种规则只适用于随意开局)。采用这种规则之后,先手黑棋就不会形成必胜的开局了。
  3. 五手两打:黑棋在下第五步起的时候,必须下两步,白棋从两步其中任意选择一步让,然后双方继续下棋。

1.3研究内容与方法

本论文是以五子棋人机对战作为研究课题,在讨论人工智能中五子棋人机对战的一些相关技术后,重点是极大极小搜索算法和α-β剪枝技术进行研究,并通过Java来实现五子棋人机对战游戏程序。

1.4论文结构

第一章介绍棋类是人们生活中主要的益智游戏之一,介绍它的起源、游戏规则、专业术语等。

第二章介绍本程序的开发工具和运行环境等。

第三章主要介绍五子棋人机对战人工智能相关算法,比如博弈树搜索算法等。

第四章主要介绍五子棋人机对战游戏程序的设计与实现,包含对系统的设计与测试等方面。

第五章主要介绍对本论文的总结以及个人心得,对自己做出正确的评估,并严格要求自己争取做得更好。

二.开发工具与运行环境

2.1 开发工具

Java是一门可以编写跨平台应用软件的、面向对象的程序开发语言,是由Sun公司推出的。Java自从推出以后,就在在广大软件开发爱好者用迅速流行起来,而且发展非常的迅速,并对C 语言造成了很大的冲击效应。由于Java技术有很多特性,使得Java使用在各个方面,它同时全球最大的专业讨论社群。

Java特点:

1.Java语言是简单的,而且它的语法和我们初学者入门时学的C/C 语法有很多相似的地方,初学者都能够很快的学会并且使用。而且Java舍弃了C 里面诸如操作符重载、多继承等一些很复杂的特性,而且Java舍弃了C/C 语言里都有的指针这个概念。Java还提供了垃圾自动回收机制,使得软件开发人员就不会再担心内存不足的情况的发生了。

2.Java语言是面向对象的,通过对Java的学习我们会学到继承、接口等知识,这些都能体现出这一特性。

3.Java语言是健壮的,Java中出现异常时,异常处理机制能作出处理;清除不用程序占用的内存的垃圾自动回收机制是健壮性的重要体现。

剩余内容已隐藏,请支付后下载全文,论文总字数:14899字

相关图片展示:

您需要先支付 80元 才能查看全部内容!立即支付

该课题毕业论文、开题报告、外文翻译、程序设计、图纸设计等资料可联系客服协助查找;