欢迎来到天天文库
浏览记录
ID:14291323
大小:337.00 KB
页数:12页
时间:2018-07-27
《连连看实训文档简易版》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、《连连看》实训文档一、设计目标和内容通过该项目的设计,使学生对Java基础语法和Java图形界面的程序设计有一个比较全面的掌握。设计一个连连看游戏,要求能够通过界面设计、游戏算法等实现连连看的游戏功能。二、设计要求要求界面美观、使用方便;算法周密,能够实现消除、重排、提示等基本游戏功能;游戏应该具有一定的易用性、正确性、容错性。三、功能设计1、实现如下所示界面说明:游戏区界面是点击开始按钮后生成的。2、生成游戏区点击开始按钮,自动生成游戏区,要求按钮的图案是随机的,且每个图案必须是偶数个。1、联通消除点击相连的两个按钮可以把两个按钮消除掉。相连有三种情况:
2、直线相连,直角相连,双折线相连。2、暂停继续游戏过程中可以暂停、继续游戏。3、游戏结束游戏结束有两种情况:消掉了所有按钮,超时。应根据具体情况给出不同的提示。此外,在游戏过程中,再次单击开始可以重玩。二、具体设计4.1功能实现思路(仅供参考):游戏的核心是如何消掉相同图标的按钮,首先要想办法判断两个按钮的图标是否相同,这里提示大家一个方法:按钮有个setActionCommand方法和getActionCommand,把图标索引设置为一个按钮的ActionCommand,然后通过对比两个按钮的ActionCommand就可以知道是否具有相同的图标。消除按钮
3、就要判断两个按钮是否连通,连通有三种情况,对应三种算法,下面详细说明。算法判断两个点是否连通,那如何跟两个按钮建立联系呢?按钮的位置就可以视作一个点(java中用Point类表示一个点)。这样用一个点代表按钮位置,用ActionCommand代表按钮上的图标。就很容易操作了。1、界面布局和实现参考上课讲义2、生成游戏区:按钮放在一个面板上,单击开始按钮后,先清空面板内容,然后重新生成按钮。按钮图标随机生成,且每个图标是偶数个。可先生成一半的图标,然后想法复制一份,这样构成全部图标,且都是偶数个。3、联通消除三种算法:直线相连,直角相连,双折线相连。后面代码
4、给出一部分。直线相连:只要两点之间横坐标或纵坐标相同,即表示两点在同行或同列;然后判断两点之间有没有障碍,无则联通。直角相连:两个点的坐标可以生成一个新的点,如果两点都可以与该新点联通,则说明联通。注意:新点有两个,如图所示一个,另外喇叭图标处也可以生成一个,但是因为喇叭图标处不是空点,因此不用该点。但在实际中,新点的两种可能都要考虑到,那个能用用那个。双折线相连:在单击的第一点处,向四个方向搜索有无空点,如果有则生成一个新点,如果该新点与另一个按钮联通(直角联通),则说明联通。如果该新点不能与按钮连通,则继续向该新点的方向前进一个位置,再次判断该位置是否
5、为空点,是否可以和另一个按钮连通,以此类推。1、暂停继续暂停则计时停止,隐藏游戏区4.2主类LinkGame4.2.1成员变量变量类型变量名说明finalstaticintROW游戏区七行八列共56个按钮finalstaticintCOLJPanelfunctionPanel功能区面板JPanelgamePanel游戏区面板JButton[][]dots按钮数组JLabeltimestr内容是“剩余时间”JLabeltimecount计时TimertimerJButtonstart开始按钮JButtonpause暂停JButtonconti继续JButto
6、nhint重排staticintcount记录鼠标单击次数staticinttime记录游戏剩余时间Pointp1,p2保存两个被单击按钮的坐标LinkedListlist按钮坐标集合ArrayListimageIndex存放图像索引LinkedListlinklist重排时存放按钮4.2.2方法方法名方法功能publicvoidaddmyMenu()添加菜单publicvoidaddFunctionPanel()添加功能区publicvoidaddGamePanel()添加游戏区privateclassBut
7、tonEventsimplementsActionListener游戏区按钮被单击publicbooleanlineCheck(Pointp1,Pointp2)是否直线联通publicbooleansecendLine(Pointp1,Pointp2)是否直角联通publicbooleantriLine(Pointp1,Pointp2)是否双折线联通publicvoidreSet()当剩余按钮无法消除时进行重排publicvoidactionPerformed(ActionEvente)功能区按钮被单击时4.2.3部分代码publicclassLinkGa
8、meextendsJFrameimplementsActionLi
此文档下载收益归作者所有