java课程设计实验报告自娱自乐五子棋.docx
《java课程设计实验报告自娱自乐五子棋.docx》由会员分享,可在线阅读,更多相关《java课程设计实验报告自娱自乐五子棋.docx(23页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Java课程设计说明书 -五子棋小游戏 院 系; 管理学院 专业班级: 信管151 学生学号: 2 学生姓名: 雷晓 指导教师: 伍良启 日 期 2017.01.05 成 绩: 指导老师签名: 批改日期: 目录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课程设计的目的
2、学习任何知识得目的都是要将它运用到实践中去,所以我们要运用已有的知识,独立得将这个课程设计完成,只有这样,我们才能将知识变成本领,变成属于自己得东西,通过一个学习得学习,我们已经有可一定得Java基础,现在我们就要利用这些基础,来完成课程设计。这次课程设计我主要研究了利用已学的Java知识编辑一个五子棋小游戏。通过此次课程设计,来巩固所学Java语言基本知识,增进Java语言编辑基本功,掌握JDK、JCreator等开发工具的运用,拓宽常用类库的应用。课程设计思路(1)棋盘界面设计在对棋盘界面设计方面要考虑简洁友好,符合游戏者需求。棋子的设计方面系统中设置了两种棋子颜色,yellow或者red
3、,游戏者可自行选择。棋子怎样画出来,怎样使棋子按我们所想的方式来绘制出来是设计的主要难题。运行时要求当每次点击鼠标的时候就在点击鼠标的地方画一个棋子,所以得定义一个棋子的类使点击鼠标时系统把棋子绘制出来。这样主界面里的棋子就确定了,而且也确定了几个所需要的类。可以先定义好这些类了。有了以上的准备就可以把棋盘绘制出来了,下棋时每次在适当位置点击鼠标的时候就在所点击的位置上画出你这个角色的颜色,然后计算机会自动的下棋,计算机自动下棋要有一个控制变量来控制能不能下棋。人可以随意的下子,可是计算机就要计算在哪个位置下子了。这里由计算机下子的算法来确定,人人对战的话就不象单机游戏一样,要计算机来判断人下
4、子之后计算机下那一个地方了,人人对战只要在双方下子的时候判断赢棋情况,当然还要同步的控制两个人下棋的顺序,这样的话就要用到线程了,各自都继承或实现线程类或接口,以便各自能随时单独控制接发消息。(2)算法设计对于五子棋游戏,无论人机对战,还是双人对战,都需要判断棋盘上是否存在五子连珠情况,这既是游戏名字的由来,也是游戏结束的标志。判断五子连珠的原理是从横,竖,左斜线,右斜线4条线上判断是否存在5个相连的同类棋子。对战一方落子后,在该处向8个方向检测连续的同类棋子,如果检测到直线方向上存在5个连续的同类棋子(包含本位置棋子),则判断为“连五”并结束检测循环。基于检测结果,可以判断游戏是否结束,并根
5、据获胜方的落子代码判断获胜方是谁。由于不考虑禁手问题,在实现“连五”过程中,我们可以考虑完成“双四”,“四三”,“双三”,“冲四”,“活三”,“活四”来实现目的。(3)五子棋规则(1)本游戏可选择人与人对战模式。(2)下法:两人分别执黑白两色棋子,轮流在棋盘上选择一个无子的交叉点落子,无子的交叉点又被称为空点。(3)输赢判断:黑、白双方有一方的五个棋子在横、竖或斜方向上连接成一线即为该方赢。程序流程图开始初始化主控制黑方 白方白方下子黑方下子判断胜负结束胜利 未分出胜利 程序的设计方法程序中主要方法的说明1. ChessPad()的返回类型是初始化棋盘,功能是设置棋盘颜色。2. Voidpai
6、nt(Graphicsg)的返回类型是对棋子等图像进行初始化,功能是设置棋子大小,颜色等。3. PublicvoidmousePressed(MouseEvente)的返回类型是鼠标的实践监听,功能是单击实践。4. publicvoidpaint(Graphicsg)的返回类型是画出图像,功能是控制图像的大小范围。5. publicvoidmousePressed(MouseEvente)的返回类型是处理按下鼠标的事件,功能是选中下棋的位置。6. publicvoidmouseReleased(MouseEvente)的返回类型是处理鼠标离开的事件,功能是本步下棋结束。7. publicvoi
7、dmouseExited(MouseEvente)的返回类型处理鼠标离开棋盘时,功能是鼠标离开组件不实现任何事件。8. publicvoidmouseClicked(MouseEvente)的返回类型是处理发生单击的事件,功能是实现下棋以及重新开始游戏。程序中类及成员变量的说明类表及其子类父类1. ChessFrame类的作用是创建五子棋游戏主窗体和菜单,父类是JFrame。2. ChessModel类的作用是实现了整个五子棋程序算法的核心。3. MainPanel类的作用是构建一个面板,在该面板上画上棋盘;处理在该棋盘上的鼠标事件(如鼠标左键点击、鼠标右键点击、鼠标拖动等),父类是JPane
8、l。4. ChessWindowEvent类的作用是事件响应,父类是WindowAdapter。主要成员变量(属性)1. Int i 的描述是控制棋子颜色。2. Button Button 的描述是重新开局。3. TextField text_1 的描述是请黑棋下子4. TextField text_2 的描述是请白棋下子。5. TextField text_3 的描述是这是第+i+步。java源文件及其功能1. Chess的功能是本程序的主函数,初始化棋盘。2. Autoplay的功能是实现电脑可以自动下棋。3. Scan的功能是扫描整个棋盘记录连在一起的黑白棋子数,为判断胜负服务。4. S
9、ort的功能是实现人与电脑有次序的下棋。5. Judge的功能是判断人与人之间的胜负。6. Evaluate的功能是电脑估计,为电脑下棋提供帮助。 五子棋游戏中的注册监听1.对角色选择按钮注册ActionListener监听,设置用户的角色。定义黑子int类型0,白子1。2.对按钮开始、重置注册ActionListener监听,如果点击开始,用户进入下棋状态,有一方赢了,棋盘上则不能再点击棋子。点击重置,则开始新的一轮。3.对鼠标注册mouseClicked监听,鼠标点击棋盘时获取下棋的位置。4.classServerThreadimplementsRunnable类监听线程,监听是否有客户端
10、法过信息来。(1)属性:Vectorthreads向量存储线程,Socketsocket服务端口,DataInputStreamin输入流,DataOutputStreamout输出流,intnid用户ID。(2)方法:构造器publicServerThread(Socketsocket,Vectorthreads),实现信息的输入、输出,和publicvoidrun()监听客户端是否发信息过来,当客户离开时向,其他客户发信息,把客户端的信息发给其他客户。游戏整体设计(1)五子棋的游戏主界面五子棋主界面包括ChessBot.java,ChessMap.java,ChessPanel.java和
11、Console.java四个文件。ChessMap是该五子棋游戏的主运行类,其中有运行整个程序的main方法,该文件生成了ChessMap类的一个实例,从而生成了五子棋游戏的界面ChessMap类将所有的功能集中到菜单栏中,并通过调用其他模块来实现五子棋游戏的各个功能。(2)机器人部分的设计机器人部分的设计是由ChessBot.java类来实现的。该java类首先导入了三个函数,分别是math,lang和awt。该程序定义了棋盘的边长,棋盘的边长通过定义一个私有的int型变量来实现。将机器人定义成一个方法,通过0和1来确定按下的棋子是机器人自己下的,还是敌人的棋子。该ChessBot类中还包括
12、了重开一局的方法,该方法通过for循环语句来实现,即重置棋子。另外一个方法是悔棋,悔棋同样是通过for语句循环来实现,首先通过二维数组算出最后一步棋下的位置,然后通过Step-实现。最后一个方法是计算当前位置type方是否有nn子相连,相连的情况。当横向五子连珠,纵向五子连珠,左斜线五子连珠或者是右斜线五子连珠时,比赛结束,同时显示出获胜方的棋子颜色。四种方向的连珠用for循环语句分别写出其二维数组也就是棋子的位置,从而进行判断棋子有几个棋子相连。使用endfor语句结束for循环,利用return语句,重复判断棋子的位置以及是否连珠。(3)五子棋面板的设计首先导入awt等java包。Ches
13、sPanel继承JPanel的属性类。定义一系列的私有变量,如棋盘的背景位图,黑棋子的位图,白棋子的位图,以及插入棋子的位置。该java包还调用了重开一局的方法,以及悔棋的方法。publicvoidshowMousePos(Pointp)是用来调试用,显示鼠标位置。publicPointaddChess(intx,inty,inttype)是调试下一步棋,参数为插入点像素坐标。publicPointaddChess(intx,inty,inttype,booleanisMatrix)实现的功能是算下一步棋,isMatrix位true参数为插入点棋格坐标,否则参数为插入点像素坐标。当游戏结束的时
14、候使用Graphicsg调用方法,在游戏过程中如果是黑方或是白方获胜在棋盘中就会显示是哪方获胜。设计结果与分析当进入到游戏当中可以选择是哪个颜色的棋先出,选择好之后便可以单机开始进行下棋,如果在游戏过程中出现什么问题可以单机再来一局重新开始游。五子棋游戏的主界面如图所示:设计体会通过这次课程设计,我进一步加深对基础理论的理解,扩大专业知识面,对收集资料、查阅文献、方案制定等实践方面得到了很好的锻练,促进对所学知识应用能力的提高。同时我渐渐的复习了Java使用方法和编程语法,之后的编程过程也相对得心应手,基本完成了预期计划的要求。在此感谢我的指导老师原玥老师,她在课题的研究上不遗余力的给予指导。
15、她严谨的治学态度深深的影响了我,使我受益匪浅!这个课设题对我来说有一定的挑战性,因为我自己也不知道自己到底学到了一个什么样的境界。但可以肯定,这个课设题的要求绝对在我的能力范围以上。之所以选择这个题目是想逼着自己去查更多的资料,学到更多的东西。结果也确实是这样的,我在这次课设中学到了不少东西,也理解了许多原来不理解的东西。尽管这个系统做的并不是那么的完善。对于Java中的引用,初始化类等,开始我并不是非常的理解,知道就这么做就能实现相应的功能了,并没有很深刻的去理解它为什么要这么做。但是真正的要用Java去做一个东西不理解它是不行的,而且其间这课设涉及到了Java中的绝大多数的知识点,如Jav
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 课程设计 实验 报告 自娱自乐 五子棋
限制150内