java课程设计实验报告---自娱自乐五子棋

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

信管151201500705009雷晓Java课程设计说明书----五子棋小游戏院系;管理学院专业班级:信管151学生学号:201500705009学生姓名:雷晓指导教师:伍良启日期2017.01.05成绩:指导老师签名:批改日期:信管151201500705009雷晓目录................................................................................................................................1课程设计的目的....................................................................................................3课程设计思路........................................................................................................3(1)棋盘界面设计...........................................................................................3(2)算法设计...................................................................................................3(3)五子棋规则...............................................................................................4程序流程图............................................................................................................4程序的设计方法....................................................................................................5程序中主要方法的说明................................................................................5程序中类及成员变量的说明........................................................................5主要成员变量(属性)................................................................................6java源文件及其功能....................................................................................6五子棋游戏中的注册监听............................................................................6游戏整体设计................................................................................................7(1)五子棋的游戏主界面.......................................................................7(2)机器人部分的设计...........................................................................7(3)五子棋面板的设计...........................................................................7设计结果与分析....................................................................................................8设计体会................................................................................................................8参考文献................................................................................................................9附录:程序源代码..............................................................................................10信管151201500705009雷晓课程设计的目的学习任何知识得目的都是要将它运用到实践中去,所以我们要运用已有的知识,独立得将这个课程设计完成,只有这样,我们才能将知识变成本领,变成属于自己得东西,通过一个学习得学习,我们已经有可一定得Java基础,现在我们就要利用这些基础,来完成课程设计。这次课程设计我主要研究了利用已学的Java知识编辑一个五子棋小游戏。通过此次课程设计,来巩固所学Java语言基本知识,增进Java语言编辑基本功,掌握JDK、JCreator等开发工具的运用,拓宽常用类库的应用。课程设计思路(1)棋盘界面设计在对棋盘界面设计方面要考虑简洁友好,符合游戏者需求。棋子的设计方面系统中设置了两种棋子颜色,yellow或者red,游戏者可自行选择。棋子怎样画出来,怎样使棋子按我们所想的方式来绘制出来是设计的主要难题。运行时要求当每次点击鼠标的时候就在点击鼠标的地方画一个棋子,所以得定义一个棋子的类使点击鼠标时系统把棋子绘制出来。这样主界面里的棋子就确定了,而且也确定了几个所需要的类。可以先定义好这些类了。有了以上的准备就可以把棋盘绘制出来了,下棋时每次在适当位置点击鼠标的时候就在所点击的位置上画出你这个角色的颜色,然后计算机会自动的下棋,计算机自动下棋要有一个控制变量来控制能不能下棋。人可以随意的下子,可是计算机就要计算在哪个位置下子了。这里由计算机下子的算法来确定,人人对战的话就不象单机游戏一样,要计算机来判断人下子之后计算机下那一个地方了,人人对战只要在双方下子的时候判断赢棋情况,当然还要同步的控制两个人下棋的顺序,这样的话就要用到线程了,各自都继承或实现线程类或接口,以便各自能随时单独控制接发消息。(2)算法设计对于五子棋游戏,无论人机对战,还是双人对战,都需要判断棋盘上是否存在五子连珠情况,这既是游戏名字的由来,也是游戏结束的标志。判断五子连珠的原理是从横,竖,左斜线,右斜线4条线上判断是否存在5个相连的同类棋子。对战一方落子后,在该处向8个方向检测连续的同类棋子,如果检测到信管151201500705009雷晓直线方向上存在5个连续的同类棋子(包含本位置棋子),则判断为“连五”并结束检测循环。基于检测结果,可以判断游戏是否结束,并根据获胜方的落子代码判断获胜方是谁。由于不考虑禁手问题,在实现“连五”过程中,我们可以考虑完成“双四”,“四三”,“双三”,“冲四”,“活三”,“活四”来实现目的。(3)五子棋规则(1)本游戏可选择人与人对战模式。(2)下法:两人分别执黑白两色棋子,轮流在棋盘上选择一个无子的交叉点落子,无子的交叉点又被称为空点。(3)输赢判断:黑、白双方有一方的五个棋子在横、竖或斜方向上连接成一线即为该方赢。程序流程图黑方白方胜利未分出胜利开始黑方下子白方下子初始化结束主控制判断胜负信管151201500705009雷晓程序的设计方法程序中主要方法的说明1.ChessPad()的返回类型是初始化棋盘,功能是设置棋盘颜色。2.Voidpaint(Graphicsg)的返回类型是对棋子等图像进行初始化,功能是设置棋子大小,颜色等。3.PublicvoidmousePressed(MouseEvente)的返回类型是鼠标的实践监听,功能是单击实践。4.publicvoidpaint(Graphicsg)的返回类型是画出图像,功能是控制图像的大小范围。5.publicvoidmousePressed(MouseEvente)的返回类型是处理按下鼠标的事件,功能是选中下棋的位置。6.publicvoidmouseReleased(MouseEvente)的返回类型是处理鼠标离开的事件,功能是本步下棋结束。7.publicvoidmouseExited(MouseEvente)的返回类型处理鼠标离开棋盘时,功能是鼠标离开组件不实现任何事件。8.publicvoidmouseClicked(MouseEvente)的返回类型是处理发生单击的事件,功能是实现下棋以及重新开始游戏。程序中类及成员变量的说明类表及其子类父类1.ChessFrame类的作用是创建五子棋游戏主窗体和菜单,父类是JFrame。2.ChessModel类的作用是实现了整个五子棋程序算法的核心。3.MainPanel类的作用是构建一个面板,在该面板上画上棋盘;处理在该棋盘上的鼠标事件(如鼠标左键点击、鼠标右键点击、鼠标拖动等),父类是JPanel。4.ChessWindowEvent类的作用是事件响应,父类是WindowAdapter。信管151201500705009雷晓主要成员变量(属性)1.Inti的描述是控制棋子颜色。2.ButtonButton的描述是重新开局。3.TextFieldtext_1的描述是请黑棋下子4.TextFieldtext_2的描述是请白棋下子。5.TextFieldtext_3的描述是这是第+i+步。java源文件及其功能1.Chess的功能是本程序的主函数,初始化棋盘。2.Autoplay的功能是实现电脑可以自动下棋。3.Scan的功能是扫描整个棋盘记录连在一起的黑白棋子数,为判断胜负服务。4.Sort的功能是实现人与电脑有次序的下棋。5.Judge的功能是判断人与人之间的胜负。6.Evaluate的功能是电脑估计,为电脑下棋提供帮助。五子棋游戏中的注册监听1.对角色选择按钮注册ActionListener监听,设置用户的角色。定义黑子int类型0,白子1。2.对按钮开始、重置注册ActionListener监听,如果点击开始,用户进入下棋状态,有一方赢了,棋盘上则不能再点击棋子。点击重置,则开始新的一轮。3.对鼠标注册mouseClicked监听,鼠标点击棋盘时获取下棋的位置。4.classServerThreadimplementsRunnable{}类监听线程,监听是否有客户端法过信息来。(1)属性:Vectorthreads向量存储线程,Socketsocket服务端口,DataInputStreamin输入流,DataOutputStreamout输出流,intnid用户ID。信管151201500705009雷晓(2)方法:构造器publicServerThread(Socketsocket,Vectorthreads),实现信息的输入、输出,和publicvoidrun()监听客户端是否发信息过来,当客户离开时向,其他客户发信息,把客户端的信息发给其他客户。游戏整体设计(1)五子棋的游戏主界面五子棋主界面包括

1 / 18
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功