《五子棋游戏的设计与实现本科学位论文.doc》由会员分享,可在线阅读,更多相关《五子棋游戏的设计与实现本科学位论文.doc(36页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、JavaGUI实现五子棋游戏-后台设计子系统软件工程学 院: 专 业: 指导教师: 2014年9月 JavaGUI实现五子棋游戏 摘 要博弈论是二人在平等的对局中各自利用对方的策略变换自己的对抗策略,达到取胜的目的。博弈论最初主要研究象棋、桥牌、赌博中的胜负问题,人们对博弈局势的把握只停留在经验上,没有向理论化发展。博弈论考虑游戏中的个体的预测行为和实际行为,并研究它们的优化策略。五子棋是一种两人对弈的纯策略型棋类游戏,棋具与围棋通用,是起源于中国古代的传统黑白棋种之一。棋子分为黑白两色,棋盘为1515,棋子放置于棋盘线交叉点上。Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,图
2、形用户界面(GUI)是指采用图形方式显示的计算机操作用户界面。与早期计算机使用的命令行界面相比,图形界面对于用户来说在视觉上更易于接受。随着互联网的发展,网上PK已经普遍,玩家可以不受地域的限制,自由的选择对手,通过socket实现客户端和服务器的连接,通信。人工智能AI是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。玩家可以和计算机进行对决。计算机可以分析棋盘局势,给空位估值,找到最佳落棋点,如极大极小博弈树估值搜索算法、阿尔法 贝塔剪枝算法和Negascout搜索算法。二十世纪七十年代以来人工智能被称为世界三大尖端技术之一。本课程的研究将会加深对人工
3、智能的理解。关键词:博弈,GUI,五子棋,Socket,人工智能JavaGUI Realized Gobang GameAbstractGame theory is the two on an equal game in their use of each others strategy to transform himself confrontation strategy to achieve victory purposes. Game theory first major study chess, bridge, gambling in the outcome of the proble
4、m, people of game situation grasp only stay in terms of experience, failed to theory development. Game theory considering the games individual forecast behavior and actual behavior, and to study their optimization strategies. Backgammon is a two games of pure strategy based board games, chess and Go
5、 GM, is originated in ancient Chinas traditional Othello one species. Pieces into black and white, the board of 15 15, pieces placed on the board line intersection. Java is a way to write cross-platform applications, object-oriented programming language, graphical user interface (GUI) is a graphical
6、 display of the computer operating the user interface. With early computers using the command line interface as compared to the graphical interface for the user to visually easier to accept. With the development of the Internet, online PK has been generally, players can without geographical restrict
7、ions, freedom of choice opponents, through the socket to achieve client and server connections and communications. Artificial Intelligence AI is the research, development for simulation, extension and expansion of human intelligence theories, methods, techniques and applications of a new technical s
8、ciences. Players can and computers showdown. Computer can analyze chessboard situation, give space valuation to find the best drop chess points, such as the minimax game tree valuation search algorithm, Alpha Beta pruning algorithm and Negascout search algorithm. 1970s since the artificial intellige
9、nce known as the worlds three cutting-edge technologies. The course of study will deepen the artificial intelligence to understand.Keywords: Game, GUI, Backgammon, Socket, Artificial Intelligence目 录1 引言11.1 课题背景1 1.1.1博弈1 1.1.2五子棋简介2 1.1.3java及java开发平台31.2本课题研究的意义72 开发环境的配置103 五子棋探索123.1五子棋的相关术语123.
10、2五子棋的攻防134 概要设计164.1层次图164.2客户端和服务器程序流程图165 详细设计及代码实现195.1客户端界面的实现代码如下195.2人机对战215.3 人人对战265.4运行结果29参 考 文 献31致 谢321 引言 1.1 课题背景1.1.1博弈博弈论(Game Theory),亦名“对策论”、“赛局理论”,属应用数学的一个分支, 博弈论已经成为经济学的标准分析工具之一。博弈论主要研究公式化了的激励结构间的相互作用。是研究具有斗争或竞争性质现象的数学理论和方法。也是运筹学的一个重要学1。 博弈论考虑游戏中的个体的预测行为和实际行为,并研究它们的优化策略。生物学家使用博弈理
11、论来理解和预测进化论的某些结果。博弈论是二人在平等的对局中各自利用对方的策略变换自己的对抗策略,达到取胜的目的。博弈论最初主要研究象棋、桥牌、赌博中的胜负问题,人们对博弈局势的把握只停留在经验上,没有向理论化发展。博弈论考虑游戏中的个体的预测行为和实际行为,并研究它们的优化策略2,3。决策人:在对决的过程中第一个发出谋略的人,该方一般情况下根据自身的所处情形、拥有的感受、已有的实践经验和表面状态率先有预谋的发动着行为。对抗者:在俩方对决的过程中行动相对比较晚的那个人,和决策人相比,大体上要作出相反的对策,而且他的行为是在决策者之后的、相对默认的、比较被动的,但结局中他反而获取优势。他的进攻和防
12、守的策略很有可能取决于决策人比较弱势的策略决择,所以对抗是其优先选择的方式,也是唯一的方式,也就是领导人的阶段性完结行动。局中人:在一次对决中,每一个有决策权力的参赛者都是一个局中人。通常情况下,只有两个局中人的对决就是所谓的“两人博弈”,而多于两个局中人的博弈就是“多人博弈”。策略(strategies):一次对决中,每个局中人都有各自不同的实际可行的比较完整的行为指南,该指南不是特定的某阶段的行动指南,而是在整个行动中的一个指南,每个局中人的一个可行的自始至终、从头到尾的全局筹划的一个行动方案,也就是这个局中人的一个策略。假如在一个对决中局中人都总共有有限个策略,那就是“有限博弈”,否则就
13、是“无限博弈”。得失(payoffs):一局博弈结局时的结果称为得失。每个局中人在一局博弈结束时的得失,不仅与该局中人自身所选择的策略有关,而且与全局中人所取定的一组策略有关。所以,一局博弈结束时每个局中人的“得失”是全体局中人所取定的一组策略的函数,通常称为支付(payoff)函数。次序(orders):各博弈方的决策有先后之分,且一个博弈方要作不止一次的决策选择,就出现了次序问题;其他要素相同次序不同,博弈就不同。博弈涉及到均衡:均衡是平衡的意思,在经济学中,均衡意即相关量处于稳定值。在供求关系中,某一商品市场如果在某一价格下,想以此价格买此商品的人均能买到,而想卖的人均能卖出,此时我们就
14、说,该商品的供求达到了均衡。所谓均衡,它是一稳定的博弈结果。极大极小博弈树(Minimax Game Tree,简写为MGT,译者注)用于编写电脑之间的游戏程序,这类程序由两个游戏者轮流,每次执行一个步骤。当然,所有可能的步骤构成了一个树的结构4。它对于所有的GameAI(游戏智能)开发来说都是非常重要的数据结构。对一棵完整的极大极小树来说,计算机能够向前遍历每一步,直到找到最佳步骤为止。像人类的棋类游戏一样,程序的能力高低取决于计算机对所处形势的评估能力,以及程序搜索的深度。一位国际象棋大师对形势的估计误差要大大小于余位业余选手,而且象棋大师对于棋局的预测也远比一般人更远。计算机同样也可以对
15、棋局做出很长远的预测,并且它着棋不会失误,因为它会看到对手由于失误而做出的回应。1.1.2五子棋简介五子棋是一种两人对弈的纯策略型棋类游戏,棋具与围棋通用,是起源于中国古代的传统黑白棋种之一。发展于日本,流行于欧美。容易上手,老少皆宜。五子连珠游戏其中包含着一个极为深刻的数学问题。被当代科普作家傅小松称之为五子连珠问题,又称五子连珠猜想。其准确表述是:在以横线、竖线互相交叉(一般各为15条)的方形平面(棋盘)中,黑白两种“点”(棋子)先后沿横线、竖线排列(行棋),在平面(棋盘)横线、竖线、斜线(无实线连接)上形成连续的同色“点”(棋子),五个“点”(棋子)为可能达成连珠的最大值。“五子连珠问题
16、”的证明可能非常复杂,这是因为,第一,它不是一个静态的问题,而是一个动态的问题5。棋盘是一个静态的二维平面,但行棋博弈是一个动态的过程。第二,这不是一个线性和确定性的问题,而是一个非线性和模糊性问题。所谓“五子连珠”的最佳值,是在千变万化的攻与防中达到的一种默契。因此,要解决“五子连珠猜想”,可能要运用到博弈论、模糊数学等工具。1.1.3java及java开发平台Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。在
17、全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了Java程序的运行效率。今天,全球有25亿Java器件运行着Java,450多万Java开发者活跃在地球的每个角落,数以千万计的Web用户每次上网都亲历Java的威力。Java运行在7.08亿手机、10亿智能卡和7亿PC机上,并为28款可兼容的应用服务器提供了功能强大的平台。这么多应用,彻底改变了用户的
18、生活。越来越多的企业,因为使用了Java而提高了生产效率。在中国,越来越多的用户,因为Java而降低了成本,享受到了Java带来的便利。Java技术已经日渐成熟,使用Java语言设计五子棋游戏有很大的优越性。这是由于Java是一门经过长时间发展,现在已经充分完善的面向对象程序设计语言,使用Java开发游戏很大程度的方便了游戏脚本的使用和Java使用套接字的网络功能。这些都足以说明Java开发本项目的优势。(1)Java长期发展,现在已经相当成熟。 企业级应用使用Java这么多年,实践说明了它有利于开发大型软件。随着Java的运行效率的不断提高,Java语言易学、严格、抽象度高、可读性好的优势就
19、凸显出来。当今游戏软件的规模越来越大,java的优点也吸引了众多游戏开发者。(2)方便了游戏脚本的使用游戏脚本Script是使用一种特定的描述性语言,依据一定的格式编写的可执行文件又称批处理文件。对于游戏开发者,经常关系到相对复杂的情形(比如美学问题),软件开发过程是一个不断完善不断改进的过程,因此便捷的修改游戏内容是很必要的。由于其虚拟机的特点,可以使用java来完成游戏脚本的编辑,是一种完全的面向对象语言,也就是说,开发者能在游戏中十分便利地扩展和继承之前的代码,而不需要再重新开发新的类库。比如同一类游戏的引擎不用重复的编写,只是替换游戏中涉及到的图片、音乐、动画、布局、组件等,就可以设计
20、出一个新的游戏,极大的节约的时间,节省人力物力的资源浪费。(3)网络功能Java一向强于解决网络方面的问题,在这方面Java主要有两个优势,第一是基于Applet和Java Web Start的游戏非常容易更新,不会像其他游戏那样需要用户手动下载全新版本;第二是Java在网络交互的Api相对比较友好,而对于大型网络游戏来说,分布式系统非常重要。Java拥有强大的网络功能,能很容易的和网页结合在一起发布到世界各地。游戏者只要通过浏览器就可体会到游戏所带来的乐趣。这意味着,游戏将面临着拥有全世界的玩家这个巨大市场。这些年由于Java技术的不断发展,Java程序的运行速度有了显着提升,同时硬件技术也
21、在不断进步,从而使得Java处理比较复杂的3D图形成为可能。 Java多线程模型、主动绘图,双缓冲技术、页面交换技术、Lwjgl、Jogl、Java3D等技术的出现,使Java语言可以方便的利用现在的显卡日益强大的硬件加速能力。实际上目前已经有许多基于Java的 2D和3D游戏,其中不乏大型多人在线游戏。(1)Java多线程模型多线程的实现有两种方法,可以继承Thread类或者实现Runnable接口。众所周知线程通过start方法后不是立即运行,而只有处于Runnable状态的线程会被调度执行,被调度执行的线程此时就处于Running的状态,线程开始执行run方法,线程将执行完成或者被调用i
22、nterrupt方法中断成为Dead状态,线程执行过程中执行任何对象的wait方法,执行sleep方法、或执行同步IO操作时会分别转换为Waiting、Sleeping、Blocked的状态,这些都是Non-Runnable的状态,即使CPU有空余时间,处于这些状态的线程也不会被调度运行,当导致他们停止运行的情况解除时,他们可以重新转换为Runnable的状态,等待下次被调度运行。相对于Dead状态,Runnable、Running、Non-Runnable的状态下的线程都是Alive的。在进行动画编程时,我们经常接触的是sleep方法,该方法容许线程暂停一段指定的时间,然后恢复执行。(2)主
23、动绘图一般编写Java的绘图程序都是在Component类的paint(Graphics曲方法中进行,在动画线程中调用repaint()方法,repaint方法只是往组件的事件队列中添加了UPDATE的事件,当Java的AWT线程处理到这个事件时,会调用Component的update()方法,在update()方法中才会调用paint(Graphics g)方法。由于我们采用了一个单独的动画线程,我们也可以主动绘图,主动绘图就是要通过Component类的getGrahics0取得Graphics对象,然后将该对象传入paint(Graphics g)方法中绘图,利用主动绘图一般可以提高绘图
24、的效率。(3)双缓冲技术双缓冲技术主要用来消除屏幕闪烁,因为显示屏上不同的屏幕区域分别对应着显卡中的一段缓存,假如直接把图片写进缓存里,与此同时写入的操作花费的时间较长,这时屏幕上就会看到闪烁。该技术,就是另外建立一个离屏的缓存,写进图片时,首先写进离屏缓存中,然后将离屏缓存中的内容一次性复制到显卡的缓存中,这样达到地消除闪烁的目的。在JavaAWT/Swing中,在没有使用主动绘图的情况下,我们通过调用repaint()函数来间接调用paint(Graphics g)函数,而paint(Graphics g)函数是由update(Graphics g)函数来调用的。这样update(Grap
25、hics g)函数就成为我们建立离屏缓存的理想场所,而paint(Graphics g)函数可以保持不变。(4)页交换技术在处理屏幕闪烁的问题上,双缓冲技术有着明显的优越性,但它也有一个缺点,每次绘图都需要把离屏缓存中的图片全部复制进屏幕缓存里,假如屏幕的分辨率是800*600,颜色是16位,一屏就需要800600+2=938KB,也就是1M的数据,假如程序中每秒画30帧图像,每秒种就要复制大约30M的图像数据!一般情况下这是可以实现的,但我们需要技术的改进,页交换技术就应运而生了。页交换技术也是包含两个缓存,却不同于双缓冲那样将数据从离屏缓存黏贴到屏幕缓存中,而是将屏幕缓存直接指向离屏缓存,
26、原来的屏幕缓存变成离屏缓存,这样就循环往复,就不需要不断地拷贝数据了。使用页交换又引出另外一个问题,如果在显示器刷新的过程中我们交换了屏幕缓存,那么就会导致用户看到的屏幕内容一部分来自于原来的屏幕缓存,一部分来自于当前的屏幕缓存,从而导致屏幕撕裂的情况,为了防止这种情况,我们必须在显示器更新的间隙交换缓存。幸运的是,Java图像库中已经提供了BufferStrategy类来解决这个问题。BufferStrategy类会根据系统环境自动选择最佳的方案来实现缓存,首先,会尝试页交换,如果不行就使用双缓冲,当使用页交换时,它会等待显示器刷新完毕才进行页交换。Canvas和Window子类的实例都能有
27、一个BufferStrategy对象,至少需要两个缓存,可以使用window.createBufferStrategy来使用BufferStrategy,以下代码通过BufferStrategy取得Graphics对象来绘图。(5)Java3D技术作为Sun公司较早推出的一项3D技术,是一种高度封装的api,构建在Opengl和Direct3D之上,可以说是最有名的Java的3D技术。由于种种原因(api设计,面向用户的不明确),Java3d一直没有办法流行,不久前Java3d的团队宣布暂停对Java3d新功能的开发,转而为JavaFX开发3D渲染引擎。同时Sun的另一个项目Project W
28、onderland宣布将其渲染引擎由Java3D转为JMonkeyEngine。令人遗憾的是Sun的Java3D再次进入尘封状态,大量基于 Java3D的程序和教程都面临一个非常尴尬的境地,令人高兴的是在这一领域终于有比Sun做得更好的团队出现了。(6)LWJGL全名Light Weight Java Game Library。作为一个非官方的对Java游戏的全面解决方案,LWJGL将游戏图形(opengl)、音效(openal)、控制输入集合为一,以成为Java界的Directx(不是Direct3D)而努力。其在图形方面采用了opengl的Java绑定,其函数与c语言版的完全相同,所以对于
29、习惯opengl编程的程序员来说比较友好。目前有大量的Java游戏和游戏引擎是基于LWJGL的,它可以说是Java游戏社区最广为被使用的函数库之一。 (7)JoglJogl是Java对opengl的一个绑定,或者说是opengl接口的Java实现,它是由sun支持的。其语法与opengl完全相同,api也紧跟随着opengl的版本进行更新,而Nehe的opengl范例程序大多数都有Jogl版本。去年Jogl正式通过jcp审核成为jsr231,是lwjgl的主要竞争者。值得一提的是,Jogl项目的领导者Ken Russell曾经声明并不希望Jogl成为jre的一部分,因为他认为这样会使Jogl的
30、更新周期与jre相同,从而变得过于缓慢。Ken Russell目前全力工作在新的Java plug-in的开发上,而opengl的api也没有进行更改,所以现在的jogl版本将持续较长的一段时间。图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。与早期计算机使用的命令行界面相比,图形界面对于用户来说在视觉上更易于接受6。GUI的广泛应用是当今计算机发展的重大成就之一,他极大地方便了非专业用户的使用。人们从此不再需要死记硬背大量的命令,取而代之的是可以通过窗口、菜单、按键等方式来方便地进行操作。而嵌入式GUI
31、具有下面几个方面的基本要求:轻型、占用资源少、高性能、高可靠性、便于移植、可配置等特点。Eclipse是一个开放源代码的基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。Eclipse还包括插件开发环境(Plug-in Development Environment,PDE),这个组件主要针对希望扩展Eclipse的软件开发人员,因为它允许他们构建与Eclipse环境无缝集成的工具。由于Eclipse中的每样东西都是插件,
32、对于给Eclipse提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。Eclipse是著名的跨平台的自由集成开发环境(IDE)。最初主要用来Java语言开发,但是目前亦有人通过插件使其作为其他计算机语言比如C+和Python的开发工具。Eclipse的本身只是一个框架平台,但是众多插件的支持使得Eclipse拥有其他功能相对固定的IDE软件很难具有的灵活性。许多软件开发商以Eclipse为框架开发自己的IDE。1.2 本课题研究的意义本课题用Java语言在相关开发环境中,设计五子棋的GUI界面,主要分为两大功能:人人联网对战和人机对战。人人联网利用C/
33、S结构,即大家熟知的客户机和服务器结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。目前大多数应用软件系统都是Client/Server形式的两层结构,由于现在的软件应用系统正在向分布式的Web应用发展,Web和Client/Server应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件;因此,内部的和外部的用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统。这也就是目前应用系统的发展方向。Client和Server常常分别处在相距很远的两台计算机上,Client程
34、序的任务是将用户的要求提交给Server程序,再将Server程序返回的结果以特定的形式显示给用户;Server程序的任务是接收客户程序提出的服务请求,进行相应的处理,再将结果返回给客户程序。C/S结构的优点是能充分发挥客户端PC的处理能力,很多工作可以在客户端处理后再提交给服务器。对应的优点就是客户端响应速度快。人机对战涉及到人工智能(Artificial Intelligence,AI)。人工智能主要研究模拟人的智力的理论和方法,并且开发具有人工智能的应用系统解决人类自身很难解决的一些问题,比如机器人、无人机等8。人工智能自从出现在人类的社会中,理论的研究逐渐深入,技术的应用日益成熟,需要
35、人工智能大显身手的领域持续不断地扩大,却始终没有一个大家都公认的比较统一的概念。现在计算机实现人工智能的比较成熟的原理类似于人的大脑般自动、智能的计算机的制造,使得计算机的应用范围达到更高的一个层次,现代社会更快更好地朝着现代化前进。此外,人工智能同时关系多个已存在的不同的学科,比如计算机科学、心理学、哲学、生物学和语言学等学科。简而言之,几乎是关于自然和社会的所有学科,其范围已经不止局限于计算机科学的范畴。人工智能和思维学科是应用与理论的联系,思维科学大该可以分为基础科学、技术科学和工程技术3个层次,而人工智能是思维学中的的技术应用层次里的一个应用分支。如果站到思维的角度来观看人工智能,则它
36、不仅仅关系到逻辑思维,在形象思维、灵感思维的密切配合下才能最终实现人工智能的跨越式的大发展。众所周知,从小学就开始接触的数学是其它众多不同学科的基石,数学同样服务于语言、思维领域等领域,人工智能也要而且是必须使用数学这种学科工具,数学不仅作用于标准逻辑、模糊数学等抽象学科,如今数学进入人工智能学科,它们将互相促进而更快地发展。人工智能是计算机学科的一个分支,二十世纪七十年代以来被称为世界三大尖端技术之一(空间技术、能源技术、人工智能)。也被认为是二十一世纪(基因工程、纳米科学、人工智能)三大尖端技术之一。这是因为近三十年来它获得了迅速的发展,在很多学科领域都获得了广泛应用,并取得了丰硕的成果,
37、人工智能已逐步成为一个独立的分支,无论在理论和实践上都已自成一个系统。2 开发环境的配置JDK(Java Development Kit)是Sun Microsystems针对Java开发员的产品。自从Java推出以来,JDK已经成为使用最广泛的Java SDK。JDK 是整个Java的核心,包括了Java运行环境、Java工具和Java基础类库。JDK是学好Java的第一步。而专门运行在x86平台的Jrocket在服务端运行效率也要比Sun JDK好很多。从SUN的JDK5.0开始,提供了泛型等非常实用的功能,其版本也不断更新,运行效率得到了非常大的提高。SE(J2SE),Standard
38、Edition,标准版,是我们通常用的一个版本,从JDK 5.0开始,改名为Java SE。EE(J2EE),Enterprise Edition,企业版,使用这种JDK开发J2EE应用程序,从JDK 5.0开始,改名为Java EE。ME(J2ME),Micro Edition,主要用于移动设备、嵌入式设备上的java应用程序,从JDK 5.0开始,改名为Java ME。没有JDK的话,无法编译Java程序,如果想只运行Java程序,要确保已安装相应的JRE。JDK安装完后要配置环境变量。JAVA_HOME:D:Program FilesJavajdk1.6.0_01;CLASSPATHD:
39、ProgramFilesJavajdk1.6.0_01libtools.jar;D:ProgramFilesJavajdk1.6.0_01jrelibrt.jar;PATH:C:ProgramFilesLenovoLenovoHomeDCMainWin.exe;D:ProgramFilesJavajdk1.6.0_01bin;如图2.1:图 2.1 变量配置Eclipse直接下载压缩包后,解压到文件夹,可直接使用。创建快捷方式,创建工作空间文件夹。Eclipse也叫做IDE,是方便你写代码的(比如当你写一个方法(method),写一半的时候,他会自动补全全名)。JDK,是用来编译和运行 代码的
40、。有些Eclipse会自动夹带自身的JDK。但是我建议你两个都安装。Jdk是Java开发工具包和编译运行环境,包含开发Java的基础类库。WindowBuilder是一款基于Eclipse平台的双向Java的GUI设计插件式的软件。它具备SWT/JFACE开发、Swing开发及GWT开发三大功能,是一款不可多得的Java体系中的WYSIWYG工具。WindowBuilder工具开发商Instantiations已经于2010年8月被Google收购,WindowBuilder也作为免费工具开放了。利用Java开发桌面程序的界面比使用HTML设计Web界面要复杂很多,纯手工编写Java代码来开发
41、界面是非常困难的,借助WindowBuilder设计器工作会变得简单很多。WindowBuilder也就是原来的SWT Designer。Google收购了Instantiations,把它的工具也重新免费发布了。用过SWT Designer的人都知它是非常好用的swing/swt可视化开发工具,有了它,swing/swt也可以像visual studio一样拖拉控件写程序(虽然netbean也可以,不过没怎用),可惜是个收费产品,后来把改名为WindowBuilder。不过Google把这个工具的开发公司Instantiations收购了,并把这个产品免费发布。Google收购Instant
42、iations是为了给它的GWT设计开发工具,据说也是为了它的Anroid搞开发工具。打开Eclipse,打开菜单HelpInstall New Software,单击Work with后的Add按钮,输入与你Eclipse对应版本的更新地址。安装完后的界面设计工具如图2.2所示:图2.2 WindowBuilder界面3 五子棋探索3.1五子棋的相关术语:“连”同色棋子在一条阳线或阴线上相邻成一排。“长连”五枚以上同色棋子在一条阳线或阴线上相邻成一排。“五连”只有五枚同色棋子在一条阳线或阴线上相邻成一排。“成五”含有五枚同色棋子所形成的连,包括五连和长连。“四”在一条阳线或阴线上连续相邻的5
43、个点上只有四枚同色棋子的棋型。“活四”有两个点可以成五的四。“冲四”只有一个点可以成五的四。“死四”不能成五的四。“三”在一条阳线或阴线上连续相邻的5个点上只有三枚同色棋子的棋型。“活三”再走一着可以形成活四的三。“连活三”即:连的活三(同色棋子在一条阳线或阴线上相邻成一排的活三)。简称“连三”。“跳活三”中间隔有一个空点的活三。简称“跳三”。“眠三”再走一着可以形成冲四的三。“死三”不能成五的三。“二”在一条阳线或阴线上连续相邻的5个点上只有两枚同色棋子的棋型。“活二”再走一着可以形成活三的二。“三三”一子落下同时形成两个活三。也称“双三”。“四四”一子落下同时形成两个冲四。也称“双四”。“
44、四三”一子落下同时形成一个冲四和一个活三。“禁手”对局中如果使用将被判负的行棋手段。禁手的分类:三三禁手(黑棋一子落下同时形成两个或两个以上的活三,此子必须为两个活三共同的构成子)、四四禁手(黑棋一子落下同时形成两个或两个以上的冲四或活四)、长连禁手(黑棋一子落下形成一个或一个以上的长连)。构成禁手的基本要素:活三(本方再走一着可以形成活四的三)、活四(有两个点可以成五的四)、冲四(只有一个点可以成五的四)、长连(在棋盘上的阳线和阴线任意一条线上,形成的5个以上同色棋子不间隔的相连)。关于禁手的规定:黑方五连与禁手同时形成,禁手失效,黑方胜。 图3.1 活二 图3.2 死二 图3.3 活三 图
45、3.4 死三3.2五子棋的攻防五子棋的基本防守技巧如下:靠:由于五子棋是平衡的艺术,因此原则上每步棋都应下在对方上一步棋周围贴身的八个位置上。当你不知道该怎么下时可按此考虑,特别是对方在外围远处下子时,则在其左右必有好点。可降低对方的活动能力。压:活动需要空间,防守主要的目的是压迫对方的活动空间,在对方棋形的上方进行挤压,使其不能抬头,限制其发展,防止敌人以几何倍数向外扩张(如果这样你肯定完了)。下在外围也能为将来自己的扩展做准备。托:将对方的棋形托向底线,使其失去根基,发展无望。即分割其与总体的联系,将之孤立起来,起到无为而治的目的。点:在情况不明的地方点一手,看对方的应手而后定。将变化走明
46、有时是明智之举。穿心:功聚内力,防守就是要破坏其凝聚力,在对方集中之处的中心筋络上下子能起到事半功倍的效果。不过“心”一定要选准,否则事得其反。分割:在对方二块棋的交汇点上进行分割,以防止相互呼应。只要制住三点,连神龙也腾飞不起来。应特别注意对方的接应子,要坚决切断,不留活口,封杀出局。反打:争取主动是积极的防守。反打即作出活二或死三,使之能在对方活三冲四时反活三反冲四。使自己能更灵活地防守,在对方进攻时进行反打有抢先防御,争取主动的效果12。棋无常型,水无常势,以柔克钢,以阴柔化致钢是五子棋的要诀。如果下棋双方都无错误,则每盘都是和局,只有抓住对方的防守失误才有获胜的希望。提剑当胸时,浑身无
47、处不戒备,凶猛攻击之时,自身必然露出弱点,这正是反击之时。下五子棋须得法,法中变化有莫测;五子之变如水势,因势避高而趋下。战不过攻守,法不过奇正,奇正之法:往复循环,“不竭如江海,无穷如天地” 13。五子棋的开局也称布局,一般在37手左右完成。五子棋的开局是十分重要的。一局五子棋的着数在20至40着之间,因此,它的开局阶段是非常短暂的,大约在七八着至十几着之间。在这一阶段的争夺中,双方的布局、应答将对以后的胜负起着关键的作用。一般来说,黑棋以攻为主,而白棋则以防为主。在开局阶段,双方主要是二的争夺9,10。双方必须设法创造自己的连二、活二、跳二或大跳二等,同时要阻挡对方的活二。无论哪种开局,均体现出这一规律。可以说,哪一方的二做得多 ( 有两个以上的活二 ) ,或者有效地阻挡住对方的活二,那么,哪一方的胜率就比较大。另外,开局时每一个次序、每一种节奏都不能忽视,输赢就在一步之差。为了便于记忆、区分以及比赛。只对前3步组成的棋形进行了部分取名。进攻始于活二,要尽可能的利用好棋盘上的每一个子,多形成活二。所有成功的攻击都要依赖“组合攻击”。“组合攻击”是指一子落下,同时产生两条或多条攻击线,而且每条线都
限制150内