JAVA课程设计围棋对弈含代码教学提纲_第1页
JAVA课程设计围棋对弈含代码教学提纲_第2页
JAVA课程设计围棋对弈含代码教学提纲_第3页
JAVA课程设计围棋对弈含代码教学提纲_第4页
JAVA课程设计围棋对弈含代码教学提纲_第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Good is good, but better carries it.精益求精,善益求善。JAVA课程设计围棋对弈含代码Java程序课程设计任务书主要任务与目标创建一个围棋对弈平台。基于Panel类定义一个面板子类,在其中利用Graphics类的drawLine()方法绘制棋盘格线,利用fillOval()方法绘制棋盘四角的星位。为面板注册MouseEvent监听器,为一个按钮注册ActionEvent事件监听器,实现单击鼠标布子、单机一个重新开局等操作。黑白棋子基于Canvas类的子类,其中,paint()方法用来绘制棋子,通过为棋子注册MouseEvent事件监听器实现双击棋子吃子、右击

2、棋子悔棋操作。Canvas组件表示屏幕上一个空白矩形区域,应用程序可以在该区域内绘图,或者从该区域捕获用户的输入事件。必须重写paint方法,以便在Canvas上执行自定义图形。主类为Frame的子类,前面创建的棋盘被置入其中。主要内容与基本要求系统的功能要求:1.要求有黑白两色棋子,保存所有已下的棋子,包括在棋盘上的所有棋子和被踢掉的,若某一次落子没有造成踢子,包括所有被这个棋子提掉的棋子及这个棋子本身。如果踢子,则保存所有被踢掉的棋子。保证实现下棋的基本操作如:可以允许悔棋,落子,提示信息,重新开始游戏等功能。2.熟悉JAVA中swing的组件运用,基本工具的熟练掌握。学习并掌握以下技术:

3、Java;熟练使用以下开发工具:JCreator等三、计划进度112月28日-12月29日:搜集资料、查阅文献,确定选题212月29日-01月02日:需求分析,系统设计,系统功能模块完善301月02日-01月06日:编程实现系统、系统测试与修改401月05日-01月07日:课程设计报告撰写501月07日-01月07日:课程设计报告答辩主要参考文献:陈轶.姚晓昆编著.Java程序设计实验指导.北京:清华大学出版社,2006赵文靖编著.Java程序设计基础与上机指导.北京:清华大学出版社,2006吴其庆编著.Java程序设计实例教程.北京:冶金工业出版社,2006陈国君等编著.Java2程序设计基

4、础.北京:清华大学出版社,20065.Java网络编程实例教程,清华大学出版社,冯博等,2005.1摘要围棋作为一个棋类竞技运动,在民间十分流行,为了熟悉五子棋规则及技巧,以及研究简单的人工智能,决定用Java开发五子棋游戏。主要完成了人机对战和玩家之间联网对战2个功能。网络连接部分为Socket编程应用,客户端和服务器端的交互用ClassMessage定义,有很好的可扩展性,客户端负责界面维护和收集用户输入的信息,及错误处理。服务器维护在线用户的基本信息和任意两个对战用户的棋盘信息,动态维护用户列表。在人机对弈中通过深度搜索和估值模块,来提高电脑棋手的智能。分析估值模块中的影响精准性的几个要

5、素,以及提出若干提高精准性的办法,以及对它们搜索的节点数进行比较,在这些算法的基础上分析一些提高电脑AI方案,如递归算法、电脑学习等。算法的研究有助于理解程序结构,增强逻辑思维能力,在其他人工智能方面也有很大的参考作用。关键词:围棋,信息自动化,游戏,javaABSTRACTAsachessathleticsports,thefolkverypopular,tofamiliarwithrenjurulesandskills,andresearchsimpleartificialintelligence,decidedtouseJavadevelopmentrenjugame.Maincompl

6、etedtheman-machineagainstandbetweenplayersnetworkingagainsttwofunctions.NetworkconnectionpartsforSocketprogrammingapplication,theclientandtheserverinteractionwithscale-upmacrodefinition,haveverygoodscalability,theclientisresponsibleformaintenanceandcollectuserinterfaceinput,anderrorhandling.Serverma

7、intenance,onlineusersofthebasicinformationandanytwoagainsttheuserboardinformation,dynamicmaintenanceuserlist.Intheman-machinerightthroughthedepthsearchandvaluationsmodule,toimprovetheintelligentcomputerplayer.Analysestheinfluenceofvaluationmoduleprecisionofseveralelements,andputsforwardsomemeasureso

8、fimprovingprecision,andtheysearchnumberofnodesinthecomparison,inthesealgorithmisanalyzedonthebasisofsomeimprovecomputerAIscheme,suchasrecursionalgorithm,computerlearning,etc.Thealgorithmforhelptounderstandtheprogramstructure,strengthenthelogicalthinkingability,inotherartificialintelligencealsohaveve

9、rygreatreferencerole.Keywords:informationautomation,games,Java目录TOCo1-3hzuHYPERLINKl_Toc20195Java程序课程设计任务书PAGEREF_Toc20195IIHYPERLINKl_Toc29628摘要PAGEREF_Toc29628IVHYPERLINKl_Toc25563ABSTRACTPAGEREF_Toc25563VHYPERLINKl_Toc7405目录PAGEREF_Toc7405VIHYPERLINKl_Toc9495第1章引言PAGEREF_Toc94951HYPERLINKl_Toc172

10、591.1背景PAGEREF_Toc172591HYPERLINKl_Toc43921.2课程设计内容PAGEREF_Toc43922HYPERLINKl_Toc15841.3任务分工PAGEREF_Toc15844HYPERLINKl_Toc17167第2章围棋对弈系统PAGEREF_Toc171675HYPERLINKl_Toc216312.1围棋概述PAGEREF_Toc216315HYPERLINKl_Toc133682.1.1围棋定义PAGEREF_Toc133686HYPERLINKl_Toc216052.1.2开发围棋的任务及目的PAGEREF_Toc216057HYPERLIN

11、Kl_Toc9022.2主要系统介绍PAGEREF_Toc9027HYPERLINKl_Toc77052.3本章小结PAGEREF_Toc77058HYPERLINKl_Toc4527第3章围棋对弈系统的设计PAGEREF_Toc45279HYPERLINKl_Toc315943.1系统需求分析PAGEREF_Toc315949HYPERLINKl_Toc1394用户登陆界面图PAGEREF_Toc13949HYPERLINKl_Toc50273.2系统开发及运行环境PAGEREF_Toc502710HYPERLINKl_Toc77823.3系统主要功能要求PAGEREF_Toc778211H

12、YPERLINKl_Toc285553.4.系统总体结构PAGEREF_Toc2855512HYPERLINKl_Toc131823.5本章小结PAGEREF_Toc1318213HYPERLINKl_Toc24173第4章围棋对弈系统的具体实现PAGEREF_Toc2417314HYPERLINKl_Toc252064.1界面设计PAGEREF_Toc2520614HYPERLINKl_Toc195294.1.1用户登陆界面图PAGEREF_Toc1952914HYPERLINKl_Toc245074.1.2用户注册界面图PAGEREF_Toc2450715HYPERLINKl_Toc231

13、924.1.3系统主界面PAGEREF_Toc2319218HYPERLINKl_Toc47554.2程序设计及调试运行PAGEREF_Toc475521HYPERLINKl_Toc226174.3本章小结PAGEREF_Toc2261721HYPERLINKl_Toc18322第5章结束语PAGEREF_Toc1832222HYPERLINKl_Toc23348致谢PAGEREF_Toc2334823HYPERLINKl_Toc21404参考文献PAGEREF_Toc2140424HYPERLINKl_Toc2800附录源代码PAGEREF_Toc280025第1章引言1.1背景围棋是一种H

14、YPERLINK/view/632914.htmt_blank智力游戏,起源于HYPERLINK/view/61891.htmt_blank中国。中日韩是现今围棋的三大支柱,但近年来HYPERLINK/view/980831.htmt_blank日本围棋逐步衰弱,形成了中韩争霸的局面。围棋是中华民族HYPERLINK/view/29087.htmt_blank传统文化中的瑰宝,它体现了中华民族对智慧的追求,古人常以“HYPERLINK/view/206289.htmt_blank琴棋书画”论及一个人的才华和修养,其中的“棋”指的就是围棋。被人们形象地比喻为黑白世界的围棋,是我国古人所喜爱的娱乐

15、竞技活动,同时也是人类历史上最悠久的一种棋戏。由于它将科学、艺术和竞技三者融为一体,有着发展智力,培养意志品质和机动灵活的战略战术思想意识的特点,因而,几千年来长盛不衰,并逐渐地发展成了一种国际性的文化竞技活动。围棋是一种策略性二人棋类游戏,使用格状HYPERLINK/view/385157.htmt_blank棋盘及黑白二色HYPERLINK/view/316813.htmt_blank棋子进行HYPERLINK/view/17808.htmt_blank对弈。目前围棋流行于HYPERLINK/view/398058.htmt_blank亚太,覆盖世界范围,是一种非常流行的棋类游戏。HYPE

16、RLINK/view/299139.htmt_blank中国围棋规则是数子法,围棋的本质是:谁的占地面积大谁获胜。围棋的规则十分简单,却拥有十分广阔的落子空间,使得围棋变化多端,比其它棋类复杂深奥。这就是围棋的HYPERLINK/view/92575.htmt_blank魅力所在。下围棋对人脑的HYPERLINK/view/2646.htmt_blank智力开发很有帮助,可增强一个人的计算能力、创造能力、思维能力、判断能力,也能提高人的HYPERLINK/view/970468.htmt_blank注意力和控制力。下围棋对儿童少年的智力发展起到积极作用,使他们能更好的分析事物。Java语言是当

17、今最为流行的程序设计语言之一作为一门非常优秀和极为健壮的编程语言,它同时具有的面向对象,与平台无关,分布式应用,安全,稳定和多线程等优良的特征,使用Java语言,不仅可以开发出功能强大的大型应用程序,而且Java语言本身突出的跨平台的特性也使得它特别适合于Internet上的应用开发,可以这样说,Java的出现使得所开发的应用程序“一次编写,处处可用”的实现成为了可能。近来随着计算机的快速发展,各种各样的电脑游戏层出不穷,使得我们能有更多的娱乐项目,而棋类游戏能起到锻炼人的思维和修身养性的作用,而且棋类游戏水平颇高,大有与人脑分庭抗礼之势。其中战胜过国际象棋世界冠军-卡斯帕罗夫的“深蓝”便是最

18、具说服力的代表。越来越多的具有智能的机器进入了人类的生活,人工智能的重要性如今显而易见。自己对人工智能比较感兴趣,而围棋游戏程序的开发实现这个课题,正好提供给我这样一个研究的机会,通过对人工智能中博弈方面的研究(人机对弈),让我在简单的人机对弈全局设计,以及具体到相关算法上有了深入的了解。人工智能属于计算机科学的领域,它以计算机技术为基础,近几十年来,它的理论和技术已经日益成熟,应用领域也正在不断扩大,显示出强大的生命力。人工智能大致可以分成几个学科,它们每一个都是独特的,但是它们常常又互相结合起来完成设计任务,这时,这些学科之间的差别就变的很模糊。人工智能在专家系统,自然语言理解,自动定理证

19、明,自动程序设计,人工智能在机器人学、模式识别、物景分析、数据库的智能检索、机器下棋(实质上是博弈论问题)和家用电器智能化等领域都有广泛的应用。而这个课题就是和人工智能中的博弈论领域紧密相关的。这个题目核心是人工智能和Socekt编程,。并且人工智能中的博弈部分,由于采用了大量的搜索算法,其中很多被利用到各方面。它的概念、方法和技术,正在各行各业广泛渗透。智能已经成为当今各种新产品、新装备的发展方向。所以,趁着这个机会,对人工智能中比较容易实现的人机博弈进行了解研究学习,也是很实用且很有必要的。1.2课程设计内容此课程设计是一个小游戏(围棋)的实现,主要运用了GUI(用户图形界面)API(应用

20、程序借口)来实现。此程序没有用到图片的引用,棋盘和棋子的设计完全是应用函数绘制,再加入复选框,按钮,标签及实现本游戏的用户界面布局。在页面上通过单纯的JCreator实现的下棋程序,能够实现提子,打劫等简单的下棋功能。更好的掌握java编程以及布局和设计。通过课程设计把课堂上讲的内容融会贯通,学会设计程序、开发应用软件、开发系统软件等各项工作。通过实习掌握语言的语法结构,理解类和对象的概念,准确的使用各种数据类型,对面向对象中的继承和多态的概念要理解、会使用,在程序中提高代码的重用性,使设计的程序结构清晰、易于维护。一、棋盘盘面有纵横各十九条等HYPERLINK/view/21812.htmt

21、_blank距离、垂直交叉的HYPERLINK/view/67614.htmt_blank平行线,共构成1919361个交叉点(以下简称为“点”)。在盘面上标有几个小圆点。称为HYPERLINK/view/1511736.htmt_blank星位,中央的星位又称“HYPERLINK/view/365548.htmt_blank天元”。二、棋子棋子分黑白两色。均为扁圆形。棋子的数量以黑子181、白子180个为宜。三、围棋的下法一、对局双方各执一色棋子,黑先白后,交替下子,每次只能下一子。二、棋子下在HYPERLINK/view/385157.htmt_blank棋盘的点上。三、棋子下定后,不得向

22、其他点移动。四、轮流下子是双方的权利,但允许任何一方放弃下子权。四、棋子的气一个棋子在棋盘上,与它直线紧邻的空点是这个棋子的“气”。棋子直线紧邻的点上,如果有同色棋子存在,则它们便相互连接成一个不可分割的整体。它们的气也应一并计算。棋子直线紧邻的点上,如果有异色棋子存在,这口气就不复存在。如所有的气均为对方所占据,便呈无气状态。无气状态的棋子不能在棋盘上存在,也就是第四条HYPERLINK/view/618470.htmt_blank提子。五、提子把无气之子提出盘外的手段叫“提子”。提子有二种:一、下子后,对方棋子无气,应立即提取。二、下子后,双方棋子都呈无气状态,应立即提取对方无气之子。六、

23、计算胜负1、贴3又3/4子的规则第一步,把死子捡掉。第二步,只数一方围得点(叫做目)并记录下来(一般围得点以整十目为单位),再数刚才那一方的子数并记录下来,再把目数和子数加起来。第三步,如果数的是黑棋,再减去3又3/4子,如果数的是白棋,再加上3又3/4子。第四步,结果和180又1/2(棋盘361个点的一半)比较,超过就算胜,否则判负。2、让先与让子让先不贴目,让子要贴还让子数的一半(就当被让方是预先收了单官)。1.3任务分工第2章围棋对弈系统2.1围棋概述网络围棋在中国的出现几乎跟随着互联网同步成长,1998年,联众率先推出了网络围棋对弈。几年来各大网络围棋平台先后上线,出身各异,水平也参差

24、不齐。根据网络资料显示,截止2007年底,中国网络围棋平台平均在线人数达6万人。大型的游戏平台如QQ游戏、联众游戏中都有围棋游戏。也就是说QQ围棋、联众围棋都是镶嵌在其游戏平台之上。依靠游戏平台用户人数的优势,这两个平台围棋用户人数占据了网络围棋用户的半数之多。但根据专业人士分析:这部分用户无论在产品使用深度和对围棋的认知上是绝对的新手,浅尝辄止,他们大多是过客。同时他们的围棋软件本身也不够专业。专业的网络围棋平台才是中国网络围棋普及和发展的出路。目前国内的专业网络围棋平台,大致可分使用韩产软件和国产软件两大类。国内专业围棋平台的领军人物弈城、TOM,便是使用韩产软件的代表。两平台能够实现中韩

25、对垒的特性,为他们吸引了不少高水平的棋手,并受到棋友的广泛认可。但他们同样有一个死穴,就是两家皆为购买韩国软件,不掌握主动权,因此根本无法保证软件的及时更新,容易受制于韩方。“弈城事件”便将这个致命缺点暴露无疑。经典的围棋系统有:Handtalk,Goemate,Wulu,他是陈志行的作品,曾多次获得过冠军。在他的指导下一个研究小组编写了乌鹭(WUIU),也在比赛中取得过亚军。Handtalk是用汇编语言编写的,执行速度快,程序本身也不大。由于程序并不大,可以推侧出其所用到的模式资料也不多。Handtalk在大多数的情况下都不会失误,作者本人曾提到他是用到一种类似人类棋手在下围棋时常用到的手割

26、法来帮助判断的。Handtalk与其它的程序明显不同的地方是它的攻杀能力特别强,在大多数的比赛中,都是通过吃掉对方几块棋而获胜。这是由于程序的棋块安危判断能力、形势判断能力、眼位判断能力和模式匹配能力都很强的关系.这些系统的好坏,跟设计者的棋力关系很大,作者本人具有近职业水准的棋力,对Handtalk的编写很有2.1.1围棋定义围棋是人生的模拟。开局时,盘上一片空白,就好像一个刚刚有了自觉意识的小孩,睁开了懵懂的双眼,开始了自己的人生之路。开局时,你可以有各种选择,自由度最大,走哪一步都不会让你立刻输掉。布局基本上是兴趣的显示,有喜欢大模样的,那是寄希望于未来的做法;有现实地捞空的;有顺应对方

27、的思路,不知不觉中达到自己目的的;也有处处与对方作对,即使自己不爽,也要给对方添堵的。由于棋盘的广大,不可能面面俱到地行棋。过程中,对局者不断地在判断、取舍,好像人生开始在选择自己的道路了。看着这里想要,那里也想要,可是没法面面俱到,终究只能选取一条路。有时候,你的招法对路,越走越畅,有的时候就有问题,想要的没要到,越下越添堵。优势时,好比人生得意时,心情很爽,最好一直就这么下去;劣势时,千方百计寻找对手的破绽,伺机翻盘。心理毅力强的人,总能把弦绷得紧紧的,一直像甲鱼一样咬住对手;心理软弱的人,很早就放弃抵抗,认输投降。优势时被对方翻盘了,就好像原本胜券在握的一件事情,被自己搞砸了,懊悔痛恨都

28、没有用;大败的棋,忽然找到对手的漏勺又赢了回来,就好像本已被逼到绝境,却又咸鱼翻生,大获全胜,心情之爽,难以表达!由于围棋的棋盘相对比较广大,过程也较反复,一盘棋下来,通常势均力敌的对手都会有不止一次的获胜机会。这种翻来覆去的体验,非常象人生经历的一种浓缩、抽象。人生,是不可重复的,因此在迈出想要尝试的一步时,有可能随之而来的,是非常惨痛的代价。而围棋的过程,可以让你在做出种种尝试后付出最少的代价大不了输一盘棋么?推掉再来就是了。我想,这就是围棋的魅力之所在吧。2.1.2开发围棋的任务及目的随着Intemet的普及,网络游戏己经成为大家耳濡目染的新生事物。网络游戏从出现到现在发展的时间很短,但

29、是其发展速度却非常之快。现在,可以说网络游戏已经成为人们休闲、娱乐的有效方式。网络游戏种类很多,目前主要分战略类、RPG类、棋牌类等几种,常见的棋牌类游戏有中国象棋、国际象棋、围棋、桥牌、拱猪、麻将等。网络游戏具有如下特征:(1)有一个或多个游戏服务器启动特定游戏服务;(2)游戏者到游戏网站下载客户端程序并申请游戏账号。然后启动客户端程序通过某种网络协议连接游戏服务器。(3)客户端负责处理客户端显示和操作界面,具有简单的逻辑处理功能力,同时负责接收发送与服务器端交互的数据包。(4)服务器程序负方处理服务器端逻辑、游戏逻辑、客户之间的网络信息传递,以及数据库之间的数据读取保存工作。同时服务器端还

30、要承担客户端数据的接收、转发工作。(5)网络游戏常用的网络协议有Internet的TCp/IP协议、适用于局域网(如红色警报联网等采用)的IPX协议。虽然目前很多围棋游戏正在运行,但是使用java平台开发的游戏少之又少,这就使得围棋客户端的运行平台十分有限,不能满足今后发展的需求,如移动客户端,就基本上没有。因此开发一套基于java的围棋系统十分必要。2.2主要系统介绍主要功能包括:用户连接服务器之后:1、新用户可以注册。2、老用户必须登陆,才可以玩游戏等其他动作。开始游戏之后:1、用户双方选择白棋和黑棋。2、任何一方可以随时随地认输,游戏结束。4、要实现围棋最基本吃掉对方的法则。此设计为本站

31、原创作品。其中包括:源程序,可执行程序,论文,录像,使用说明。2.3本章小结这一章介绍了当前围棋应该具备的功能模块,并提供了市面上比较流行的围棋系统作为参考。在这一章中,我们可以了解什么是围棋系统,当前围棋系统的市场需求,还有一个围棋系统应该的开发目标。第3章围棋对弈系统的设计这一章时介绍开发环境和用到的开发工具,系统主要的功能设计,系统的数据流程图。3.1系统需求分析用户登陆界面图3.设计流程(带流程图)用户界面棋盘展示复选框:白子先x复选框:黑子先按钮:游戏开始按钮:重置游戏标签:赢或输3.设计流程(带流程图)运行游戏游戏重置游戏初始化用户界面白棋赢黑棋赢白字先黑子先判断准备就绪游戏开始落

32、子3.2系统开发及运行环境硬件平台:CPU:P41.8GHz。内存:256MB以上。软件平台:操作系统:WindowsXP。开发工具包:JDKVersion1.6.2。JSP服务器:Tomcat6.0。浏览器:推荐使用IE6.0。分辨率:最佳效果1024768像素。3.3系统主要功能要求系统设计目标如下:主要功能包括:1、能够在局域网上实现多人在线对战。用户连接服务器之后:1、新用户可以注册。2、老用户必须登陆,才可以玩游戏等其他动作。3、登陆之后,用户可以选择跟哪个在线玩家对战,如果对方同意,游戏开始。4、如果有以前没有下完的棋谱,可以选择读取棋谱,看看每一部是怎么走的。开始游戏之后:1、用

33、户双方选择白棋和黑棋。2、任何一方可以随时随地认输,游戏结束。3、如果双方没有下完,可以保存棋盘。4、要实现围棋最基本吃掉对方的法则。此设计为本站原创作品。其中包括:源程序,可执行程序,论文,录像,使用说明。3.4.系统总体结构图3.1系统功能结构图介绍:各功能模块实现的功能为:围棋数据管理黑子入库新增模块黑子入库提子模块白子入库新增模块修改入库单和入库报表模块库存查询模块库存管理功能模块图如图3.2所示。图3.2库存管理功能模块图3.5本章小结通过对围棋游戏的编写,使自己对java语言有了更深的了解。让我渐渐体会到了JAVA的博大精深。以及怎么学习JAVA,怎么学习计算机语言,怎样对问题进行

34、解决和运用JAVAGUI,查找JAVAAPI的使用都用了更进一步的理解。也更加熟悉和了解了java开发工具Eclipse的使用同时,程序在编写完毕之后还有很多地方需要完善。例如:可以把另一方选择为电脑方,让电脑自动下,也可以给游戏添加背景音乐;甚至可以修改成网络游戏,用户可以在网上对战。总之,有很多地方可以扩充和完善。在此次设计过程中我也学到了许多了关于计算机方面的知识,编程能力有了很大的提高。第4章围棋对弈系统的具体实现界面是系统之间最直接的交互界面,界面的友好性体现了软件设计的质量,并在很大程度上决定了软件是否成功。4.1界面设计4.1.1用户登陆界面图图4.1.1用户登录模块框图图4.1

35、用户登陆界面此loginDialog函数的作用是检测用户登陆的合法性,并确认用户输入了合法的登录名和口令。部分代码:login=newJDialog();login.setTitle(登录);/设置标题login.setLayout(newFlowLayout();/利用流布局来设置窗口的布局login.add(newJLabel(用户名:);/添加标签为用户名的对象finalJTextFieldname=newJTextField(10);/设置文本框中字符不得超过10个login.add(name);login.add(newJLabel(密码:);finalJPasswordFieldp

36、assword=newJPasswordField(10);/设置密码框中字符不得多于10个password.setEchoChar(*);/设置显示密码对应的字符为*4.1.2用户注册界面图图4.2用户注册界面privatevoidregisterDialog(finalJDialogregDialog)Boxbox1=Box.createVerticalBox();box1.add(newJLabel(用户名:,JLabel.RIGHT);/添加用户名标签,用户名在标签中靠右对齐box1.add(Box.createVerticalStrut(10);box1.add(newJLabel(

37、性别:,JLabel.RIGHT);/添加性别标签,性别在标签中靠右对齐box1.add(Box.createVerticalStrut(10);box1.add(newJLabel(密码:,JLabel.RIGHT),-1);/添加密码标签,密码在标签中靠右对齐box1.add(Box.createVerticalStrut(10);box1.add(newJLabel(确认密码:,JLabel.RIGHT);/添加确认密码标签,确认密码在标签中靠右对齐Boxbox2=Box.createVerticalBox();finalJTextFieldnameTextField=newJTextF

38、ield(10);/设置用户名文本框字符不得超过10个,且文本框不能被继承box2.add(nameTextField);box2.add(Box.createVerticalStrut(8);finalCheckboxGroupcbg=newCheckboxGroup();Boxbox21=Box.createHorizontalBox();finalCheckboxcb1=newCheckbox(男,cbg,true);/复选框默认状态选定为男性box21.add(cb1);box21.add(newCheckbox(女,cbg,false);/当鼠标点击女性复选框时,flase自动变为t

39、ruebox2.add(box21);box2.add(Box.createVerticalStrut(8);/定义密码框中的字符长度小于10个finalJPasswordFieldpass1=newJPasswordField(10);box2.add(pass1);box2.add(Box.createVerticalStrut(8);finalJPasswordFieldpass2=newJPasswordField(10);box2.add(pass2);BoxbaseBox=Box.createHorizontalBox();baseBox.add(box1);baseBox.add

40、(box2);regDialog.setLayout(newFlowLayout();regDialog.add(baseBox);JButtonconfirm=newJButton(确定);/创建并声明确定按钮JButtoncancel=newJButton(取消);/创建并声明取消按钮regDialog.add(confirm);regDialog.add(cancel);regDialog.setSize(200,200);/设置大小regDialog.setResizable(false);regDialog.setLocationRelativeTo(null);confirm.ad

41、dActionListener(newActionListener()publicvoidactionPerformed(ActionEventarg0)Stringsex=null;if(cbg.getSelectedCheckbox()=cb1)sex=男;elsesex=女;if(saveUserData(nameTextField.getText().trim(),sex,newString(pass1.getPassword(),newString(pass2.getPassword()regDialog.setVisible(false);elseJOptionPane.showM

42、essageDialog(regDialog,输入有误,请检查,错误提示,JOptionPane.ERROR_MESSAGE););/获取监听器cancel.addActionListener(newActionListener()publicvoidactionPerformed(ActionEventarg0)regDialog.setVisible(false););/获取监听器4.1.3系统主界面主界面修改前主界面修改后图4.3系统主界面关键代码:voidinitMyHash(PointstartPoint,intinterval)Oneone;Pointkey;/逻辑点标志inti,

43、j;/定义i,jfor(i=1;i=19;i+)for(j=1;j=19;j+)/循环key=newPoint(i,j);one=newOne();/创建对象one.posX=startPoint.x+(i-1)*interval;/相邻点处理,获取one.posY=startPoint.y+(j-1)*interval;/相邻点处理。获取/获取相邻点one.pointAround0=newPoint(i,j-1);/上one.pointAround1=newPoint(i,j+1);/下one.pointAround2=newPoint(i-1,j);/左one.pointAround3=n

44、ewPoint(i+1,j);/右if(i=1)one.pointAround2=one.OUT;/左的周围if(i=19)one.pointAround3=one.OUT;/右的周围if(j=1)one.pointAround0=one.OUT;/上的周围if(j=19)one.pointAround1=one.OUT;/下的周围myHash.put(key,one);/我的我的哈希表并且在里键入关键字/更新盘面publicvoidpaint(Graphicsg)PointstartPoint=STARTPOINT;/创建对象,开始点intinterval=INTERVAL;/定义成员变量t

45、his.paintChessboard(g,startPoint,interval);/棋盘的操作this.paintChessman(g,startPoint,interval);/棋子的操作/画棋盘4.2程序设计及调试运行利用JSP“一次编写,各处运行”的编程优点,按功能模块结构设计菜单,布置各明细模块工作界面,编写各个模块的程序代码,进行编译连接运行,经过反复调试修改,以达到系统功能要求。这个过程具有大量的工作量,应仔细对每个程序细节进行分析思考、编写程序并调试,做到程序简洁清楚,尽量避免可能潜在的程序错误,并在必要的地方加以注释,以便于程序阅读和修改。4.3本章小结本章介绍了系统的具体

46、实现和部分关键代码,其中包括用户登录所要用到的loginDialog函数,主界面的框架设计。第5章结束语Java语言是当今最为流行的程序设计语言之一作为一门非常优秀和极为健壮的编程语言,它同时具有的面向对象,与平台无关,分布式应用,安全,稳定和多线程等优良的特征,使用Java语言,不仅可以开发出功能强大的大型应用程序,而且Java语言本身突出的跨平台的特性也使得它特别适合于Internet上的应用开发,可以这样说,Java的出现使得所开发的应用程序“一次编写,处处可用”的实现成为了可能。人工智能属于计算机科学的领域,它以计算机技术为基础,近几十年来,它的理论和技术已经日益成熟,应用领域也正在不

47、断扩大,显示出强大的生命力。近来随着计算机的快速发展,各种各样的电脑游戏层出不穷,使得我们能有更多的娱乐项目,而棋类游戏能起到锻炼人的思维和修身养性的作用,而且棋类游戏水平颇高,大有与人脑分庭抗礼之势。其中战胜过国际象棋世界冠军-卡斯帕罗夫的“深蓝”便是最具说服力的代表。致谢参考文献基于Java的远程围棋对弈软件的设计HYPERLINK/Journal/C-C6-HDJT-1999-01.htmt_blank华东交通大学学报1999年01期美RogersCadenhead.Java编程入门经典.梅兴文译.第4版.北京:人民邮电出版社,2007杨昭编著.二级Java语言程序设计教程.北京:中国水

48、利水电出版社,2006李芝兴,杨瑞龙编.Java程序设计之网络编程.清华大学出版社,2006年3宛延闿等编著.实用Java程序设计教程.北京:机械工业出版社,2006陈国君等编著.Java2程序设计基础.北京:清华大学出版社,2006郑莉.王行言.马素霞编著.Java语言程序设计.北京:清华大学出版社,2006丁振凡主编.Java语言实用教程.北京:北京邮电大学出版社,2005朱喜福等编.Java程序设计.北京:人民邮电出版社,2005(美)BruceEckel编.Java编程思想第3版.机械工业出版社,2005年9月(美)DougLea著.Java并发编程:设计原则与模式.中国电力出版社译。

49、2004年3月。Java技术论坛:HYPERLINK/疯狂Java联盟:HYPERLINK/digest.php/digest.php中文Java技术网:/附录源代码/*MainWindow*/importjava.awt.BorderLayout;importjava.awt.Button;importjava.awt.Checkbox;importjava.awt.CheckboxGroup;importjava.awt.Choice;importjava.awt.Color;importjava.awt.Dimension;importjava.awt.FlowLayout;import

50、java.awt.Frame;importjava.awt.Graphics;/抽象类,不能用于构造方法创建对象importjava.awt.GridLayout;importjava.awt.Image;importjava.awt.Label;importjava.awt.Panel;importjava.awt.Point;importjava.awt.TextField;importjava.awt.Toolkit;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.awt.ev

51、ent.MouseEvent;importjava.awt.event.WindowEvent;importjava.io.BufferedReader;importjava.io.IOException;importjava.io.InputStreamReader;importjava.io.PrintWriter;importjava.io.RandomAccessFile;.ServerSocket;.Socket;importjavax.swing.Box;importjavax.swing.JButton;importjavax.swing.JDialog;importjavax.

52、swing.JLabel;/负责创建标签对象,标签用来显示信息,但没有编辑功能importjavax.swing.JOptionPane;importjavax.swing.JPasswordField;importjavax.swing.JTextField;/利用import引用各类包publicclassMainWindowextendsFrameimplementsRunnableGopanelGo=newGo();/用Go类声明并创建一个panelGo对象ImagemyImage;intPORT;SocketsendSocket;/主动连接SocketPrintWriterwrite

53、r;/用来发送messagebooleanstopFlag;booleanisInitiative;PointmessagePoint;PointgoStartPoint=null;/初始化PointyellowPoint=null;booleanstepColor=true;PointLastPoint=null;/移除黄点时,判断位置变动BorderLayoutborderLayout1=newBorderLayout();/用BorderLayout布局Panelpanel1=newPanel();/创建面板Panelpanel2=newPanel();BorderLayoutborde

54、rLayout2=newBorderLayout();Panelpanel3=newPanel();CheckboxGroupcheckboxGroup1=newCheckboxGroup();/选项框Checkboxcheckbox1=newCheckbox();/声明创建Checkbox类的对象Checkboxcheckbox2=newCheckbox();Labellabel1=newLabel();TextFieldtextField1=newTextField();Buttonbutton1=newButton();Labellabel2=newLabel();Choicechoic

55、e1=newChoice();Buttonbutton2=newButton();GridLayoutgridLayout1=newGridLayout();/利用GridLayout布局BorderLayoutborderLayout3=newBorderLayout();publicMainWindow()/构造MainWindow方法tryjbInit();/可能发生异常的语句catch(Exceptione)e.printStackTrace();/异常处理privatevoidjbInit()throwsException/用关键字throws声明抛出异常choice1.setBac

56、kground(newColor(236,190,120);/设置棋盘底色button1.setBackground(newColor(236,190,120);this.setResizable(false);newThread(this).start();/启动监听线程this.PORT=1976;this.isInitiative=false;/是否主动连接this.stopFlag=false;/是否继续监听的标志this.choice1.addItem(黑);this.choice1.addItem(白);LastPoint=newPoint();messagePoint=newPo

57、int();this.setSize(470,450);this.setTitle(围棋程序作者:围棋对弈小组);/设置标题this.panelGo.setEnabled(false);/开始之前屏蔽掉盘面checkbox1.addMouseListener(newjava.awt.event.MouseAdapter()publicvoidmouseClicked(MouseEvente)checkbox1_mouseClicked(e););/获取监听器this.goStartPoint=this.panelGo.getLocation();/this.setLayout(borderLa

58、yout1);/设置背景布局panel1.setLayout(borderLayout2);checkbox1.setCheckboxGroup(checkboxGroup1);checkbox1.setLabel(单机);checkbox2.setCheckboxGroup(checkboxGroup1);checkbox2.setLabel(联机);/设置名为联机的复选框checkbox2.addMouseListener(newjava.awt.event.MouseAdapter()publicvoidmouseClicked(MouseEvente)checkbox2_mouseCl

59、icked(e););/获取监听器label1.setText(对方地址);/button1.setLabel(连接);/设置名为连接的按钮button1.addActionListener(newjava.awt.event.ActionListener()publicvoidactionPerformed(ActionEvente)button1_actionPerformed(e););/告诉监听器所发生的事件,并执行方法label2.setText();button2.setBackground(newColor(236,190,120);button2.setLabel(开始);/设

60、置名为开始的按钮button2.addActionListener(newjava.awt.event.ActionListener()publicvoidactionPerformed(ActionEvente)button2_actionPerformed(e););/panel3.setLayout(gridLayout1);/设置布局gridLayout1.setRows(8);gridLayout1.setColumns(1);gridLayout1.setHgap(100);gridLayout1.setVgap(10);/panel2.setLayout(borderLayout

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论