您好,欢迎访问三七文档
宜宾学院面向对象课程设计学院:_计算机与信息工程学院_班级:2014级6班学生姓名:郑亮学号:141106020设计地点(单位)_________宜宾学院__________设计题目:____________双人五子棋_____________完成日期:2015年12月5日2目录1问题要求及任务描述.............................................................................................................41.1题目要求.........................................................................................................................41.2主要任务........................................................................................................................42解决问题的主要思路和方法..................................................................................................42.1关键问题........................................................................................................................42.2拟采用解决问题的方法及算法........................................................................................52.3主要算法和处理流程图以及类图等..................................................................................53程序实现............................................................................................................................73.1程序实现时应考虑的问题...............................................................................................73.2主要源代码及说明..........................................................................................................93.2.1总体设计.................................................................................................................93.2.1详细设计.................................................................................................................94测试...................................................................................................................................194.1游戏测试结果及分析....................................................................................................195小结...................................................................................................................................225.1本问题解决方法及程序实现小结...................................................................................225.2尚未解决的问题及下一步工作思路。............................................................................2435.3心得与体会..................................................................................................................246参考文献............................................................................................................................254双人五子棋游戏设计报告书1问题要求及任务描述1.1题目要求双人五子棋游戏1.2主要任务1.独立设计、编制、调试出一款双人五子棋游戏,并单独完成其中一定量的函数模块。2.要求该游戏具有趣味性和可操作性,能够正常运行。其中用到Java语言中的各种语句、结构。(如其中需要注意全局变量和局部变量的申明,数组的使用等)3.双人五子棋要求能够进入可视化界面,二人对弈,当有五颗同色棋子相连时,判断出输赢等一系列游戏流程。2解决问题的主要思路和方法2.1关键问题1.棋盘的绘制2.棋子的绘制,必须落在棋盘的交叉点处3.有棋子的地方不能重复落子4.棋子的黑白交替5.五子连珠的判断(即游戏输赢判断)52.2拟采用解决问题的方法及算法1.棋盘的绘制:可以用一层for循环通过分别对X,Y坐标设置相应的增量来绘制棋盘的横线和竖线。2.绘制棋子:通过填充一个椭圆的方式来绘制棋子,棋子的落子位子:首先定义一个二维数组a[][],用二维数组的两个参数来对应一个交叉点的X,Y虚坐标,通过鼠标点击的位置所得坐标来整除棋盘格子的宽度。这样就得到了鼠标点击的位置的最近的一个交叉的位置。然后通过交叉点的位置信息,以交叉点为圆心来绘制相应的棋子。3.有棋子的位置不能重复落子:可以给二维数组a[][]付初值为“0”,当a[x][y]==0时表示无子可以落子,当a[x][y]!=0时就不能落子。4.棋子的黑白交替:可以定义一个布尔型变量Order当为真时就为:黑子Order为假时就为:白子。5.五子连珠的判断:首先定义一个整形变量color来存放棋子的颜色。先对color进行赋值。横向的判断是定义count1来记录棋子个数,当横向左右有相同颜色的棋子就让count1加上1,当count1=5时五子连珠成功,结束游戏。其它纵向和斜向方法相同。2.3主要算法和处理流程图以及类图等类视图:6算法处理流程图73程序实现3.1程序实现时应考虑的问题1.根据所选题目,首先设计模块图2.画出主程序和主要模块的流程图893.2主要源代码及说明3.2.1总体设计主要包括的类有两个个:Myframe,MyPanel1、Myframe类:Myframe类是java版五子棋的主框架,程序的启动类。其中包括游戏界面的创建、按钮的设置、相关的事件监听器设置、游戏的启动、实现重新游戏。2、MyPanel类:MyPanel类主要实现的是棋盘的绘制、创建数组存放棋子的坐标、设置只能在棋盘内可以落子、实现判断黑白棋的输赢。3.2.1详细设计1.Myframe类变量定义:privateMyPanel;//新建一个自定义的JpanelpublicJButtonbtnReset;//创建新游戏按钮publicJButtonbtnExit;//创建退出publicJButtonbtnMin;//创建最小化按钮publicJButtonbtnBfirst;//创建黑子先按钮publicJButtonbtnWfirst;//创建白子先按钮按钮的监听器和按钮功能实现:/***创建新游戏按钮*/btnReset=newJButton(\u65B0\u6E38\u620F);btnReset.setFont(f1);btnReset.addMouseListener(newMouseAdapter(){10@OverridepublicvoidmouseClicked(MouseEventarg0){myPanel.Reset();//调用重置棋盘的函数myPanel.canPlay=true;//开始游戏myPanel.repeat=true;//解决重复点击设置颜色按钮repaint();//调用重绘函数}});btnReset.setBounds(432,351,142,58);myPanel.add(btnReset);btnReset.setUI(newMyButtonUI());btnReset.setBackground(newColor(250,154,81,240));/***创建退出按钮*/btnExit=newJButton(\u9000\u51FA);btnExit.setFont(f2);btnExit.setBounds(506,415,68,39);myPanel.add(btnExit);btnExit.setUI(newMyButtonUI());btnExit.setBackground(newColor(250,154,81,240));btnExit.addMouseListener(newMouseAdapter(){//实现按钮单击退出的功能@OverridepublicvoidmouseClicked(MouseEventarg0){System.exit(0);}});/***创建最小化按钮*/11btnMin=newJButton(\u9690\u85CF);btnMin.setFont(f2);btnMin.setBounds(432,415,68,39);myPanel.add(btnMin);btnMin.setUI(newMyButtonUI());btnMin.addMouseListener(newMouseAdapter(){@OverridepublicvoidmouseClicked(MouseEvente){//实现单击按钮窗口最小化的功能setExtendedState(JFrame.ICONIFIED);}});btnMin.setBackground(newColor(250,154,81,240));/***黑子优先按钮*/btnBfirst=newJButton(\u9ED1\u5148);btnBfirst.setFont(f2);btnBfirst.addMouseListener(newMouseAdapter(){@OverridepublicvoidmouseClicked(MouseEventarg0){if(myPanel.repeat){booleanb=true;myPanel.setOrder(b);//设置落子顺序的函数,真伪黑先,假为白myPanel.repeat=false;}}}
本文标题:五子棋程序设计报告
链接地址:https://www.777doc.com/doc-2174844 .html