计算机科学与技术游戏设计
更新时间:2024-07-02 09:26:01 阅读量: 综合文库 文档下载
西安科技大学高新学院 毕 业 设 计(论 文) 题 目: 五子棋的设计与实现
学 院: 机电信息学院
专 业: 计算机科学与技术
姓 名:
班级/学号 计科1101
指导老师:
起止时间:2014年6月23日 至2014年12月30日
摘 要
现如今是一个激烈并且而又快节奏的社会。一些打工族为了解决完成自己的必需任务,伴随着现在社会的飞速日新月异激烈发展以及激烈的竞争, 而我们作为学生为了一个好的工作日日夜夜也是废寝忘食学习钻研,天天超负担的努力学习工作;加重身心疲惫。至此为了缓和大家的学习工作压力,使得大家在学习、工作之后缓解压力,有利学习和工作效率,多活动活动大脑,我自己细心设计了这个有趣五子棋游戏。
本系统会以五子棋游戏为中心思想,在Windows7环境下,使用Dreamweaver、Editplus等开发工具,并且运用所学的网页编程Html语言、层叠样式表css以及直译式脚本语言Javascript等知识设计出一个可以完成人机对拼具有思维能力的简单小游戏。
因此,本系统,采用Html语言结合面向用户的软件界面设计创建出游戏的界面,在搭配层叠样式表css技术进行对界面的美化,加入颜色,图片、字体、布局等样式,对界面进一步的美化与调动,最后在已经创建好的界面上通过译式脚本语言Javascript创建电脑对象、棋子对象等等一系列需要使用的对象,再结合人工智能技术编写电脑对象的智能,使得电脑具有人的思维方式。最后给整个游戏贯穿起来。
此系统涉及了到我学的大量的知识,包括有人工智能导论、编译原理、数据结构、web开发技术、程序设计、面向用户的软件界面设计等中许多相关的知识,而计算机博弈其实就是人工智能需要研究的其中重要分支,包含了一些重要的算法以及构造。通过这些了解我觉得必需要努力学习查阅资料,才能实现我所要的这些功能。
关键字:计算机博弈,人工智能,五子棋,人机对战
I
Abstrict
Along with modern society the rapid development and fierce competition, changing and is now a fierce and the fast pace of society.Some workers in order to solve their essential task, super burden study hard work every day;And we as a student for a good work day and night also neglect their study study, increase the exhaustion of body and mind.At this point in order to ease everyone study work stress, relieve pressure after the study, work, make exercise the brain, the more favorable learning and work efficiency, I carefully designed the gobang game fun. This system will be centered on gobang game ideas, under the Windows environment, the use of development tools such as Dreamweaver, Editplus, and apply what they have learned web programming, cascading style sheets (CSS and Html language translation type scripting languages such as Javascript knowledge can design a complete man-machine to spell a simple little game of thinking ability.
Therefore, this system USES Html language user oriented software interface design to create the interface of the game, the collocation of cascading style sheets (CSS technology of interface beautification, add color, graphics, fonts, layout style, to further beautify and mobilize interface, and finally on the already created good interface through Javascript scripting language create computer object, pieces and so on a series of need to use the object, combined with artificial intelligence technology to write the object's intelligence, makes the computer has a way of thinking.Throughout the entire game up finally.
This system involves to I learn a lot of knowledge, including an introduction to artificial intelligence, compiling principle, data structure, programming, web development technology, user-oriented software interface design and so on many related knowledge, and the computer game is the need to study one of the important branch of artificial intelligence, contains some important algorithms and structure.So far I only after a lot of research and practice, is likely to finish in the gobang man-machine function.
Key words: computer game, artificial intelligence, gobang, man-machine, data structur
II
目录
目录
摘 要 ................................................................................................................................................................. I ABSTRICT .............................................................................................................................................................. II 1 概述 .................................................................................................................................................................. 1 1.1 开发背景 ............................................................................................................................................................ 1 1.2 课题意义 ............................................................................................................................................................ 2 1.3 人工智能介绍 .................................................................................................................................................... 2 1.4 五子棋规则 ........................................................................................................................................................ 3 1.4.2 五子棋的发展与现状................................................................................................................................ 4 1.5 研究内容 ............................................................................................................................................................ 5 2 五子棋程序的介绍 ........................................................................................................................................... 6 2.1 五子棋程序基本功能 ........................................................................................................................................ 6 2.2 开发运行环境 .................................................................................................................................................... 6 2.3 本软件开发的工具以及开发语言的介绍 ........................................................................................................ 6 2.3.1 开发工具---- Dreamweaver .................................................................................................................... 6 2.3.2 开发工具的安装与破解 ............................................................................................................................ 7 2.3.3 开发工具使用 ............................................................................................................................................. 7 2.3.4主要的开发语言—javascript(js) ............................................................................................................. 8 2.4 五子棋的程序功能设计..................................................................................................................................... 8 3 五子棋总体的设计 ........................................................................................................................................... 9 3.1 人机界面的实现以及鼠标事件的监听 ............................................................................................................. 9 3.1.1应用程序的界面生成 .................................................................................................................................. 9 3.1.2 人机界面的生成 ..................................................................................................................................... 11 3.1.3鼠标事件的监听 ........................................................................................................................................ 12 3.2 按钮的功能的实现 .......................................................................................................................................... 12 3.2.1 开始游戏功能按钮 ................................................................................................................................... 13 3.2.2 我要悔棋功能按钮 ................................................................................................................................... 13 3.2.3 游戏认输功能按钮 ................................................................................................................................... 13 3.2.4 游戏帮助功能按钮 ................................................................................................................................... 14 3.3 棋子的表示 ...................................................................................................................................................... 15 3.3.1 五子棋的棋子属性表示............................................................................................................................ 15 3.3.2 绘制棋子 ................................................................................................................................................... 15 3.4 下棋表示 .......................................................................................................................................................... 16 4 五子棋的AI算法 ............................................................................................................................................. 17 4.1 电脑的智能下棋 .............................................................................................................................................. 17 4.2 游戏的胜负的判断 .......................................................................................................................................... 18 5 软件测试 .......................................................................................................................................................... 19 5.1 软件的测试定义 .............................................................................................................................................. 19 5.2 界面测试 .......................................................................................................................................................... 19 5.3 数据的测试 ...................................................................................................................................................... 22 5.4 用户的验收测试 .............................................................................................................................................. 22 总结 ..................................................................................................................................................................... 23 致谢 ..................................................................................................................................................................... 24 参考文献 ............................................................................................................................................................. 25
III
五子棋游戏的设计与实现
1 概述
此章会详细的描述我所选题目的开发背景,介绍人工智能的重要原理,还有课题的意义,也会有所牵连五子棋游戏设计与实现的现状,我这次选这个题目的研究内容和方向。
1.1 开发背景
随着互联网和现在计算机技术快速发展,游戏程序现如今各地发展是最快速,最为有震慑力,最为有发展力以及活力领域之一?计算机的游戏的问世为大众们提供了这个全新娱乐平台,扩展了我们自由支配的时间。为此和Game有关程序软件将受到了无数人追捧。伴随着几年来程序软件的开发技术不断进步与不断发展,现游戏软件操作要求也是越来越简易多样化,但是绝大多数游戏的爱好者摸索一点时间便可以随心所欲玩耍,甚至连有些老年人也慢慢开始一点点喜欢上了它。
二战结束以后,计算机技术得了空前绝后发展空间?无数国家中美国计算机技术发展得最为快速。1946,第一台电计算机((ENIAC))在美国宾夕法尼亚大学得到制造完成。刚出世的ENIAC,一个新的时代也意味着降临那就是计算机电子时代的到来,对也这个重大意义的时代是时代的里程碑,对于我们的科技时代也是有着重大的足迹一个旗杆。地球上伟大的东方国度----中国也是不会甘于落后,我国也在1956年也制出了我们自己的电脑。在过后的几年里东方国度---中国完美的做出了电子管计算机包含大型和小型等。集成的电路的计算机在不就得后被制造出来,与此同时和大规模集成的电路的电脑也被开发出来,自此以后各种各样的计算机就层出不穷,各种综合能力也是不断变好,同时不管是计算速度还是运行效率也是得到发展,集中了大多计算机软件设计人才的美国,在工作之后,他们也时常编写一种可以和人拼智的“游戏”,为此来增强自己编程能力?这种“游戏”也是各式各样,但是万变不离其宗它们特点都是通过计算机中的软件事先设计好 “判断”和“分析”能力反来和人比斗的?由于它们不断的创新更改,使计算机的“智力”的水平与人难解高下啊?到了上一个世纪中的九十年代,游戏软件便早已成为世界各地人玩耍,所谓的游戏软件是指利用各种各样的程序跟动画效果组合一起的产品,我们便把他叫做作为\游戏软件\。到目前,互联网上我们也是可以看到的各种各样大型3D网络的游戏和WEBGAME的网页游戏等等它们都是大多是通过\、MAYA、FLASH、动画软件和面向对象JAVA、C++、VB、等等语言开发出来,所以我们才叫游戏软件。中国的一些组合给我国也是贡献很大很大的促进,中国起到了巨大作用工作组便是洛河工作室,他们让也越来越多人喜欢上了游戏,敲开了广阔的市场。到如今的游戏已经受到了很大关注,它年轻而又具有潜力的并且吸引人,让人们生活日益丰富起来。
而五子棋游戏诞生是吸引着各个不同年龄段的人群,这是一个老少皆宜的好游戏,而当前微型的计算机成为广大人群流行的时候,用电脑下五子棋便更是一种时尚。现如今网络上出现了的各式各样五子棋游戏,有难、有简单的等等。而这些所有的都满足了我们各
1
五子棋游戏的设计与实现
个人群的需要,所以当前的五子棋越来越被更多人熟悉。随着时代的发展各种有游戏快速的起步,其中包括我所涉及的游戏,得到很多人的喜爱。
1.2 课题意义
从古至今,人们从四只脚落地行走,发展到现在两足落地,发现火,和制造房子来居住,不仅从捕猎到圈养,等等现象,人类都是不管变得聪明
漫长人类史中,人类不断思考和积累经验,使得人们智力水平不断提高。而五子棋不仅仅需要人们思考,而且还可以借助提高记忆力水平,并且这个是富含哲理,可以助人们修身养性的,锻炼人的意志的。五子棋既夹杂着现代大量元素又蕴含着这古典哲学;它既有简单易学特性,又是有高深知识内涵,它会是一个人人喜爱把玩的智力物品,有是蕴含人类几千年的思维行动;它源渊流长着棋文化的内涵,结合中西方的补给以及吸收这世间的文化。它即是这全球文化交流河又会是从原始到现代哲理冰晶。
五子棋游戏会是一个极易上手的`游戏,但又会是一个很难走深游戏,它有区别于其它游戏,五子棋游戏它不仅仅可以使人娱乐这,这些更是可以使人头脑变得越来越聪明。五子棋决斗模式中两种:一种便是.人机对战;另一种便是.双人对战。这些都给人无限的乐趣它的用途正是人工智能的杰作。正因为这样优异各个方面知识人们不断的研究,知识极大促进了人工智能发展,反过来的人工智能理论与技术上突破也是使得五子棋的程序越来越完美以及受欢迎!
五子棋不断开发研究知识,五子棋推广速度飞快,这使得全球个地都慢慢了解了五子棋,也是正因为这样个越来越多人喜欢这五子棋。伴随着这互联网络的技术的不断发展下去,更多更多的人可以在这网络上和更广泛更广泛的人对决交流。
1.3 人工智能介绍
人工智能,在外国语言中有称作 ‘A I’。在开发和研究的道路上使得我们人类的智慧有所挖掘,探寻我们智慧理论以及方法和技术,人工智能也成为一科孕育而生的萌芽科学。 人工智能是可以计算机科学的一个很重要的分支,它的主要的目的是为了诠释这“智”的实在内质,以这个的理念为核心我们创造出一个个和人一摸一样的电脑机器,这个领域研究包含着机器人和语言识别和图像识别、自然的语言处理以及专家系统等。在历史中人工智能被得意提出,不同领域也对他开始研究和不同的见解,慢慢的得到了发展,以至于它被利用于世间不同的地方,(AI)人工智能它是一个包容着十分广泛科学,人工智能也是一个用不同领域的组合而成,比如说机器学习,计算机的视觉等等,概括来说,人工智能的研究的一个主要的目标是使得机器如同人一般具有人智能。,每一个时代每一个阶段我们对于一个技术理解是不一样的,人工智能也是一样的。在历史的长河中它不断吸收着得以发展和步进。因为人工智能是出生于计算机时代,以计算机作为媒介,因此电脑的发展进步直接的关系到这门科学。人工智能是包含这科学计算机、心理学论控制、自动化、仿生学、论信息、语言学、生物学、逻辑数理、医学还有哲学等多门科学的。它研究包含
2
五子棋游戏的设计与实现
了许多许多的内容,比如说像人的推理思考以及联想,还有认知能力,联想搜索以及学习记忆。
1.4 五子棋规则
首先是由执黑棋方的将一枚棋子落子到天元点上面,接着是由执白棋的一方会在黑棋周围的交叉的点上下子。可是,在礼貌的人与人之间会在黑子落子后将白子落入己方地界,即是斜止、直止这些地方。接着下棋黑白双方便轮流的落子,直到下棋中其中一方先在下子棋盘中横、纵、斜线上使形成连续不断五子或者是五子以上的〔只对白棋有效〕,则视该方就算是获胜的一方。对于持黑子的玩家来说在对局中是占尽了很大很大的便宜,在这中情况下,就会采取一定的措施,这样可以使得游戏更为公平公正。当前的五子棋对决的规则如下:
1、 执黑的先行,天元中落子;
2、 先会在横-竖-斜线的任意形成的五子相连着---->胜利; 3、 执黑的禁手判负-白棋的无禁手。黑棋的禁手有三个:
<1> “三—-—三”; <2> “四—-—四”;
<3> “长连”,执黑的只能通过“四----三”取得胜; 4、 如果分不出胜与负,则视为是平一局;
5、 五连和禁手要是同时出现的话,则判为胜;
6、 如果黑方在下棋的时候落子禁手,对方应该立马提出。如果没有看到,或者看到
了不说,则禁手失败。
7、 在五子棋中拿黑子棋子的选手是一定先下棋的,为了公平采取摇色子,大的执 黑子,如果大小一样,就重新来过一次。
<1> 禁手的例子:
- ●●-- - - - - --●●- - - + -- -- ●-- --- - - - - -●- -●+●- -●- -- - - ●-- -- ●-- ●-- -- - - - -- -- - -- - ---- +为三--三禁手 -- - - - - -● -- +●●●- - - - -- -●- - - ●●+●- --● - - - -●- - --- ● - - -●- -
3
五子棋游戏的设计与实现
--- - -
- -- - -
+为四--四禁手
-- - -- - - - -●●+●●●- -- - -- - - -
+为长的连禁手
1.4.2 五子棋的发展与现状
五子棋的起源国家是我国。在日本他们把我国的五子棋叫做“连珠“:”Renju‘这个是翻译英文、 “G0bang”这个是英文国家的称谓,这是说“FIR”(Five in a Row缩写),有“连五子”----“五子连”---“珠串”---“目五”-----“碰五目”----“格五”等等多种多样的称谓。
到了这21世纪便已经出现了很多很多棋类,这以棋类属性划分如下的几个类: 1. 按照参与的人数作为分类(Player):
a. 单人的挑战游戏,比如如华容道等等块状滑动类的游戏;
b. 双人的挑战游戏,比如中国象棋----围棋----五子棋等等; c. 多人的挑战游戏,比如跳棋之类。
通常的来说,竞参的人数越多的话,对手就会越多,情况也就是越为的复杂。
2. 按照兵种的多少作为分类(Pieces, Materials) a. 单一的兵种:比如围棋---五子棋等等;
b. 多 兵 种的:比如国际象棋----中国象棋----日本将棋等等。
兵种的不断的增加,意味着我们玩法的复杂程度也是不断增加。
3. 按照着法的分类(Move)
a. 走子一类:比如象棋----国际象棋---跳棋等等; b. 添子一类:比如围棋----五子棋----六子棋等等; c. 吃子一类:比如象棋----国际象棋----围棋等等;
d. 混合一类:比如围棋----将棋等等。 4. 按照胜负判决的分类(Win-Lose-Draw) a. 擒获首领的:比如象棋----国际象棋等等;
b. 摆成形状的:比如连珠类----井字棋----五子棋----六子棋等等; c. 占领地域的:比如围棋----点格棋等等; d. 剩余子粒的:比如黑白棋----苏拉卡尔塔等等; e. 活动余地的:比如亚马逊等等;
f. 到 目标 地:比如跳棋----一字棋----牛角棋等等。
这些年,全世界有很多五子棋联盟的成立以将五子棋深入群众,不同的联盟他们的规则也是不一样,有些的会和其他组织一起组织活动,参加的人也是四方各地。从我们国内
4
五子棋游戏的设计与实现
比赛来看看,如:北京---镇江---上海---吉林---黑龙江----天津---安徽---浙江等等,这些省份都不同时间举行比赛,应为各种五子棋联盟的诞生,人与人之间也是交流频繁,京津冀对抗赛在1997年举办了五子棋----我国的团体赛在2000年举行---“中行杯”在辽宁于2000举办,“一品梅杯”在江苏镇江哪里举办等等。
到如今,互联网愈来愈发达,于是将五子棋挪到了互联网上,五子棋在互联网上也是很多人参与,各种优越性的五子棋,随时间的推移,我想一定会越来越多人参与!!
1.5 研究内容
本游戏采用win764位系统环境下编写。人工智能在五子棋上也是很好的体现出来了,它是涉及到计算机的博弈理论,和棋盘表示---走法生成的以及搜索算法等等知识,最终为实现人机的对战。完成后,要可以提交演示的系统和相关的程序---提交毕业论文本。演示系统要能正确的运行----能够进行有效的人机对战,并且通过本次毕业设计,要对计算机博弈的理论有了更加深层次—更加透彻了解。一个暑假的研究学习,真真正正的体现了五子棋的魅力,使得我学习不断提高。
5
五子棋游戏的设计与实现
2 五子棋程序的介绍
本章重点会提及本游戏的设计思想,思维模式,结构,还有开发的工具,调试的环境等等做一一描述。
2.1 五子棋程序基本功能
1. 显示一个15X15的五子棋盘。
2. 轮到玩家落子时,鼠标下出现一个棋子,靠近某个交叉点时会有闪烁提示,当鼠标
点击时能
准确落子。
3. 玩家为执黑先行,可以任意落子。
4. 能够智能的判断游戏是否已经结束,识别黑方还是白方获得胜,并且有着明显的提示。
5. 在界面中有提示准备落子的一方作为提示
6. 有重新开始游戏和认输功能,点击认输时提示“电脑色赢!”。 7. 本游戏有一定的提示功能。
2.2 开发运行环境
1. 中央处理器(CPU):处理器 AMD A4-3305M APU with Radeon HD Graphics 双核 2. 内存:4.00GB 3. 硬盘:500GB
4. 操作系统:Windows 7(64位) 5. 开发工具:Dreamweaver 8 6. 编程语言:html、css、js
2.3 本软件开发的工具以及开发语言的介绍
2.3.1 开发工具---- Dreamweaver
Dreamweaver设计页面使用的人特别的多,在这个领域名声特别的大、使用也是一样----功能最为彪悍的一个软件,伴随着·Dreamweaver 8软件的发布,这更坚定了Dreamweaver在这个领域地位的坚立。Dreamware包含了横多功能,有网页开发----开发网站---管理站点的功能于一体,是一个可是化工具----在不同的操作系统系也可以使用----不同的浏览器也是兼容等特性,所有的这方面开发首先就会想到Dreamweaver软件。
6
五子棋游戏的设计与实现
3.1.3鼠标事件的监听
Onmouseover是mouse进入;onmouseout是mouse移出;onmousedown是mouse按下事件:
obj.onmouseover = function() {事件块},obj.onmouseOut = function(){事件块},obj.onmousedown = function() {事件块};obj是需要添加事件源的对象。
首先,鼠标移动在棋盘上,如果游戏开始并且轮到玩家执棋的时候,当鼠标进入某个棋子位置在鼠标移入事件块中让这个位置闪烁提示玩家可以下子,这是可以点击鼠标触发onMouseDown方法下子。如果不下子,当mouse移出这个棋位时,将fik关闭。
首先,给棋位对象添加鼠标进入触发将自定义的function对象给棋位对象的鼠标进入赋值,在代码体中,首先判读游戏是否开始并且这个位置是否已经存在如果游戏还未开始则提示游戏还未开始调用系统的alert函数,如果这个位置已经存在棋子则不做出任何提示,否则通过当前棋位对象的背景图片设置为当前用户的棋色图片并且调用当前棋位的flicker函数闪烁提示。
然后,给棋位添加鼠标离开事件,首先判断当前棋位是否存在flicker对象,如果存在则调用当前棋位的removeFlicker函数移除闪烁提示,否则不做任何处理
最后,给棋位添加鼠标落下事件,首先判断游戏是否已经开始如果游戏还未开始调用系统内置函数alert提示游戏还未开始,否则判断当前棋位是否已经存在,如果存在不作出任何提示否则创建落子声音通过内置文档对象的元素创建方法创建一个音频元素对象,通过音频元素对象的路径属性将资源文件中的声音文件加载进去,接着将当前棋位对象设置为已存在,并且标记点前棋位的样色属性标志位当前落子用户执棋色,同时判断悔棋队列中是否为空如果不为空则取消悔棋队列中的闪烁方法,并且将悔棋队列一次递推,将当前棋位对象插入到首位。然后调用checkWin函数检测当前落子是否构成胜利队列,如果成功则调用游戏结束函数,否则将下棋权限交给对方,取消自己用户角色提示灯,开启对方角色提示灯
3.2 按钮的功能的实现
在html网页中有好几种按钮,我选择了比较通用的按钮
12
五子棋游戏的设计与实现
3.2.1 开始游戏功能按钮
开始游戏按钮功能是进行本游戏的入口,在启动游戏之后,当点击开始游戏功能之后,方能进行游戏。
要生成开始按钮首先得穿件一个button,通过document.createElement(\为以后方便使用可以将创建的按钮赋值给star,创建一个按钮对象然后在在按钮上添加文字star.innerHTML = \开始
游戏\为了使得按钮在预先设定的地方我们需要给按钮添加一些属性position = \left = \为进一步给开始按钮美化,通过backgroundImage = \加载资源文件夹中的图片给按钮,生成按钮如图3-3:
图3-3
3.2.2 我要悔棋功能按钮
悔棋按钮功能是在游戏过程中出于疏忽不小心下错了棋,通过点击该按钮退回到上一步,也就是相当于回溯,为了游戏的公平起见,悔棋只能退回一步。
要生成悔棋按钮首先得穿件一个button,通过document.createElement(\为以后方便使用可以将创建的按钮赋值给back,创建一个按钮对象然后在在按钮上添加文字back.innerHTML = \我要
悔棋\为了使得按钮在预先设定的地方我们需要给按钮添加一些属性position = \left = \为进一步给开始按钮美化,通过backgroundImage = \加载资源文件夹中的图片给按钮,生成按钮如图3-4:
图3-4
3.2.3 游戏认输功能按钮
认输按钮功能是在游戏过程中觉得已经没有回旋的余地了出于礼貌,我们可以通过点击该按钮直接认输,也就是相当于自己输了。
要生成认输按钮首先得穿件一个button,通过document.createElement(\为以后方便使用可以将创建的按钮赋值给back,创建一个按钮对象然后在在按钮上添加文字defeat.innerHTML = \游戏
认输\为了使得按钮在预先设定的地方我们需要给按钮添加一些属性position = \left = \为进一步给开
13
五子棋游戏的设计与实现
始按钮美化,通过backgroundImage = \加载资源文件夹中的图片给按钮,生成按钮如图3-5:
图3-5
3.2.4 游戏帮助功能按钮
帮助按钮功能是在对游戏还未了解时,我们可以通过点击该按钮打开帮助面板,了解游戏的操作以及关于游戏的内容,是玩家更快入手游戏。
要生成帮助按钮首先得穿件一个button,通过document.createElement(\为以后方便使用可以将创建的按钮赋值给help,创建一个按钮对象然后在在按钮上添加文字help.innerHTML = \游戏
帮助\为了使得按钮在预先设定的地方我们需要给按钮添加一些属性position = \left = \为进一步给开始按钮美化,通过backgroundImage = \加载资源文件夹中的图片给按钮,生成按钮如图3-6:
图3-6
14
五子棋游戏的设计与实现
3.3 棋子的表示
3.3.1 五子棋的棋子属性表示
五子棋中有黑棋子和白棋子两种棋子,将棋子作为对象看待,他们有自己的属性,为了区别棋子颜色和更好的实现,我为棋子中添加颜色属性:obj.color = “white”, obj是棋子对象,color是属性,“white”是颜色的属性值为白色代表这个棋子为白棋并且添加图片obj.backgroundImage=“url()”。
3.3.2 绘制棋子
在绘制棋盘的时候已经给棋盘上的交叉点上绘制了一个透明的棋位,当棋子落入
给位置的时候我只需要让棋子在此位置中显示,通过添加棋子图片,为这个位置的棋子改变他们的属性就可以让棋子活灵活现的出现在这个位置。具体操作如下:
1、 定义整个程序都能使用的变量position通过内置文档对象的创建元素方法创建一个层对象; 2、 通过内置方法with将position对象的样式属性传入; 3、 设置宽度width属性为30像素;
4、 设置定位position方式为绝对的定位方式absolute; 5、 设置居左left为当前位置减去16个像素点; 6、 设置高度height为30个像素点;
7、 设置背景图片backgrounImage为空,以标识当前棋位还未落子””; 8、 设置背景图片backgroundImage为不重复,防止图片重叠出现no-repeat; 9、 设置背景图片backgroundPosition保持在棋位对象的中间center center; 10、定义棋位对象属性行属性标识当前棋位位置; 11、定义棋位对象的属性列标识棋位对象的位置;
12、标识当前棋位对象的属性是否存在属性为不存在false; 13、设置当前棋位对象的样色为空 14、设置其定时器为空
如下图3-7:
图3-7
15
五子棋游戏的设计与实现
3.4 下棋表示
游戏中通过鼠标左键单击便可在棋盘中落子,当游戏还未开始的时候鼠标点击在棋盘中是无效的,为了使游戏的人机友好交互,当游戏还未开始当用户点击棋盘时会提示游戏还未开始!如图3-8
图3-8
当游戏开始的时候,鼠标移动在棋盘之间,会在离鼠标最近的棋位中显示一颗闪烁的棋子提示用户鼠标左键点击会在该位置落子,当鼠标在正确的位置点击时则为落子完成,并且此时添加落子的声音通过document.createElement(\加载资源文件夹中的落子声音,接着通过document.body.appendChild(bgsound);启用声音,当用户结束落子后,电脑“思索”一段时间之后也调用落子功能进行落子,以此轮流轮子进行游戏。
16
五子棋游戏的设计与实现
4 五子棋的AI算法
在此系统的AI算法中,每当玩家落棋子的时候,电脑便会计算出电脑自己的最佳的下棋位置以及敌方最佳的下棋的位置,在这个完整的思考中电脑首先会搜索棋盘中的每一个可下棋位置进行不同方向搜索,经过确认了这个位置下棋价值后,最后才会找出棋盘中的下棋位置价值最大位置。最后才比较找出这次下棋会对自己最佳位置,以达到最佳下子和获胜目的。这一章是既最多汗水与泪水的一章。
4.1 电脑的智能下棋
每当玩家下棋之后,电脑会通过搜索判断出玩家下棋位置是不是有一个五子形成相连,如果是有则gameOver(),并且会提示游戏结束。如果没有形成则电脑会通过最优的算法阻止玩家去取得胜或者是去攻击玩家。在这一个过程中用了两个价值对象,用来存放双方最大下棋位置。
此时电脑首先搜索对手的价值最大位,通过遍历每一个棋位寻找匹配,当搜索到用户棋子位置时采用横竖撇捺四面八方的搜索方式,如图4-1:
图4-1
搜索完成后,再进入权值队列中检索当前位置的价值并且保存在一张表中,当循环遍历整个棋盘之后得到一张权值分数表,显示出每一个可下棋位置的权值分数,紧接着通过以上描述的方式检索自己的棋子得出自己的权值分数表,然后匹配出这两张表中最佳落子位置,得到敌方和己方的最佳落子位置之后,进行对比,如果敌方落子价值大于我方落子价值则采取防御措施阻断敌人落子位置,反之,则落到己方最佳落子位置达到最大进攻目的。以此一步步取得游戏的胜利。
17
五子棋游戏的设计与实现
4.2 游戏的胜负的判断
游戏的判断的胜负也是这个游戏其中的最简单的一个地方,因为我们有了前面下棋搜索先例。依据这五子棋的基本规则来看,游戏判断下棋的位置再去搜索落子的四个方向后,判段是否这有五子的形成,如果要是没有的话则轮到对方去下棋,如果有的话,那么游戏就会结束了,并且会度先连成这五子的一方获会得了胜利。
本系统中电脑主要是从落子的四个方向来搜索判断哪一方优先获得胜利,这四个方向都是以一个棋子(当前落子)为中心横竖撇捺这四个方向进行搜索判断的,。东南西北东加上四个角角都是设置参数count(搜索次数),赋值为8,每判断一次如果有相同的棋子,则--,出现5就break----胜利。代码实现如下:
// 是否结束此次检查
if(foe+empty == 2 || allies == 4) { if(allies == 4) { type = \ isBreak = true; }else if(foe == 2){ type = \ }else if(empty == 2) { type = \ }else {
type = \ }
weight.addWeight(type); break; }
if(isBack) { maxCount = maxCount - count; count = 0; space = -1; }
每当用户或者电脑落子完成之后都会调用检测是否结束游戏的功能,此时通过检索游戏中每一个己方游戏位置采用全搜索方式,一旦检索到五子相连则马上结束当前检索,将此五子加载到成功队列中,为成功队列中每一个棋子附加闪烁功能,并提示哪方执棋色赢得游戏并结束游戏,如图4-2
图4-2
18
五子棋游戏的设计与实现
5 软件测试
在任何的一个软件会在投放市场的使用之前,他们都需要进行许多大量的测试。在这个阶段需要我们需要寻找好的方案,这次测试的目的其实是尽量用不真确的方式去使用,这样就可以找到跟多的错误,使得用户在使用的过程中就算出错了由于测试阶段找出处理。本章的主要任务是对该系统功能进行了一个详细的测试反馈,并且会对程序的内部的数据进行一个有效的测试以及修改。
5.1 软件的测试定义
软件的测试就是利用software检测,首先正常测试,接着不正常测试,测试性能,总之胡乱弄,把自己当做没有接触过这类东西去使用,这些测试结束后需要生成一些报告。在执行完好测试用例之后,就要逐条找错位置,修改,保证软件的健壮力。测试不仅仅可以用机器也可以手动,总之找出各种各样的乱七八糟的问题,然后去解决。它是一个帮助识别和开发完成中的计算机软件中---完全的度以及quality软件过程;就是software quality assurance领域。hellobird也对软件的测试的目的也做出以下观点:
(1) 测试就是去胡搞,乱搞,一最差劲的使用方式使用;
(2) 如果你的测试有个性,说不定可以找出宝藏,也就是没有被找到的错误;
(3) 如果找到以上说的就是一个好的成功的测试。
5.2 界面测试
与用户最亲密最直接的地方就是界面了,能给用户留下第一美好印象的地方也是界面了。这些美好界面是可以引导用户使用和体验的,起到跟随设计思路的作用。古话说的好,人如其面,而界面就是软件的脸。如果软件的五官不好丑炸天又有谁会去理会呢,如果长的好看说不定就会有很多人围观了,要是做到能看能用那自然是好事,如果丑炸天一个再实用的强大的功能也是使得用户败兴不想多看避而远之。一个美好的按钮的名称也应该是一个易懂的,用词也是准确的,不要上一些偏词,难懂的字眼,并且要有着重,重点对象重点看待,看了就知道是什么最好了。如果能设计出不用查看帮助找人帮忙那就是一个成功的软件饿了。通常,很多人会参考系统的设计主题,这样会更接近美化。毕竟是一个团队的作品,总会比自己的好。
此系统的软件的界面中有以下几个重要的功能:开始游戏、游戏认输、我要悔棋,游戏帮助。
点击“开始游戏”按钮后,如果游戏已经开始则会提示游戏还未结束,否则进入游戏开始动画,一朵载着开始样式的云,从左到右运动,在中间的时候停留片刻最后进入游戏状态,测试结果如图5-1和图5-2
19
五子棋游戏的设计与实现
图5-1 图5-2
点击“游戏认输”按钮后,如果游戏尚未开始则会提示游戏还未开始,否则游戏弹出提示框,提示点击游戏结束执棋色,并将游戏状态转为结束状态,测试结果如图5-3:
图5-3
点击“我要悔棋”按钮后,首先将查看悔棋队列中是否存在,如果不存在程序则不作任何反应(游戏刚开始还未落子,当前已经悔棋过一次),如果游戏尚未开始则会提示游戏还未开始,若以上条件都为开始结果如图5-4和图5-5:
20
五子棋游戏的设计与实现
图5-4 图5-5
点击“游戏帮助”按钮,不管游戏是否开始或者结束都会弹出游戏帮助界面,此时帮助界面会覆盖游戏界面,单再次点击帮助面板是将回到游戏界面,测试结果如图5-6:
图5-6
经过多次对界面的各个有效功能按钮进行了全面的测试,是能够正常的使用操作的,这些操作也是非常简易明懂的,是一个非常适合首次接触本游戏的用户娱乐和学习之用的。
21
五子棋游戏的设计与实现
5.3 数据的测试
编程的阶段,绘制棋子这一块是花了不少的时间。由于这个棋盘是事先准备好了的,所以在此次编写的过程中在棋子的位置上需要一些数据,不过这些都是固定不变的一次确定,以后就不会改变,所以这些数据是不用测试的,也测试不了
5.4 用户的验收测试
验收测试就是东家拿到软件后就像是真正使用一样,进过不认同人的测试。它也是要回答我们这些开发的软件的产品是否是已经符合了预期的各种各样的不同的各项要求,以及我们给我们的用户能否接受的一系列问题等等。由于它不仅仅只是一个重要的检验这个也是一个软件的某个方面的重要的质量,而是要进行一个最全面最全面的质量的检验,并且也是要决定这个软件到底是否已经是合格的软件了。它虽然是在我测试的各个大部分的功能之中,自己也是认为是没有任何大的问题了,但是测试的理论告诉了我们,没有一个软件是完美无缺的软件。于是我又请了我宿舍以及好朋友的同学体验了一下这个成果,如图5-7:
图5-7
经过仔细的测试软件是能够正常运行和玩耍使用的!
22
五子棋游戏的设计与实现
总结
经过长达这几个月努力之后,终于也是有了小小的成果了,由于这次开发时间是比较缺少的,有一些功能实现的不是很理想,虽然这个还不算那么完美,但在我的心里还是充满了成就的愉悦感啊!我为了很好的完成此次的这个毕设题目,我也是查看了不少的文献资讯.由于本次我的课题是设计到了人工智能计算机博弈(AI)方面等的一些知识,所以呢我是专门花不少的时间去查阅以及去研究了这个方面的知识。而我的五子棋的实现也正是通过了第一种方法的实现的——-工程学方法。了解了这些都还是远远的不够的,但是最重要是为了解我们计算机中博弈方面一些相关搜索算法。这些呢既是重点而且又是难点,不过最终我还是基本上是把它们学得明白了。由于我呢对javascript方面知识了解的不是多,因此所以也是花费了很多很多的时间去学习了解,可以这么说是边学又是边用了的。但我呢还是坚持下来了并且克服了许多种种的困难,取得了我理想成果。本次的做论文的经历也是会使我终身的受益,我也感受到了做论文也是要真真正正的用心去做的一件事情啊!是真正的在自己的学习的过程中和研究张的过程,没有了学习就是不可能有研究能力,没有了自己的研究,也就不会有那么多的突破了,那也就是不叫什么论文了。在这次的经历上也是让我在这以后的学习中更加的激励我继续的进步。
回想这短短的几个月里,心里是感慨尤多啊。当时我拿到了这个题目的时后真的是不知到从哪里去下手,再在后来经过我自己的努力研究了一些有关的资料以及程序之后,终于是对这个有游戏系统有了更好的方向。要想去完成这么一件事,不经历这风雨是不可能有这美丽灿烂的彩虹。我此次在研究的过程中也是遇到了很多很多的困难。比如说在我编完成了一段的代码之后,进行调试的时候,自信地是认为完美无缺的没什么错误了的,结果却是让我大受了打击,许多错误是一下子出现了几十个,甚至呢是几百个。当时啊真的有点点放弃的冲动了,于是乎我是压下了自己的那些冲动,努力的使自己又平静下来了。过了一会会我认认真真地又分析其中的错误,发现是我范的错误都大多是不可原谅的错误。原来那些错误大部分是语法的错误,也就是这么说是我的编码不是符合javascript 的规范的,在进行编译的时候是无法通过的。比如说某一个表达式的后面缺少了分号的时候或者是大括号,编译器在编译的时候就会告诉我们其中的错误信息,编译呢就此停止了。为此我专门的总结了这次我常范的一些错误,以防止下次再次范错。1、 Javascript是分大写和小写的,比如书布尔值true,如果要是写成了True,则编译的时候就会出现错。2、一个Javascript文件可以包含多个对象,但是每一个对象块都得有自己的代码体。3、一个等于号是和两个的等于号是不同的 。在Javascript程序中,一个等于号是进行赋值的操作,而两个等于号的则是比较的操作。4、Javascript中的数组Array下标是从O开始的。这类错误呢也是最令我头疼的,属于逻辑性的错误,编译器是可以正常的编译,不容易被发觉。总之一句话是做事要认真而且细心,否则呢差之毫厘,会缪之千里的。
23
五子棋游戏的设计与实现
致谢
最后要感谢我的指导老师李振富教授的辛勤劳苦的指导。在研究分析和论文的过程中,李振富老师给予了许多大量的帮助,并且提供了很多很多的与该课题有所相关的重要的信息,一定的培养了我面对事情研究及分析的严谨的态度和创新的精神,很大很大程度上呢提高了我去分析的问题,解决问题的好能力,这是非常有利于现在我的功过和今后的学习和工作。在这次毕业设计中我的朋友我的挚友给了我很多的技术支持和鼓励我,在这我对你们表示感谢!
24
五子棋游戏的设计与实现
参考文献
[1] 李峰. 晁阳 JavaScript 详解技术开发[M]. 北京:清华大学出版社,2009 [2] (美)卡拉诺抽象数据和求解问题: [M].北京:清华大学出版社,2007年5月 [3] (美)哈伯. 5游戏编程[M]. 北京:机械工业出版社,2007年1月 [4] 聂庆亮. 开发指南应用 [M]. 北京:清华大学出版社,2010年1月
[5] (美)卡拉罗|译者:金名. 算法分析和数据结构[M].北京:清华大学出版社,
2007年12月
[6] 系统指南人工智能智能(英文版)[M]. 机械工业出版社,2005年1月 [7] 结构和策略的我复杂问题求解(英文版)[M]. 机械工业出版社,2005年9月 [8] 编译原理. 北京:清华大学出版社,2005年2月
[9] 谢楚屏,吴伟民,数据结构. 北京:人民邮电出版社,1994 [10] 涂序彦. 人工智能及其应用. 北京:电子工业出版社,1988
[11] Malone, Michael. The Microprocessor: A Biography. New York: Springer-Verlag, 1995. [12] Capron, H.L., and J. A. Johnson. Computers:Tools for an Information Age, 8th ed. Upper
SaddleRiver, NJ: Prentice Hall, 2003.
[13] Silberschatz, Abraham, Peter Galvin, and Greg Gagne. Operating System Concepts, 8th
ed. Hoboken, NJ: John Wiley & Sons, 2008.
[14] http://www.imint.com.cn/cal.html
[15] http://www.ovrzci.ork/ency/lt/014.html [16] http://www.ulzvai–pr0l0g.com
25
正在阅读:
计算机科学与技术游戏设计07-02
DS1820及其高精度温度测量的实现05-22
数学2种课型基本流程01-05
尔雅通识2017西方文化名著导读06-19
四等水准测量实验报告09-13
SYB试卷12-05
高考化学总复习冲刺练习—等效平衡(基础)(2020-2021)03-07
垃圾分类知识竞赛(有答案)05-13
物业管理员2022年个人工作总结范文03-24
多变的价格精选习题(带答案和解释)11-11
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 计算机
- 科学
- 设计
- 技术
- 游戏