java五子棋.doc

上传人:豆**** 文档编号:29894130 上传时间:2022-08-02 格式:DOC 页数:40 大小:2.52MB
返回 下载 相关 举报
java五子棋.doc_第1页
第1页 / 共40页
java五子棋.doc_第2页
第2页 / 共40页
点击查看更多>>
资源描述

《java五子棋.doc》由会员分享,可在线阅读,更多相关《java五子棋.doc(40页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、 java五子棋论文第一章 绪论1.1开发背景:游戏软件是当今世界发展最迅速,最有影响力,最有潜力与活力的领域之一游戏软件深受广大青年人喜爱,而且在发达国家中老年人也有大部分喜欢游戏的,因此游戏软件在很大程度上给予绝大部分人精神上的娱乐第二次世界大战以后,电子计算机技术得到了突飞猛进的发展先是由晶体管代替了笨重的真空管,后来出现了集成电路和大规模集成电路,使电子子计算机一代一代实现更新,同时软件技术也发展迅速在美国,集中了许多计算机软件的设计人才,他们工作之余,时常喜爱编一种能与人斗智的“游戏”,以此来锻炼编程的能力这种“游戏”花样繁多,但其特点都是利用计算机软件事先设计好的“分析”“判断”能

2、力反过来与人较量由于不断修改更新,使计算机的“智力”水平与人难分高低到了90年代,游戏软件已经为世界各国的人使用,BLACKISLAND和Blizzard.这两个强大的游戏制作组起到了巨大的带动作用,还有中国的洛河工作室在国内也起到了巨大作用,他们让很多很多人喜欢上了游戏软件,打开了这个市场。如今游戏软件产业已经受到了广泛的关注,它年轻有潜力而且吸引人,让人们日益丰富的生活需求得以满足。五子棋游戏更是吸引着不同年龄段的人群,无论男女老少都可以玩,都喜欢玩,而当前微型计算机已经是在广大人群中流行着,用电脑来下五子棋更是一种时尚。五子棋相传起源于四千多年前的尧帝时期,比围棋的历史还要悠久,可能早在

3、“尧造围棋”之前,民间就已有五子棋游戏。有关早期五子棋的文史资料与围棋有相似之处,因为古代五子棋的棋具与围棋是完全相同的。在上古的神话传说中有“女娲造人,伏羲做棋”一说,增山海经中记载:“休舆之山有石焉,名曰帝台之棋,五色而文状鹑卵。”李善注引三国魏邯郸淳艺经中曰:“棋局,纵横各十七道,合二百八十九道,白黑棋子,各一百五十枚”。可见,五子棋颇有渊源。亦有传说,五子棋最初流行于少数民族地区,以后渐渐演变成围棋并在炎黄子孙后代中遍及开来,可以说五子棋是我们的国粹之一了。而当前五子棋程序的发展也非常快,从最初的双人发展到人机(有AI),然后到现在的网络对战,已经受到越来越多人的喜爱和重视。1.2课题

4、意义:人类之所以不断在进步,是因为我们人类一直不断的在思考,五子棋游戏程序的开发符合人类进步也是促进人类进步的一大动力之一。五子棋游戏程序让人们方便快捷的可以下五子棋,让人们在何时都能通过下棋来提高逻辑思维能力,同时也培养儿童的兴趣以及爱好,让孩子更加聪明。同时,五子棋游戏程序的开发也使得五子棋这个游戏得到了广泛的推广,让世界各地的人们知道五子棋,玩上五子棋,这已经不是局限。五子棋游戏程序使得越来越多的人喜欢上了五子棋,热爱下五子棋,它是具有很好的带动性的。随着互联网络的不断普及,越来越多的人可以在网络上就能够与他人下五子棋了。1.3五子棋游戏的发展与现状:目前,连珠这一棋类运动已迅速在国际上

5、发展起来。外国人都十分看好这一不 起眼的智力游戏,并认为五子棋不仅能提高思维、开发智力、手脑并用、修身养性 而且富含哲理,具有东方的神秘和西方的直观,是中西文化的交汇点。许多国家的人对五子棋都有不同的爱称,例如韩国人把五子棋称之为“情侣棋”,言下之意是情人之间下五子棋有利于增加情感的交流;欧洲人称之为“中老年棋”,表示五子棋适合中老年人的生理特点和思维方式;美洲人喜欢将五子棋称之为“商业棋”,就是说商人谈生意时可边下棋边谈生意,棋下完了生意也谈成了。由此可见,尽管国度不同,语言各异,但人们都可以借助五子棋这一简单而又深奥的棋艺进行交流、比赛,增进友谊。当前,有多个国家和地区都在下五子棋,并有各

6、种规模和级别的比赛。年月在日本京都、年月在俄罗斯联邦的莫斯科、年月在瑞典、年月在爱沙尼亚的塔林分别举行了第一、二、三、四届世界锦标赛。除第三届的冠军是爱沙尼亚人之外,其余三届的冠军都是日本人。五子棋 的世界锦标赛,每两年举办一次,其申国竞争也十分激烈。日本目前拥有自己的五子棋职业棋手,并且对连珠(五子棋)技术的研究也相当普遍和全面,就水平也正在日益增强。同时,五子棋的理论研究与探索也呈现蓬勃发展的势头,从年第一部五子棋专著问世以来,目前,全世界有多种五子棋的书籍及期刊,分别以日文、俄文、英文、瑞典文及中文出版发行。五子棋在我国的北京、上海、天津、云南、浙江、广东、四川、湖北、辽宁、新疆、河北等

7、省(区)市都有很大的发展。北京多次举办了北京地区的五子棋赛,如“思曼杯”、“京空杯”、“奇奇童杯”、“北京第六届民族团结杯”和“北京第四岂民族运动会”的五子棋比赛。上海地区举办了“上文杯”五子棋大赛。云南省以及其他省市亦举办过许多五子棋比赛。所有这些赛事都越来越多地吸引了无数人们的关注,表明了根埴于中国的五子棋有着广泛的群众基础,是群众喜闻乐见的体育活动。而现在,很多很多游戏平台上面都有五子棋游戏供我们玩,任何游戏平台上面只要有棋牌类游戏的,那么它就有五子棋在里面,网络五子棋比赛,在联众,263,QQ游戏,UC里进行了10几年了可见,五子棋游戏在网络上面是非常火暴的,而且在棋牌游戏里面玩家人数

8、排名总会占到很前面,不愧是风靡全球的棋牌游戏啊!在未来中,将会有越来越多的人关注五子棋,喜欢五子棋,那么将其变为商业化也会越来越多,而且还可以以教育孩子的方式来将其嵌套进去,或者用来做测试等等,可以说以后的五子棋游戏会是那么的精彩,那么的让人憧憬。那么对于它的游戏开发和发展也将会上升到举足轻重的地位去,它的发展会是相当之快的,就让我们拭目以待吧。1.4论文的组织结构:本文由第一章绪论,第二章介绍软件的基本功能和特点,第三章软件的总体设计,第四章软件各个功能的设计与实现,第五章总结,参考文献和致谢七部分组成。第一章绪论由研究背景、五子棋的发展前景、五子棋程序的基本步骤和本文的组织结构组成。第二章

9、介绍软件的开发工具和和软件的基本功能,另外介绍软件所要实现的目标。第三章软件总体设计和软件的总体分析。第四章详细分析软件各模块的设计与实现包括绘制棋盘、下棋功能、判断胜负、下棋信息、时间设置、认输以及悔棋等功能组成。第五章介绍软件的操作以及演示。最后第六章为总结和致谢。 第二章 五子棋程序的介绍与规划2.1软件的基本功能:1 显示一个十九行十九列的围棋棋盘。2 在棋盘上面在对应位置通过点击鼠标下子,棋盘上将在相应的位置上显示棋子,并且棋子在横纵交点上。3 可以自动判断游戏是否结束,是否黑方或者是白方已经胜利,并且跳出对话框来提示玩家。4 在游戏棋盘上方会有一个游戏信息,这个游戏信息是用来提示当

10、前是黑白双方的哪一方下子,玩家可以根据这个提示来相应的下棋,而不会导致不清楚轮到哪一方下棋。5 可以重新开始游戏,并且有认输功能,在下棋提示上提示哪方时点认输,哪一方就输了,并且有悔棋功能。6 还可以对游戏时间进行设置,判断是否超出规定的时间,如果超出时间则自动判断为输。2.2开发运行环境:1. 中心处理器:双核1.6GHZ;2. 内存:1G;3. 硬盘:320G;4. 操作系统:WINDOWSXP;5. 开发工具:MyEclipse7.5;6. 编程语言:JAVA。2.3软件的开发手段以及工具的介绍:此软件我是通过MyEclipse这个开发软件来开发的,用的是JAVA语言编写。将会用到Swi

11、ng来编程序,Swing是在JAVA的基础图形化用户界面AWT的基础上拓展的API集,Swing的功能是通过JAVA代码编写窗口程序,创建图形化的用户界面(GUI)。Swing可以创建窗体、面版,在窗口中导入或者绘制图片,或者输入文本信息等等,结合JAVA的JDBC和/或IO操作可以实现数据的保存。Java是一种简单的,面向对象的,分布式的,解释型的,健壮安全的,结构中立的,可移植的,性能优异、多线程的动态语言。JAVA的特点是:1、Java语言是简单的。Java语言的语法与C语言和C+语言很接近,使得大多数程序员很容易学习和使用Java。另一方面,Java丢弃了C+ 中很少使用的、很难理解的

12、、令人迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换。特别地,Java语言不使用指针,并提供了自动的废料收集,使得程序员不必为内存管理而担忧。2、Java语言是一个面向对象的。Java语言提供类、接口和继承等原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为implements)。Java语言全面支持动态绑定,而C+ 语言只对虚函数使用动态绑定。总之,Java语言是一个纯的面向对象程序设计语言。3、Java语言是分布式的。Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(),它提供了

13、用于网络应用编程的类库,包括URL、URLConnection、Socket、 ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。4、Java语言是健壮的。Java的强类型机制、异常处理、废料的自动收集等是Java程序健壮性的重要保证。对指针的丢弃是Java的明智选择。Java的安全检查机制使得Java更具健壮性。5、Java语言是安全的。Java通常被用在网络环境中,为此,Java提供了一个安全机制以防恶意代码的攻击。除了Java语言具有的许多安全特性以外,Java对通过网络下载的类具有一个安全防范机制(类ClassLoader),如分配不同的名字

14、空间以防替代本地的同名类、字节代码检查,并提供安全管理机制(类SecurityManager)让Java应用设置安全哨兵。 6、Java语言是体系结构中立的。Java程序(后缀为java的文件)在Java平台上被编译为体系结构中立的字节码格式(后缀为class的文件), 然后可以在实现这个Java平台的任何系统中运行。这种途径适合于异构的网络环境和软件的分发。 7、Java语言是可移植的。这种可移植性来源于体系结构中立性,另外,Java还严格规定了各个基本数据类型的长度。Java系统本身也具有很强的可移植性,Java编译器是用Java实现的,Java的运行环境是用ANSI C实现的。8、Jav

15、a语言是解释型的。如前所述,Java程序在Java平台上被编译为字节码格式, 然后可以在实现这个Java平台的任何系统中运行。在运行时,Java平台中的Java解释器对这些字节码进行解释执行,执行过程中需要的类在联接阶段被载入到运行环境中。9、Java是高性能的。与那些解释型的高级脚本语言相比,Java的确是高性能的。事实上,Java的运行速度随着JIT(Just-In-Time)编译器技术的发展越来越接近于C+。 10、Java语言是多线程的。在Java语言中,线程是一种特殊的对象,它必须由Thread类或其子(孙)类来创建。通常有两种方法来创建线程:其一,使用型构为Thread(Runna

16、ble) 的构造子将一个实现了Runnable接口的对象包装成一个线程,其二,从Thread类派生出子类并重写run方法,使用该子类创建的对象即为线程。值得注意的是Thread类已经实现了Runnable接口,因此,任何一个线程均有它的run方法,而run方法中包含了线程所要运行的代码。线程的活动由一组方法来控制。 Java语言支持多个线程的同时执行,并提供多线程之间的同步机制(关键字为synchronized)。11、Java语言是动态的。Java语言的设计目标之一是适应于动态变化的环境。Java程序需要的类能够动态地被载入到运行环境,也可以通过网络来载入所需要的类。这也有利于软件的升级。另

17、外,Java中的类有一个运行时刻的表示,能进行运行时刻的类型检查。Java语言的优良特性使得Java应用具有无比的健壮性和可靠性,这也减少了应用系统的维护费用。Java对对象技术的全面支持和Java平台内嵌的API能缩短应用系统的开发时间并降低成本。Java的编译一次,到处可运行的特性使得它能够提供一个随处可用的开放结构和在多平台之间传递信息的低成本方式。特别是Java企业应用编程接口(Java Enterprise APIs)为企业计算及电子商务应用系统提供了有关技术和丰富的类库。MyEclipse是对Eclipse IDE的扩展,利用它我们可以在数据库和J2EE的开发、发布,以及应用程序服

18、务器的整合方面极大的提高工作效率。它是功能丰富的J2EE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML, Struts, JSF, CSS, Javascript, SQL, Hibernate。在结构上,MyEclipse的特征可以被分为7类:1. J2EE模型2. WEB开发工具3. EJB开发工具4. 应用程序服务器的连接器5. J2EE项目部署服务6. 数据库服务7. MyEclipse整合帮助对于以上每一种功能上的类别,在Eclipse中都有相应的功能部件,并通过一系列的插件来实现它们。MyEclipse结构上的这种模块化,可以让我们在不影响其他模块的情况下,

19、对任一模块进行单独的扩展和升级。简单而言,MyEclipse是Eclipse的插件,也是一款功能强大的J2EE集成开发环境,支持代码编写、配置、测试以及除错。2.4软件的实现目的:五子棋游戏程序所要实现的目的是让我们可以在电脑上下棋,而不需要去买,可以随时玩,方便快捷。而且能更好的推广五子棋于世界各地,此软件也在于提供给爱好五子棋的人,也吸引更多的人喜欢上五子棋,也具有很大很大的商业价值。使五子棋游戏程序在以后的制作中功能越来越强大,外观越来越好看。 第三章 软件总体设计与分析3.1用户需求分析: 通过软件功能的分析,根据五子棋爱好者的需求,得出以下需求信息:1. 具有重新开始功能;2. 具有

20、认输功能;3. 具有提示该轮到哪一方下棋的功能;4. 退出游戏功能;5. 判断胜负功能;6. 时间设置功能;7. 悔棋功能。还有用户对游戏界面的要求,通过上述的用户需求,我们可以得出一个总体的设计方案。由上述的用户需要,可以对程序的基本功能进行一个有效的分析,规定下游戏的基本功能,基本功能如下结构图。3.2软件功能结构图:此五子棋程序最主要的四大功能是:下棋,判断胜负,重新开始与认输,游戏时间设置。大体的功能如下图:五子棋程序十九行十九列的棋盘。黑白双方轮流落子,不能重复落同一位置。在棋盘上下子,棋子落在交点上。判断横,竖,斜方向够五子相连为赢。显示游戏信息,提示当前轮到哪一方落子。重新开始游

21、戏和认输以及退出游戏功能。时间设置,在规定时间内下完,否则判输。3.3软件各个功能的简要说明:1. 绘制十九行十九列的棋盘:首先是每行每列的距离都是一样的,并且棋盘上面有八个星,棋盘中间有个天元点,跟围棋的棋盘一样。2. 棋盘上面落子:点击鼠标以后,会在相应位置落下棋子,并被绘制出来,黑子是一个实心的黑圆,白子是一个实心的白圆加上一个等大空心的黑圆。棋子落在交点上:我们在下五子棋棋的时候,棋子都是会落在交点上的,而并非落在格子里面,那么我们就要规定当我点击鼠标时,选取距离鼠标所取点的最近的左上交点为绘制棋子的中心点,那么就可以实现棋子落在交点上了。3. 黑白双方轮流落子:黑方落子以后就要轮到白

22、方,交替进行,这是下棋的基本要求,因此我们就要弄一个互斥事件进去,让他们交替的落子。不能落在相同位置:当我们落子时,会不小心落到相同位置上去,那么就要出现提示,不能落在相同位置上,需要重新落子,实现的设想是当这个点已经绘制过棋子以后,我们就要给一个布尔变量,让它为假,那么只能在它为真时才能绘制棋子,否则就要重新落子到别的地方去。4. 判断输赢:当五个相同颜色子都连在了一起的时候,我们就要判其为赢,这五个子可以在横竖方向上连起,也可以在斜方向上连起。5. 游戏信息:我们应该在棋盘的上面设置一个游戏信息的,用来提示当前轮到哪一方下棋了,以便于玩家知道谁在下,这个功能只要在黑白双方轮流下棋功能的过程

23、中添加一个提示信息用于显示到界面上的就可以了。6. 重新开始游戏就是把棋盘上的子全部清空,回复到一开始的时候的状态,重置之前所有的数据。认输的功能就是在判断输赢功能的基础上添加的,让玩家对自己没信心的时候使用。退出游戏的功能就是直接把窗口关闭就可以了。7. 时间设置:时间设置功能要调用到线程和监听,他的主要作用是给玩家设置规定的时间,也是五子棋游戏的一个下法规则,当哪一个玩家超出了规定的时间时,那么就会判断他输了,并且弹出对话框提示以及重新开始游戏。3.4软件设计中使用到的JAVA软件包以及类和方法:在用JAVA设计软件的时候,使用到SUM公司提供的一些软件包,这样使得我们编写程序更加简便,以

24、下是使用到的软件包:Javax.swing.JFrame /javax.swing软件包提供一组“轻量级”(全部是 Java 语言)组件,尽量让这些组件在所有平台上的工作方式都相同。JFrame 类是java.awt.Frame 的扩展版本,该版本添加了对 JFC/Swing 组件架构的支持。JFrame 是用来创建窗体的swing 类,用来创建一个图形界面的原始窗口,并且可以设置其大小,位置等属性,是swing 编程的基础类之一。JFrame这个类中,我们将要用到的主要方法是:setVisible(); /设置窗体是否显示,里面填上true,那么窗体就可以显示出来了,如果填false,窗体不

25、显示。setTitle(); /设置窗体的标题,需要什么标题,就在里面写上你的标题就可以了,比如我要填入五子棋作为标题,那么可以这样写: setTitle(“五子棋”)。setSize(); /设置窗体大小,这里需要设置的窗体是一个平面的,所以设置窗体大小的时候有高度和宽度这两个像素,输入两个像素就可以确定窗体的大小了。setLocation(); /设置窗体初始显示的位置,作用是把窗体初始显示的位置摆到让用户看起来舒服的位置。setResizable(); /设置窗体的大小是否可以改变,为了方便用户使用,可让用户自己拉大或者拉小窗体,达到用户需要的要求。setDefaultCloseOper

26、ation(JFrame_EXIT_ON_CLOSE); /设置窗体关闭方式,关闭窗体的同时结束程序,这样就不会一直占用用户的内存去运行程序,只要不玩了,程序就会自动关闭,这个是游戏软件最基础的以及最必要的一个功能作用。Java.awt /java.awt 软件包包含用于创建用户界面和绘制图形图像的所有类。Java.awt.Toolkit /Toolkit此类是所有 Abstract Window Toolkit 实际实现的抽象超类。Toolkit 的子类被用于将各种组件绑定到特定本机工具包实现。Toolkit.geiDefaultToolkit().getScreenSize().width

27、; Toolkit.geiDefaultToolkit().getScreenSize().height; /以上这两个方法的作用是取得我们电脑显示屏幕的宽度以及高度。geiDefaultToolkit()为获取默认工具包,如果名为java.awt.headless 的系统属性被设置为 true,则使用 Toolkit 的 headless 实现。 如果不存在 java.awt.headless 或 java.awt.headless 被设置false,且存在名为 awt.toolkit 的系统属性,则该属性将被视为 Toolkit 子类的名称;否则将使用特定于平台的默认 Toolkit 实现

28、。 getScreenSize()这个方法是获取屏幕的大小。在具有多个显示屏的系统上,使用主显示屏。从 GraphicsConfiguration 和 GraphicsDevice 可以获得多屏幕感知显示尺寸。Javax.swing.JOptionPane / JOptionPane 有助于方便地弹出要求用户提供值或向其发出通知的标准对话框。下面用到JOptionPane 的方法有以下几个:JOptionPane.showMessageDialog(); /这个方法是显示一个消息对话框,主要用来提示信息。showMessageDialog(mf,”我要输入的信息”),这样用以提示用户现在的情况

29、。JOptionPane.showConfirmDialog(); /这个方法跟前一个方法有点类似,不过它是有判断的。作用是显示一个确认对话框,用户选择对话框中的选项,然后根据选项返回结果进行判断,需要判断什么,写程序的时候可以自己添加进去,功能更加强大。JOptionPane.showInputDialog(); /显示请求用户输入内容的问题消息对话框,它以 parentComponent 为父级。输入值将被初始化为 initialSelectionValue。该对话框显示于 Component 的窗体的上部,通常位于 Component 之下。显示一个信息输入对话框,它的作用是用来保存用户

30、输入的信息。Java.awt.event.MouseListener /MouseLinstener 是鼠标监听,功能是接收用户通过鼠标所做的操作,可以取得用户点击鼠标的坐标,从而进行其他的操作。MouseLinstener的使用方法是需要调用到JFrame 的 addMouseListener 方法加入监听。它有以下几个方法,是我们写程序需要用到和了解的:mouseClicked(MouseEvent e) ; /监听鼠标点击事件的操作,对鼠标点击以后进行处理。mouseEntered(MouseEvent e) ; /监听鼠标进入事件的操作,对鼠标进入某个指定区域以后进行处理。mouseE

31、xited(MouseEvent e) ; /监听鼠标离开事件的操作,对鼠标离开某个指定区域以后进行处理。mousePressed(MouseEvent e) ; /监听鼠标按下事件的操作,对鼠标按下以后进行处理,这个在我们的五子棋用需要着重用到的。mouseReleased(MouseEvent e) ; /监听鼠标抬起事件的操作,对鼠标按下后抬起进行处理。鼠标点击时执行的顺序是:mousePrssed mouseReleased mouseClicked /由此可以判断按西与抬起是否在同一个位置。MouseEvent类有以下两个需要用到的方法:getX() ; /得到鼠标的横向位置的坐标,

32、用于判断棋子的位置的时候是需要到的。getY() ; /得到鼠标的纵向位置的坐标,用于判断棋子的位置的时候是需要到的。Graphics 类, 它的功能是类似于画笔的功能,用来在窗口中绘制文字以及图形等。他的调用是通过覆写JFrame 的 paint() 方法来使用的,通过 repaint() 方法来调用。它有以下方法:drawstring() ; /绘制字符串。drawOval() ; /绘制一个空心的圆形,用与绘制我们一会五子棋中的白棋需要到的。fillOval() ; /绘制实心的圆形,也是用到来绘制棋子。drawline() ; /绘制一条直线,用来画我们的棋盘。drawRect() ;

33、 /绘制一个空心的矩形,功能按钮用到。fillRect() ; /绘制一个实心的矩形。drawImage() ; /绘制一个已经存在的图片,将一个图片直接显示到窗体只中去。setColor() ; /设置画笔的颜色。比如:setColor(Color.RED),那么就把它的颜色设置成了红色。setFont() ; /设置绘制文字的字体类型。比如:setFont(new Font(“黑体”,10,10),那么它的字体就是黑体,大小是10。Java.io.File /这个是产生中断并且调用文件用到的类。Java.io通过数据流、序列化和文件系统提供系统输入和输出。File 类文件和目录路径名的抽象

34、表示形式。Java.awt.image.BufferedImage / BufferedImage 子类描述具有可访问图像数据缓冲区的 Image。BufferedImage 由图像数据的 ColorModel 和 Raster 组成。Raster 的 SampleModel 中 band 的数量和类型必须与 ColorModel 所要求的数量和类型相匹配,以表示其颜色和 alpha 分量。所有 BufferedImage 对象的左上角坐标都为 (0,0)。因此,用来构造 BufferedImage 的任何 Raster 都必须满足:minX=0 且 minY=0。 可以用来调用一个图片作为我

35、们下棋的背景图片使用。 第四章 软件的具体实现4.1准备工作:首先用MyEclipse来建一个工程,我将此工程的名字命为:fivechess。然后在我所建的工程里建立一个包,包名为fiveframe。再在包里面建立我需要的类,建立一个名字为FiveChessFrame的JAVA类,继承Javax.swing.JFrame这个类,而且同时引入MouseListener 这个监听的接口,有下面拓展 public class FiveChessFrame extend JFrame implements MouseListener。那么这个类里面就会有监听的一些命令:Overridepublic v

36、oid mouseClicked(MouseEvent e) / TODO Auto-generated method stub /鼠标点击监听操作。Overridepublic void mouseEntered(MouseEvent e) / TODO Auto-generated method stub /鼠标进入监听操作。Overridepublic void mouseExited(MouseEvent e) / TODO Auto-generated method stub /鼠标离开监听操作。Overridepublic void mousePressed(MouseEvent

37、e) / TODO Auto-generated method stub /鼠标按下监听操作。Overridepublic void mouseReleased(MouseEvent e) / TODO Auto-generated method stub /鼠标抬起监听操作。4.2建立游戏窗口界面:开始开发游戏的第一步就是先制作出游戏的窗口界面,一个漂亮美丽大方的游戏界面,往往先能吸引玩家去尝试,所以这个地方不能够马虎。先把我们需要的窗口按需求创建出来:public FiveChessFrame() /设置标题this.setTitle(五子棋);/窗体大小this.setSize(500,

38、500);/窗体出现位置this.setLocation(width - 500) / 2, (height - 500) / 2);/窗体设置为大小不可变this.setResizable(false);/将窗体的关闭方式设置为默认关闭后程序结束this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/加入鼠标监听this.addMouseListener(this);/将窗体显示出来this.setVisible(true);然后建立一个测试类,来测试一下我刚才写的窗口是否符合我的要求:import fiveframe.FiveChessFr

39、ame;public class Test public static void main(String args)FiveChessFrame ff=new FiveChessFrame();运行这个测试类得到如下窗口:得出这个窗体以后,我们就开始编写界面,我先是调用一个图片作为我这个五子棋程序棋盘的背景,大家都喜欢在木棋盘上面下五子棋,那种会让人感觉到很高雅,所以我就选了一张木质的图片来当我的五子棋的背景图片。先定义一个背景图片:/背景图片BufferedImage bgImage = null ;下面是调用背景文件,要用try来调用,要不然会出错。trybgImage = ImageIO

40、.read(new File(e:/JAVA/bg.jpg);catch(Exception e)e.printStackTrace();由上面的语句可以知道我加入的背景图片存放在e:/JAVA/这个目录下,现在加入把背景显示出来的方法:public void paint(Graphics g)/绘制背景g.drawImage(bgImage, 1, 20, this);这样我们就把背景图片调用到了,再看一下现在的窗口界面:现在已经可以看到背景图象了,很有木质感,一看到这个背景就让人有想下棋的冲动,当然,要等程序写好了才能下。那么,下面我要开始绘制棋盘了,我需要绘制一个十九乘十九的棋盘,绘制棋

41、盘需要注意到的问题是,我们点击棋盘的时候,会出现跳动也就是屏幕闪烁的问题,因为我们每下一步棋子,都会需要再绘制一次棋盘的。所以我们就要用到双缓冲技术了,双缓冲技术的使用会使得屏幕不再闪烁,一般双缓冲技术用在手机游戏中,因为手机内存小,屏幕闪烁问题比较明显。在画棋盘的时候需要计算棋盘中每一条线的间距,这里用的是十九乘十九的围棋棋盘那么总宽度可以为360像素,分成18份,没分是20像素,总高度也同样是360像素,如宽度一样分。实现语句:public void paint(Graphics g)/双缓冲技术防止屏幕闪烁BufferedImage bi = new BufferedImage(500,

42、500,BufferedImage.TYPE_INT_ARGB);Graphics g2 = bi.createGraphics() ;g2.setColor(Color.BLACK);/绘制背景g2.drawImage(bgImage, 1, 20, this);/控制字体g2.setFont(new Font(黑体,Font.BOLD,20);/输出标题信息g2.drawString(下棋提示: , 130, 60);/把前面改过的字体改回来g2.setFont(new Font(宋体,0,14);/输出时间信息g2.drawString(黑方时间:无限制 , 30 , 470);g2.d

43、rawString(白方时间: 无限制, 260, 470);/添加下棋需要到的功能说明g2.setFont(new Font(黑体,Font.BOLD,15);g2.drawString(开始游戏, 405, 110);g2.drawString(游戏设置, 405, 160);g2.drawString(游戏说明, 405, 210);g2.drawString(悔棋, 425, 260);g2.drawString(认输, 425, 310);g2.drawString(关于, 425, 360);g2.drawString(退出, 425, 410);/绘制棋盘for (int i=0

44、;i19;i+) g2.drawLine(10, 70+20*i, 370, 70+20*i); g2.drawLine(10+20*i, 70, 10+20*i, 430); /标点位,棋盘上的八个星和一个天元点。 g2.fillOval(68,128,4,4); g2.fillOval(308,128,4,4); g2.fillOval(308,368,4,4); g2.fillOval(68,368,4,4); g2.fillOval(308,248,4,4); g2.fillOval(188,128,4,4); g2.fillOval(68,248,4,4); g2.fillOval(

45、188,368,4,4); g2.fillOval(188,248,4,4); /在背景上绘制以后调用,实现双缓冲。 g.drawImage(bi, 0, 0, this);通过上面的几段代码,现在就可以得到一个我需要的界面了,那么界面就算是绘制完成了,测试一下看:这就是五子棋游戏的基本界面,以后要补全的功能也在上面了。4.3完成下棋的功能:现在我需要在我完成的游戏界面上可以下棋,也就是可以把通过鼠标点击,我可以在相应的位置上放下棋子。先绘制棋子,黑棋我用一个实心的黑圆来表示,白棋用一个实心的白圆再加上一个同大小的空心的黑圆来表示通过一个二维的数组来保存之前已经下过的棋子。点击鼠标对应位置的时候,把棋子落在距离点击处最近的左上一个交点上,这样使得棋子都能落在交点上,美观而且符合五子棋实际下棋的要求:/保存棋子的坐标int x = 0;int y = 0;/保存之前下过的全部棋子的坐标/内容为0表示没有棋子,为1表示黑子,为2表示白子int allChess = new int1919; /绘制棋子 /*g.fillOval(x, y, 10, 10);*/ for (int i = 0; i 19; i+) fo

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 小学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com