五子棋游戏的设计与实现毕业论文

余年寄山水
705次浏览
2021年01月27日 22:22
最佳经验
本文由作者推荐

你在为谁工作心得体会-如何设开机密码

2021年1月27日发(作者:自由行走的花)




北京信息科技大学







计(论

文)











目:

五子棋游戏的设计与实现

院:

计算机学院

业:

计算科学与技术











毕业设计(论文)原创性声明和使用授权说明


原创性声明

本人郑重承诺:所呈交的毕业设计(论文)
,是我个人在指导教
师的指导下进行的研究工作及取得的成果。
尽我所知,
除文中特别加
以标注和 致谢的地方外,
不包含其他人或组织已经发表或公布过的研
究成果,
也不包含我为获得

及其它教育机构的学位或学历
而使用过的材料。对本研究提供过 帮助和做出过贡献的个人或集体,
均已在文中作了明确的说明并表示了谢意。







名:








期:






指导教师签名:









期:







使用授权说明


本人完全了解

大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电
子版本;学校有权保存毕业设计 (论文)的印刷本和电子版,并提供
目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制
手段保存论文;
在不以赢利为目的前提下,
学校可以公布论文的部分
或全部内 容。

作者签名:









期:








学位论文原创性声明

本人郑重声明:所呈交的论 文是本人在导师的指导下独立进行研
究所取得的研究成果。
除了文中特别加以标注引用的内容外 ,
本论文
不包含任何其他个人或集体已经发表或撰写的成果作品。
对本文的研
究做出重要贡献的个人和集体,
均已在文中以明确方式标明。
本人完
全意识到本声明的 法律后果由本人承担。


作者签名:





日期:








学位论文版权使用授权书

本学位论文作者完全了解 学校有关保留、使用学位论文的规定,
同意学校保留并向国家有关部门或机构送交论文的复印件和电子版 ,
允许论文被查阅和借阅。本人授权




大 学可以将本学位
论文的全部或部分内容编入有关数据库进行检索,
可以采用影印、
缩< br>印或扫描等复制手段保存和汇编本学位论文。

涉密论文按学校规定处理。


作者签名:





日期:







导师签名:

日期:











指导教师评阅书



指导教师评价:

一、撰写(设计)过程

1
、学生在论文(设计)过程中的治学态度、工作精神















及格



不及格

2
、学生掌握专业知识、技能的扎实程度















及格



不及格

3
、学生综合运用所学知识和专业技能分析和解决问题的能力















及格



不及格

4
、研究方法的科学性;技术线路的可行性;设计方案的合理性















及格



不及格

5
、完成毕业论文(设计)期间的出勤情况















及格



不及格

二、论文(设计)质量

1
、论文(设计)的整体结构是否符合撰写规范?















及格



不及格

2
、是否完成指定的论文(设计)任务(包括装订及附件)?















及格



不及格

三、论文(设计)水平

1
、论文(设计)的理论意义或对解决实际问题的指导意义















及格



不及格

2
、论文的观念是否有新意?设计是否有创意?















及格



不及格

3
、论文(设计说明书)所体现的整体水平















及格



不及格

建议成绩:














及格



不及格

(在所选等级前的□内画“√”)

指导教师:

(签名)

单位:

(盖章)












评阅教师评阅书



评阅教师评价:

一、论文(设计)质量

1
、论文(设计)的整体结构是否符合撰写规范?















及格



不及格

2
、是否完成指定的论文(设计)任务(包括装订及附件)?















及格



不及格

二、论文(设计)水平

1
、论文(设计)的理论意义或对解决实际问题的指导意义















及格



不及格

2
、论文的观念是否有新意?设计是否有创意?















及格



不及格

3
、论文(设计说明书)所体现的整体水平















及格



不及格

建议成绩:














及格



不及格

(在所选等级前的□内画“√”)

评阅教师:

(签名)

单位:

(盖章)









摘要



教研室(或答辩小组)及教学系意见



教研室(或答辩小组)评价:

一、答辩过程

1
、毕业论文(设计)的基本要点和见解的叙述情况















及格



不及格

2
、对答辩问题的反应、理解、表达情况















及格



不及格

3
、学生答辩过程中的精神状态















及格



不及格

二、论文(设计)质量

1
、论文(设计)的整体结构是否符合撰写规范?















及格



不及格

2
、是否完成指定的论文(设计)任务(包括装订及附件)?















及格



不及格

三、论文(设计)水平

1
、论文(设计)的理论意义或对解决实际问题的指导意义















及格



不及格

2
、论文的观念是否有新意?设计是否有创意?















及格



不及格

3
、论文(设计说明书)所体现的整体水平















及格



不及格

评定成绩:














及格



不及格

(在所选等级前的□内画“√”)

教研室主任(或答辩小组组长):

(签名)







教学系意见:


系主任:

(签名)











摘要













随 着经济的发展,社会竞争的激烈,现在社会进入了竞争的时代。上班族为了完成公司业务,
每天超负荷的 工作;
学生为了不落后他人每天早起晚睡不断地学习
,
压力巨大。
所以为了缓 解大家的
压力,使大家在工作、学习之余娱乐一下,活跃大脑,提高工作、学习效率,我本人设计了一个 简
易的五子棋游戏。

本系统将利用五子棋游戏作为研究对象,在
Windo ws
平台下,运用
java
语言设计的一个能够
实现人机对战的简单游戏。该 系统涉及到人工智能方面的知识,而计算机博弈是人工智能研究的一
个重要分支,其中还包括几个重要的 搜索算法。只有通过一定的研究,才能实现五子棋的人机对战
功能。



关键词:
人工智能;

计算机博弈



搜索算法



五子棋;













Abstract




Abstract






With development of economy, social competition is intense, now society has entered
into
the
competition
era.
Office
worker
in
order
to
complete
the
company
business,
overworked
every
day;
For
catching
up
with
others,
the
student
rises
early,
sleeps
late
and
studies hard. The pressure builds up. So in order to alleviate the pressure, make everyone all
over
the
job,
study
entertained,
active
brain,
improve
work,
learning
efficiency,
I
design
a
simple renju.

This
system
will
take
the
object
of
study
using
the
renju,
designs
one
to
be
able
to
realize the man-machine under the Windows platform with
Java language
to the simple game
which fights.
The system involves knowledge of artificial intelligence, and the computer game
is one of the important research on artificial intelligence branch, including several important
search
algorithm.
Only
through
certain
research,
can
realize
renju
against
function
Man-machine.



Keywords:

a
rtificial intelligence



computer game



search algorithm


renju

















目录




目录





....................... ...................................
错误!未定义书签。

Abstract

........... ..............................................
错误!未定义书签。

第一章

概述

.< br>............................................... ..................... 1

1.1
开发背景
.................................................. ................ 1

1.2
课题意义
.... .................................................. ............ 1

1.3
五子棋的发展与现状

.
............................................ ............ 2

1.4
研究内容
........ .................................................. ........ 5

第二章

五子棋程序的介绍

................................................. ...... 6

2.1
五子棋程序的基本功能

.
................................................. ..... 6

2.2
开发运行环境
.............. ................................................. 6

2.3
软件开发工具及开发语言介绍

.
... ............................................. 6

2.4
五子棋程序功能的设计

.
...... ................................................ 8

第三章

五子棋的总体设计

........ .............................................. 10

3.1
人机界面的实现及鼠标事件的监听

.
........................................... 10

3.2
按钮功能的实现

.
............... ............................................ 13

3.3
棋子表示
.................... ............................................. 15

3.4
下棋表示
.................... ............................................. 16

第四章



五子棋的
AI
算法
......................... ............................. 18

4.1
电脑智能搜索
....................................... ....................... 18

4.2
电脑胜负的判断

.
......................... .................................. 18

第五章

五子棋软件测试
.................. ..................................... 21

5.1
软件测试的定义

.
............... ............................................ 21

5.2
界面测试
.................... ............................................. 21

5.3
数据的测试
.................... ............................................ 25

5.4
用户验收测试
................... ........................................... 25

结束语

.
............................. .............................................. 27

参考文献

.......................... ............................................... 25












五子棋游戏的设计与实现



第一章




概述


本章主 要介绍毕业设计的开发背景、
课题意义,
有关计算机人工智能方面的知识以及五子棋的
发展与现状,以及毕业设计的研究内容、方向。


1.1
开发背景

随着计算机技术和互联网的飞速发展,< br>游戏软件是当今世界发展最迅速
,
最有影响力
,
最有潜力
与活 力的领域之一

电脑游戏的出现为人们提供了新的娱乐平台,
丰富了人们的业余生活。
因此与游
戏有关的软件深受广大青少年的喜爱。随着近几年来软件技术的不断进步、不断发展, 软件游戏的
操作要求越来越简单,大多数游戏普通人学几分钟就能会玩,甚至连老年人也慢慢爱上了它。

第二次世界大战以后
,
电子计算机技术得到了突飞猛进的发展
。< br>在众多国家中美国的计算机技
术发展最为迅速。
1946

2
月,世界上第一台电子数字计算机
(ENIAC)
在美国宾夕法尼亚大学建造
完成。< br>ENIAC
机的问世
,
表明了电子数字计算机时代的到来,具有划时代的伟大意 义,是科学技术发
展史上的重大里程碑。我国也不落后,在
1956
年研制成功国产计 算机的。
1958
年和
1959
年我国先
后自主研制成功国产小型和 大型电子管计算机。
后来出现了集成电路和大规模集成电路
,
使电子子计
算机 一代一代实现更新
,
性能越来越高,
计算速度越来越快,
硬件方面的不断发展 促使了软件技术也
迅速发展。
在美国
,
集中了许多计算机软件的设计人才,
他们工作之余
,
时常喜爱编一种能与人斗智的
“游戏”
,以此来锻炼编程的能力

这种“游戏”花样繁多
,
但其特点都是利用计算 机软件事先设计好
的“分析”

“判断”能力反过来与人较量

由于 不断修改更新
,
使计算机的“智力”水平与人难分高


到了
90
年代,游戏软件已经为世界各国的人使用,所谓游戏软件通常是指用各种程序和动画效
果 相结合起来的软件产品,我们称之为

游戏软件

。目前,在网络上我们经常看到 的大型
3D
网络游
戏和
WEBGAME
网页游戏等都是通过用


MAYA

FLASH
、等动画软件和
JAVA

C++

VB
、等程序
语言相结合而开发出来的,所以叫游戏软 件。其中
BLACKISLAND

Blizzard.
这两个强大的游戏制
作组对游戏软件的发展起到了巨大的带动作用,还有中国的洛河工作室在国内也起到了巨大作用,
他们让很多很多人喜欢上了游戏软件,
打开了这个市场。
如今游戏软件产业已经受到了广泛的 关注,
它年轻有潜力而且吸引人,让人们日益丰富的生活需求得以满足。

而五子棋游 戏的诞生更是吸引着不同年龄段的人群,无论男女老少都可以玩,都喜欢玩,而当
前微型计算机已经是在 广大人群中流行着,用电脑来下五子棋更是一种时尚。现在网络上出现了各
种各样的五子棋软件,有大师 级的、新手级的等等。所有这些都满足了不同人群的需要,所以当前
五子棋越来越被许多人所熟悉。目前 的五子棋程序的发展也非常快,从最初的双人发展到人机(有
AI

,然后到现在的网 络对战,已经受到越来越多人的喜爱和重视。


1.2
课题意义

人类社会经历了五千多年的农业文明时代,
又经历了三百多年的工 业文明时代。
经过漫长时间
的发展,人类文明取得的不可想象的进步,人也变的越来越聪明了。

人类之所以变得聪明,是因为我们人类一直不断地再实践中思考,在思考中实践。五子棋不仅
能增强思维能力,提高记忆力,而且富含哲理,有助于修身养性。五子棋既有现代休闲的明显特征
1

五子棋游戏的设计与实现


“短、平、快”
,又 有古典哲学的高深学问“阴阳易理”
;它既有简单易学的特性,为人民群众所喜
闻乐见,又有深 奥的技巧和高水平的国际性比赛;它的棋文化源渊流长,具有东方的神秘和西方的
直观;既有“场”的概 念,亦有“点”的连接。它是中西文化的交流点,是古今哲理的结晶。

五子棋游戏不但容易上 手,而且它区别于别的游戏,它不但能使人娱乐,而且能使人的头脑变
得更加聪明。而五子棋对战有两种 模式:一
.
人机对战;二
.
双人对战。这些给人无限乐趣的用途正
是 人工智能的杰作。正因为这样它鼓励着人们对它不断研究,这在很大程度上促进了人工智能的发
展,反过 来人工智能的理论和技术上的突破能够使五子棋程序更完美、更受欢迎!

同时,
五子 棋游戏程序的开发也使得五子棋这个游戏得到了广泛的推广,
让世界各地的人们知
道五子棋,随 时地玩上五子棋,这已经不再是梦想了。五子棋游戏程序使得越来越多的人喜欢上了
五子棋,热爱下五子 棋,它是具有很好的带动性的。随着互联网络的不断普及,越来越多的人可以
在网络上就能够与他人下五 子棋了。


1.3
人工智能介绍

人类的自然智能 伴随着人类活动时时处处都存在。人类的许多活动,如解题、下猜谜、讨论、
编制计划和编程,甚至驾车 、骑车等,都需要智能。如果机器能够完成这些任务,那么就可以认为
机器已经具有某种程度的“人工智 能”
。正因为这样积累了很多与人工智能有关的知识。在一次历史
性的聚会中人工智能诞生了。 为使计算机变得更“聪明”
,或者说是计算机具有智能,
1965
年夏季,
在 美国达特莫斯大学举行了一次为期两个月的夏季学术研讨会。
10
位来自美国数学、神经学、心 理
学、信息科学和计算机科学方面的杰出年轻科学家,在一起共同学习和探讨了用机器模拟人类智能的有关问题,并且麦卡锡提议正式采用了“人工智能
AI(Artificial Intelli gence)
”这一术语。
从而,
一个以研究如何用机器来模拟人类智能的新兴学科< br>--
人工智能诞生了。
人工智能
(Artificial
Intelligence)
,英文缩写为
AI
。它是研究、开发用于模拟 、延伸和扩展人的智能的理论、方法、
技术及应用系统的一门新的技术科学。
人工智能是计算机 科学的一个分支,
它企图了解智能的实质,
并生产出一种新的能以人类智能相似的方式做出反应 的智能机器,该领域的研究包括机器人、语言
识别、图像识别、自然语言处理和专家系统等。人工智能的 发展给五子棋赋予了新的生命。随着对
人工智能的不断研究,计算机博弈也得到了飞速发展。机器博弈被 认为是人工智能领域最具挑战性
的研究方向之一。
国际象棋的计算机博弈已经有了很长的历史< br>,
并且经历了一场波澜壮阔的

搏杀

深蓝

计算 机的胜利也给人类留下了难以忘怀的记忆。经过
30
多年的研究,人工智能在现实生活中
得到了不少瞩目的成果,而这些成果已经建立了一些具有一定“智能”的
AI
系统,例如专家 系统、
定理证明系统、集成电路设计与分析系统、自然语言翻译系统、智能信息检索系统、疾病诊断系统
等。
除了这重要的成果之外,
还有大受人们欢迎的
“智能系统”
,< br>比如现在在网络上出现的网络游戏、
围棋、象棋、五子棋游戏程序等等,这些都是人工智能的成果 ,它们极大地改变了人们的生活、给
人类带来了快乐。


1.4
五子棋的发展与现状

1.4.1
五子棋游戏规则

对局 开始时,
先由执黑棋一方将一枚棋子落在天元点上,
然后由执白棋一方在黑棋周围的交叉
点上落子。但是,为了尊重对方和礼貌起见,持白棋的一方通常将盘面的第二着棋布在自己河界的
2

五子棋游戏的设计与实现


一侧,即直止或斜止。此后黑白双方 轮流落子,直到某一方首先在棋盘的横线、纵线或斜线上形成
连续五子或五子以上〔仅对白棋而言〕,则该方就算获胜。连珠五子棋的一个特点是先行的一方优势
很大,因此在职业比赛中对黑方做了种 种限制,以利公平竞争。目前五子棋的比赛规则如下:


1


黑先、白后,从天元开始相互顺序落子;


2


最先在棋盘横向、纵向或斜向形成连续的同色五个棋子的一方为胜;


3


黑棋禁手判负、白棋无禁手。黑棋禁手有“三、三”

“四、四”和“长连”
,
包括“四、
三、三”和“四、四、三”
。黑棋只能以“四、三”取胜;


4


如分不出胜负,则到为平局;


5


五连与禁手同时形成,判胜;


6


黑方禁 手形成时,
白方应立即指出。
若白方未发现或发现后不立即指出,
反而继续落子,则禁手失效,不再判黑方负。


1


五子棋是黑白 双方或两个人之间的竞技活动,
由于对黑白双方规则不同,
黑棋必须先行。
一般采用猜 先的方法来决定谁执黑先行,即双方各抓一种颜色的几枚棋子,大数减小数,单数双方
交换,偶数不换;


2


禁手示例:

┼●●┼┼ ┼┼┼┼┼ ┼●●X┼

┼┼X┼┼ ┼┼●┼┼ ┼┼┼┼┼

┼┼┼●┼ ┼●X●┼ ┼●┼┼┼

┼┼●┼┼ ┼┼●┼┼ ●┼┼┼┼

┼┼┼┼┼ ┼┼┼┼┼ ┼┼┼┼┼

X
为三、三禁手


┼┼┼┼┼ ┼┼●┼┼

X●●●┼ ┼┼┼┼┼

┼●┼┼┼ ●●X●┼

┼┼●┼┼ ┼┼●┼┼

┼┼┼●┼ ┼┼●┼┼

┼┼┼┼┼ ┼┼┼┼┼

X
为四、四禁手


┼┼┼┼┼┼┼┼

┼●●X●●●┼

┼┼┼┼┼┼┼┼

X
为长连禁手


3


黑方在落下关键 的第五子即形成五连的同时,如又形成禁手,此时因黑方已经成五,而
“五”在五子棋中是至高无上的, 故禁手失效,黑方胜;


4


所谓黑方形成禁手,< br>是指黑方落下一子同时形成两个或两个以上的活三、
冲四及长连等。
此时白方应立即指出 ,自然而胜。

3

五子棋游戏的设计与实现



1.4.2
五子棋的发展与现状

五子棋是起源于中国古代 的传统黑白棋种之一。现代五子棋日文称之为“連珠”
,英译为

Renju

,英文称之为“
Gobang
”或“
FIR


Five in a Row
的缩写)
,亦有“连五子”

“五子连”

“串珠”

“五目”

“五目碰”

“五格” 等多种称谓。

到了
21
世纪已经出现了不少棋类,目前按棋类的属性分类如下
:
1.
按参与人数分类(
Player



单人游戏,如华容道等滑块类游戏;

双人游戏,如象棋、围棋、五子棋等。在棋类中双人参与的棋类占绝大多数;

多人游戏,如跳棋。

一般说来,参与人数越多,对手就越多,情况就越发复杂。

2.
按兵种多少分类(
Pieces, Materials

< br>单一兵种,如围棋、五子棋、苏拉卡尔塔(
Surakarta

、亚马逊(< br>Amazons
)等;

多兵种,如国际象棋、中国象棋、日本将棋等。

兵种的增加,意味着着法的复杂程度增加,掌握起来更加困难。

3.
按着法分类(
Move


走子类:开局前双方摆好,开局后轮流走动棋子。如象棋、国际象棋、跳棋等;

添子类:开局前盘面无子,开局后轮流放入棋子。如围棋、五子棋、六子棋等;

吃子类:对局过程中可以吃掉对方的棋子。如象棋、国际象棋、围棋等;

混合类:在 填子的过程中可以吃子(围棋)
;在走子过程中可以吃子,还可以填子(日本将棋)


通常情况弈棋双方轮流施着,各走(下)一步。但是有的棋类在一定条件下一方是可以连续施着的,即连续走多步,可成为轮(
Turn

。如跳棋、西洋跳棋、黑白棋(
R eversi,
Othello

、点格棋(
Dots
and Boxes
)等。

4.
按胜负判决分类(
Win-Lose- Draw


擒获首领:象棋,国际象棋等;

摆成形状:连珠类——井字棋、五子棋、六子棋等;

占领地域:围棋、点格棋等;

剩余子粒:黑白棋、苏拉卡尔塔等;

活动余地:亚马逊等;

到目标地:
跳棋、
一字棋、
牛角棋 等。
在所有棋类中五子棋发展最为迅速,
在人群中最受欢迎!

这一棋类运动 已迅速在国际上发展起来。
外国人都十分看好这一毫不起眼的智力游戏,
并认为
五子棋 不仅能提高思维、开发智力、手脑并用、修身养性

而且富含哲理,具有东方的神秘和西方的< br>直观,是中西文化的交汇点。许多国家的人对五子棋都有不同的爱称,例如韩国人把五子棋称之为
“情侣棋”,言下之意是情人之间下五子棋有利于增加情感的交流;欧洲人称之为“中老年棋”,
表示五 子棋适合中老年人的生理特点和思维方式;美洲人喜欢将五子棋称之为“商业棋”,就是说
商人谈生意时 可边下棋边谈生意,棋下完了生意也谈成了。由此可见,尽管国度不同,语言各异,
但人们都可以借助五 子棋这一简单而又深奥的棋艺进行交流、比赛,增进友谊。

4

五子棋游戏的设计与实现


十余年来,随着各地五子棋组织的建立和五子棋 的逐步普及,各种五子棋比赛应运而生,一些
民间五子棋组织自筹经费与地方有关部门合作,运作了不少 民间比赛。从国内的比赛来看,北京、
天津、上海、镇江、吉林、黑龙江、安徽、浙江等地先后自筹经费 举办了地方性的五子棋比赛,同
时,地区间的交流也不断增加,如
1997
年举办的京 津冀五子棋对抗赛、
2000
年京津五子棋团体对
抗赛、
2000
年 在辽宁铁岭举办的
“中行杯”
北方五子棋友好邀请赛、在江苏镇江举办的
“一品梅杯”
江苏五子棋邀请赛等。
2001
年国家体育总局批准试办全国性五子棋比赛后,中国棋 院在
2002
年和
2003
年连续举办了两届全国五子棋邀请赛,吸引了全国 各地的高手参加,取得了圆满成功。
2004

10
月,中国棋院将举办第四 届全国五子棋邀请赛。全国五子棋邀请赛作为全国参赛人数最多,规模
最大,水平最高的比赛,已经成为 一项全国性五子棋的传统赛事。

到了
21
世纪五子棋游戏在网络上面是非常 火暴的,而且在棋牌游戏里面玩家人数排名总会占
到很前面,不愧是风靡全球的棋牌游戏啊!在未来中, 将会有越来越多的人关注五子棋,喜欢五子
棋,那么将其变为商业化也会越来越多,而且还可以以教育孩 子的方式来将其嵌套进去,或者用来
做测试等等。随着人工智能技术的不断进步,我相信今后的五子棋游 戏将会更加精彩、更加完善,
让我们拭目以待吧。


1.5
研究内容

本游戏是在
Windows
环境下完成一个简易五子棋游 戏的设计。
五子棋是人工智能的一个成果之
一,它涉及到计算机博弈理论,棋盘表示、走法生成 以及搜索算法等知识,最终实现人机对战。完
成后,要提交演示系统和相关程序、提交毕业论文。演示系 统要能够运行正常、能够进行人机对战,
并通过此次毕业设计,对计算机博弈理论有了更加深入、透彻的 了解。通过这次实践最终能够提高
自己的学习能力、思维能力且培养了一定的开发能力。












5

五子棋游戏的设计与实现



第二章




五子棋程序的介绍

< br>本章主要是介绍该五子棋系统的基本功能和其结构图
,
并对实现该系统的开发工具、运行 环境
和开发语言做了较为详细的阐释。


2.1
五子棋程序的基本功能

1.
显示一个十五行十五列的五子棋棋盘。

2.
用鼠标点击棋盘上的交叉点处
,
则会准确地在该位置显示出棋子。

3.
玩家为黑方先下棋
,
可以从天元
(
指棋盘的中心点
,
该点颜色够深
,
容易看出来
)
先落子
,
也可
以从其它地方下子,电脑为白方。

4.
可以自动判断游戏是否结束,是 否黑方或者是白方已经胜利,并且跳出对话框来提示玩家。

5.
在游戏棋盘上方会有 一个游戏信息,
这个游戏信息是用来提示当前是黑白双方的哪一方下子
,
玩家可以根据 这个提示来下棋,而不会导致不清楚轮到哪一方下棋。

6.
可以重新开始游戏,并且 有认输功能,在下棋时如果玩家点击认输按钮,则给出提示“玩家
认输,电脑赢!”。
7.
本五子棋有相应的提示功能,
对玩家的一些错误的操作给出一定的提示,
比如 误点击有棋子
的棋盘交叉点。


2.2
开发运行环境

1.
中央处理器(
CPU


Intel
酷睿
2
双核
P7350 2.00GHz
2.
内存:
2.00GB
3.
硬盘:
160GB
4.
操作系统:
Windows Vista(32

)
5.
开发工具:
eclipse-win32-callisto
6.
编程语言:
java

2.3
软件开发工具及开发语言介绍

2.3.1
开发工具
--Eclipse
Eclipse
是一个开放源代码的、基于
Java
的可扩展开发平台。就其本身而言,它只是一 个框
架和一组服务,
用于通过插件组件构建开发环境。
这个组件主要针对希望扩展 Eclipse
的软件开发
人员,因为它允许他们构建与
Eclipse
环境无缝集成的工具。由于
Eclipse
中的每样东西都是插
件,对于给
Eclipse
提供插件,以及给用户提 供一致和统一的集成开发环境而言,所有工具开发人
员都具有同等的发挥场所。
幸运的是,Eclipse
附带了一个标准的插件集,
包括
Java
开发工具

Java
Development Tools
JDT


Eclipse
最初是由
IBM
公司开发的 替代商业软件
Visual Age for Java
的下一代
IDE
开发 环境,
2001

11
月贡献给开源社区,现在它由非营利软件供应商联盟< br>Eclipse
基金会(
Eclipse Foundation
)管理。

Eclipse
也是一个流行的针对
Java
编程的集成开发环境
(IDE)

它还可以用作编写其他语言(

6

五子棋游戏的设计与实现


如< br>C++

Ruby)
的环境,
合并各种种类工具的框架,
以及 创建桌面或服务器应用程序的富客户端平台。
如今,
Eclipse
开源社区拥有数十 个项目,其范围从商务智能到社会网络等各个方面。

Eclipse SDK
(软件开发者包)是
Eclipse Platform

JDT
PDE
所生产的组件合并,它们可
以一次下载。这些部分在一起提供了一个具有 丰富特性的开发环境,允许开发者有效地建造可以无
缝集成到
Eclipse Platform
中的工具。
Eclipse SDK

Eclipse项目生产的工具和来自其它开放源
代码的第三方软件组合而成。
Eclipse
项 目生产的软件以
GPL
发布,第三方组件有各自自身的许可
协议。


2.3.2
开发工具的安装


在安装
Ecli pse
之前,
先要安装
jdk

JDK
是整个
J ava
的核心,
包括了
Java
运行环境,
Java
工具和
Java
基础的类库。
JDK
是学好
Java
的第一步。我 下载的是
jdk-6u10-windows-i586-p
,我的
安装目录为
F:java,
我设定环境变量如下:


操作:

我的电脑
(
右键
) ---->
系统特性
---->
高级
---->
环境变量
:
环境变量:
path

F

javabin
Classpath:C:UsersAdministrator
接着下载
Eclipse
直接解压就可以使用了。


2.3.3
开发工具的使用

Java
项目包含用于构建< br>java
程序的源代码和相关文件。创建一个
java
项目主要分为以下
几步:


.
选择主菜单“文件→新建→项目”
,在弹出的窗口中 选择“
java
项目”


二.单击“下一步”按钮,在“项目名称 ”文本框中输入项目名称,工作空间
workplace
中将
会建立一个同名项目。项 目布局选择“创建单独的源文件和输出文件夹”选项,这样会生成两个目
录:
src

bin
,前者用来存放源代码,后者用来保存编译后的
class
文件。

.
单击“完成”按钮,就会看到在“导航器视图”中多了一个项目,此项目有 两个配置文件
和两个空目录
src

bin


四 .在工具栏按钮,选择“其他”选项。在弹出的“新建”窗口的左部列表中选择“类”这一
项。

五.
在弹出的
“新建
java
类”
窗口输入类名,
比如
HelloWorld
输入包名
,
并选中
public
static void main(String[]args)
选项来自动创建一个
main
方法。

六.单击“完成”按钮后,一个代码编辑器被打开了。

七.在编辑器中加入相应的代码。

八.点击按钮旁小黑三角形,选择运行“
java
应用程序”来运行
HelloWorld
程序。


2.3.4
开发语言
--java
Java
,是由
Sun
Microsystems
公司于
1995

5
月推出的< br>Java
程序设计语言和
Java
平台的总
称。用
Java< br>实现的
HotJava
浏览器(支持
Java
applet
)显示了
Java
的魅力:
跨平台、动态的
Web

Int ernet
计算。



7

五子棋游戏的设计与实现


Java
语言具有以下几个特性:

1

Java
语言是简单的。
Java
语言的语法与
C
语言和
C++
语言 很接近,使得大多数程序员很容
易学习和使用
Java


2

Java
语言是一个面向对象的。
Java
语言提供类、接口和继承等原 语,为了简单起见,只支
持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制 (关键字为
implements



3

Ja va
语言是分布式的。
Java
语言支持
Internet
应用的开 发,在基本的
Java
应用编程接口
中有一个网络应用编程接口(
java net

,它提供了用于网络应用编程的类库,包括
URL

URL Connection

Socket

ServerSocket
等。

4

Java
语言是健壮 的。
Java
的强类型机制、异常处理、废料的自动收集等是
Java
程序健 壮
性的重要保证。

5

Java
语言是安全的。
Java
通常被用在网络环境中,为此,
Java
提供了一个安全机制以防
恶 意代码的攻击。

6

Java
语言是体系结构中立的。
J ava
程序(后缀为
java
的文件)在
Java
平台上被编译为体
系结构中立的字节码格式
(后缀为
class
的文件)
,
然后可以在实现这个
Java
平台的任何系统中运
行。

7

Java
语言是可移植的。这种可移植性来源于体系结构中立性,另外,
J ava
还严格规定了各
个基本数据类型的长度。

8

Ja va
语言是解释型的。如前所述,
Java
程序在
Java
平台上被 编译为字节码格式,

然后可
以在实现这个
Java
平台的任何系统中运行。

9

Java
是高性能的。与那些解释型的高级脚本语言相比,
Java
的确是高性能的。

10

Java
语言是多线程的。在
Java
语言中,线程是一种特殊的对象,它必须由
Thread
类或
其子( 孙)类来创建。

11

Java
语言是动态的。
Java
语言的设计目标之一是适应于动态变化的环境。
Java
程序需要
的类能够动 态地被载入到运行环境,也可以通过网络来载入所需要的类。

Java
语言的优良特 性使得
Java
应用具有无比的健壮性和可靠性,这也减少了应用系统的维护
费用。< br>Java
对对象技术的全面支持和
Java
平台内嵌的
API
能缩短应用系统的开发时间并降低成本。
Java
的编译一次,到处可运行的特性使得它能够提 供一个随处可用的开放结构和在多平台之间传递
信息的低成本方式。特别是
Java
企 业应用编程接口(
Java
Enterprise
APIs
)为企业计算及电子商
务应用系统提供了有关技术和丰富的类库。


2.4
五子棋程序功能的设计

本五子棋游戏主要的有六大 功能它们分别是:开始游戏、游戏说明、认输、关于和退出。
2.4
图为软件功能结构图:




8

五子棋游戏的设计与实现






五子棋



游戏








退
















2.1
软件功能结构图















9

帮助










五子棋游戏的设计与实现



第三章




五子棋的总体设计


一个好的软件产品, 首先是要有一个好的人机界面,也就是说给人的第一感觉是美好的、轻松
的。接着是简单明了的操作,界 面上按钮够少,令玩家容易上手。因此本章主要对本软件的游戏界
面及相关功能、及玩家落子的实现进行 详细的介绍。


3.1
人机界面的实现及鼠标事件的监听

3.1.1
应用程序的窗口生成

在这个模块里主要用了

包 ,
该包提供了各种
swing
组件的类和接口。
在这个模块
里用了两 个类

类和
import
类。
JPanel
类使用了
Swing
体系结构的的扩展面板类,可以加入到
JFrame

,
它自身是个容器。
JFrame
类也是一个容器,允
许程序员把其他组件添 加到它里面,把它们组织起来,并把它们呈现给用户。
JFrame
实际上不仅仅
让 程序员把组件放入其中并呈现给用户。
比起它表面上的简单性,
它实际上是
Swing
包中最复杂的
组件。虽然这样但是这两个类还是有区别的:
JFrame
是最底层,
JPanel
是置于其面上,同一个界面
只有一个
JFr ame
,一个
JFrame
可以放多个
JPanel
。本次设置的窗 口首先是设置窗口大小,这个大
小要适中,不宜过大,否则有一部分没法在电脑上显示出来,大小设定以 后要在电脑上显示出来,
所以还要设定一个起始坐标,既是窗口左上角的坐标。从人们的使用习惯来说窗 口最好在电脑屏幕
中间显示出来。



本次设置的窗口用到的部分关键代码如下:

jFrame = new JFrame();//
新建一个新的的窗口

e(500, 500);
//
设置窗体大小

tentPane(getJContentPane());
le(
简易五子棋

//
给窗体设置名称

ation(400,150);
//
窗体位置设置大小不可变

izable(false);
//
设置关闭方式
:
窗口关闭后程序结束

aultCloseOperation(_ON_CLOSE)


运行后结果如图
3.1


10

五子棋游戏的设计与实现





3.1
游戏启动界面


3.1.2
人机界面的生成

人机界面不但包括棋盘,还包括相应的背景图片。另外图片颜色不能 太淡,太淡犹如不存在一
样,太深看起来不舒服。所以图片的色调要趋于这两者之间,偏于柔和,这样给 人一种愉悦感。

背景图片的大小一定要适中,否则后面的一些功能无法显示出来(比如相应的 按钮)在创建完
成一个基本窗口后,将游戏背景图片和棋盘加载进窗口界面,并加入相应的控制按键,就 得到了一
个简单的棋盘。首先是用



声明一个它的对象
imgURL
而这个对象是指向就是
imgURL
的值就是
ource

path
)。获得图片用
getRe source()
方法获取,资
源放在编译后的文件里
bin

获取 图片后调用
drawImage
方法,
将图片放在在指定位置并且按原
始大小绘制指定的
Image
获取图片部分代码如下:

URL imgURL = ource(
URL imgURL1 = ource(
URL imgURL2 = ource(
URL imgURL3 = ource(
读取图片代码片段如下:

backgroundImage=(imgURL);
11

五子棋游戏的设计与实现


whiteImage1=(imgURL1);
blackImage2=(imgURL2);
chessboardImage=(imgURL3)


绘制图片的部分代码如下:

age(backgroundImage, 0, 0,
this
);
age(chessboardImage, 10, 50, 363, 364,
this
);
运行结果如图
3.2





3.2
运行结果图


3.1.3
鼠标事件的监听

MouseEvent
是公有类。这个 类封装了与鼠标事件有关的信息,包括鼠标单击和处理鼠标事件。
首先是添加事件监听器
seL istener(this)

this

java
中的一个特殊的 对象引用。

个对象对其自身的引用称为
this
引用。
this< br>引用被隐式地引用一个对象的实例变量和方法)
,鼠标
事件由鼠标事件源产生,
并且由实现了
MouseListener
接口的处理对象。
发送
Mouse Event
类的实例
给鼠标监视器事件以帮助处理鼠标事件首先判断是否该玩家落子和胜负已分 及游戏是否开始,如确
12

五子棋游戏的设计与实现


实轮到玩家落子,则首先得到鼠标单击坐标,然后转换得到距离最近的落子点,并在这个落子点上
绘制 相应颜色的棋子,然后调用相应方法让计算机落子。代码片段如下:

public void mouseClicked(MouseEvent e) {




























































}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
if(canplay){
x=();
y=();
if(x>=18&&x<=379&&y>=58&&y<=580){























x=(x-18)/24;
y=(y-58)/24;
//
判断该坐标是否有棋子,没有则放棋子,有则显示已经有棋子对话框

if(allqz[x][y]==0){


















//
玩家鼠标点击的坐标设置为放黑子标志

allqz[x][y]=1;
message=
白方走棋

t();
boolean Winflag=();
if(Winflag){


}
if(canplay){
//
电脑通过最优算法获得最能够阻止玩家的黑棋成为< br>5
连得坐标
x,y
并把这个坐




//allqz[x][y]=2;

Baiqi();
JOptionPane
.
showMessageDialog
(this,

游戏结束:

canplay=false;
public void mousePressed(MouseEvent e) {
黑方胜

白方胜

标设置为放白子标记

message=
黑方走棋

t();

//
判断落棋后是否连成
5
个,即判断谁赢并游戏结束

13

五子棋游戏的设计与实现











































}
}







}
Winflag=();
if(Winflag){


}
}


JOptionPane
.
showMessageDialog
(this,

游戏结束:

canplay=false;
黑方胜

白方胜

else{

}

JOptionPane .
showMessageDialog
(this,
已经有棋子,请重新落子!

3.2
按钮功能的实现

Java
中的鼠标和键盘事件,使用
MouseListener
接口处理鼠标事件< br>.
鼠标事件有
5
种:按下鼠
标键,
释放鼠标键,点击鼠标键, 鼠标进入和鼠标退出。
鼠标事件类型是
MouseEvent
,主要方法有:

getX(),getY()
获取鼠标位置

getModifiers()
获取鼠标左键或者右键

getClickCount()
获取鼠标被点击的次数

getSource()
获取鼠标发生的事件源

事件源获得监视器的方法 是
addMouseListener()
,移去监视器的方法

removeMouseListener()
处理事件源发生的时间的事件的接口是
MouseListener ,
接口中有如下的方法

mousePressed(MouseEvent)
负责处理鼠标按下事件

mouseReleased(MouseEvent)
负责处理鼠标释放事件

mouseEntered(MouseEvent)
负责处理鼠标进入容器事件

mouseExited(MouseEvent)
负责处理鼠标离开事件

mouseClicked(MouseEvent)
负责处理点击事件

各按钮位置程序的实现如下:

“开始游戏”按 钮:
if(()>=401&&()<=469&&()>=51&&()<=79)
“游戏 说明”按钮:
if(()>=401&&()<=469&&()>=151&&()<=179) < br>“认输”按钮:
if(()>=401&&()<=469&&()>=252&&()<=28 0)
“关于”按钮:
if(()>=401&&()<=469&&()>=302&&() <=330)
“退出”按钮:
if(()>=401&&()<=469&&()>=351 &&()<=380)
“游戏信息”栏:
t(new Font(
黑体

14

你在为谁工作心得体会-如何设开机密码


你在为谁工作心得体会-如何设开机密码


你在为谁工作心得体会-如何设开机密码


你在为谁工作心得体会-如何设开机密码


你在为谁工作心得体会-如何设开机密码


你在为谁工作心得体会-如何设开机密码


你在为谁工作心得体会-如何设开机密码


你在为谁工作心得体会-如何设开机密码