1、续找寻切合规则的图片。1.3 成功和失败把所有的图片成功除去完成,则以为是本次游戏成功。选择图片刻间是有限的, 在规定的时间内, 若未能将图片所有除去, 则失败,提示能否再来一局。2.游戏流程图剖析流程图剖析以下列图 2.1 所示:3开始鼠标点击地点确实定判断能否点击在图片方块?判断能否已选定一个方块选定第一个方块 选定第二个方块判断能否能够抵消方块抵消方块除去选定方块的记录结束图 2.1 游戏流程图此次设计所使用的语言为 Java。主要应用到 Swing 组件, Java小程序,事4件及接口等。这些接口为游戏的制作供给了便利的条件, 本系统的主要特色就是运用 Swing 组件和事件办理技术,
2、 进行界面的绘制, 鼠标的操作, 以及积分的显示等功能。此次经过连连看的设计开发将对理解 Swing 组件技术以及事件办理技术在游戏方面的应用起到很大的帮助作用,同时为掌握 Java 编程技术及二维休闲游戏设计的一般方法打下坚固的基础。游戏程序设计一般都采纳面向对象的设计模式, 供给了一个简单的图像显示接口,利用多文档视图构造的面向对象设计模式。5第三章 系统游戏设计1.系统剖析1.1 游戏系统需求剖析主要设计目标:使用 GUI 设计连连看,载入图片信息,进行正确剖析系统的功能,总载入30张图片,且图片信息成对出现,且能够偶数项删除,并拥有计时等功能游戏中将有“退出”功能,选择退出命令后程序将
3、停止履行,封闭窗口。还将有“再来一局”功能,选择再来一局命令后程序将对图片从头摆列,从头开始游戏。 该游戏还有一个时间倒计时的进度条, 提示玩家节余的时间, 增添游戏的难度。在界面的顶部有计分功能, 当玩家消去图片后就会博得相应的分数。1.2 系统开发及运转环境硬件平台:本游戏对硬件要求较低,基本都能够正常运转。软件平台:操作系统: Windows 系列。开发工具包:。1.3 系统功能主要要求1.系统采纳图片连连看方式 .界面雅观 ,用户使用灵巧 ,方便快捷 .2.计分自动达成,提升工作效率。3.用进度条进行游戏界面的计时功能。4.可方便快捷地进行下一盘游戏, 而且两盘的分数在规定的时间内会叠
4、加起来。5.操作员能够随时退出游戏。6.对用户输入的信息,系统进行严格的信息查验,尽可能清除人为的错误。7.系统最大限度地实现了易保护性和易操作性。8.系统运转稳固、安全靠谱。62.系统整体构造连连看是鉴于 java 基本知识设置的一个小游戏,最中间有连连看的主体构成连连看图片,上边有计分、时间条,下边有退出、再来一局按键。一个标准的连连看系统应当包含以下几大功构造:1、鼠标操作模块;2、图像办理模块;3、菜单模块;4、显示模块。3.系统各模块功能介绍系统各功能模块实现的功能为鼠标操作模块: 玩家在玩游戏时需要运用鼠标与游戏系统进行交互, 这个模块的实现 是运用鼠标事件触发的,在连连看的游戏场
5、景中运用鼠标进行交互的事件主要有两个,一个 是用户点击游戏场景中的图片刻触发的事件。此外一种是用户点击菜单栏上的菜单按钮时说 触发的鼠标事件。当用户点击游戏场景中的图像块时就会响应鼠标的 OnLButtonDown 事件,而后进行相应的逻辑判断。当用户点击菜单栏上的菜单命令时就会触发相应的菜单命令对应的相应的事件。图像办理模块 : 程序运转后,用户经过游戏菜单的开始命令进入游戏,在这个模块里要把资源文件中的图片进行办理而后加载到游戏场景中这在程序中是经过 DrawMap() 方法实现的。此顶用到的 API 函数主假如是 BitBlt ,他的主要功能是将某一内存块的数据传递到另一内存块,前一内存
6、块被称为 源 ,后一内存块被称为 目标 图象程序开发者使用 Blit 的函数在内存中将某页面上的一幅位图经过必定的变换转移到另一个页面上。菜单模块 : 玩家在游戏游戏过程中随时能够经过选择不一样的菜单命令来进行相应的操作,菜单的制作是经过 MFC 框架中多文档程序的菜单栏来增添的,菜单包含一下几个部分 :(1)游戏菜单中的开始、放弃和退出命令。界面显示模块 : 游戏场景中界面的显示包含以下部分: 游戏计分,节余时间、游戏主场景,游戏达成提示界面。这些显示信息会跟着游戏的进行而动向改变。在连连看游戏中。整个连连看游戏的系统是在 VC+6.0 开发环境中进行开发的,开发过程中大量的使用了微软供给的
7、 API 接口方法,减少了程序代码的编写量、提升了编程效率。7第四章 系统的详细实现1.系统主要运转界面1.1 运转界面运转界面以下列图 4.1 所示:图 4.1 运转界面1.2 履行界面,进入游戏正常运转履行界面以下列图 4.2 所示:8图 4.2 履行界面1.3 时间到界面时间到界面以下列图 4.3 所示:9图 4.3 时间到界面1.4 赢家界面游戏运转成功界面以下列图 4.4 所示:图 4.4 游戏运转成功界面101.5 进度条界面程序运前进度条以下列图 4.5 所示:图 4.5 程序运前进度条2.游戏实现代码2.1 主面板内所需要的组件的申明主面板内所需要的组件的申明朝码以下列图 4.
8、6 所示:图 4.6 组件申明2.2 填补一个矩形框,进行显示时间填补一个矩形框,进行显示时间代码以下列图 4.7 所示:图 4.7 填补矩形框显示时间112.3 主面板及各组件初始化主面板及各组件初始化以下列图 4.8 所示:图 4.8 主面板及各组件初始化2.4 创立时间对象,每隔 100 毫秒刷新一次创立时间对象,每隔 100 毫秒刷新一次代码以下列图 4.9 所示:图 4.9 创立时间对象2.5 分数代码。每除去一对图片,则分数加上 100。代码以下列图 4.10 所示:12图 4.10 分数代码3.除去图片详细状况当点击两个按钮的图片相同时, 运用消去算法来判断能否可消去, 详细状况
9、以下:3.1 两次点击相同图片相邻当两次点击的相同图片相邻时 ,以下列图 4.11 所示,则消去。图 4.11 点击图片相邻3.2 水平方向消去算法当两次点击的相同图片以下列图 4.12 所示,则在水平方向用循环算法 for (j = 0; j this.getWidth()return true;repaint();return false;public class LianLianKan implements ActionListener JFrame mainFrame; / 主面板MyPanel time;JPanel centerPanel, southPanel, northPan
10、el; / 3 个子面板JButton diamondsButton = new JButton65;/ 游戏按钮数组JButton exitButton, newlyButton; / 退出,从头开始按钮JLabel scoreLable; / 分数标签 JButton firstButton, secondButton;/分别记录两次被选中的按钮Timer timer;int grid = new int87;/ 储藏游戏按钮地点static boolean pressInformation =false; / 判断能否有按钮被选中int sum=0;int x0 = 0, y0 = 0,
11、 x = 0, y = 0,fristMsg = 0, secondMsg = 0; / 游戏按钮的地点坐标int i, j, k, n;/ 除去方法控制/ = 调用图片=/private static Icon icons = new ImageIcon6 * 5; /静态数组 icons【】用于寄存图片绝对地点private static final String imgDir =f:/meng;static tryFile dir = newFile(imgDir);File imgFiles =dir.listFiles(new FilenameFilter() / 获得/meng 文
12、件中的图片public booleanaccept(File dir, String name) returnname.toLowerCase().endsWith(.jpg););for (int i = 0; i 6 * 5; i+) /获得 f:/meng 文件中的图片的绝对路径放在 icons 数组中 iconsi = newImageIcon(imgFilesi.getAbsolutePath();/System.out.println(i+ +iconsi); catch (Exception e) e.printStackTrace();/ 异常办理public void ini
13、t() /初始化面板mainFrame = new JFrame(JKJ 连连看 / 设置主面板的名称为 JKJ 连连15看mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/ 结束窗体所在的应用程序mainFrame.setLayout(newBorderLayout(); / 设置为 BorderLayout()布局scoreLable= new JLabel(0centerPanel = new JPanel();设置面板southPanel = new JPanel();northPanel = new JPanel();
14、northPanel.setLayout(new /设置时间分数面板布局为界限布局mainFrame.add(centerPanel,Center / 增添组件mainFrame.add(southPanel,SouthmainFrame.add(northPanel,NorthcenterPanel.setLayout(newGridLayout(6, 5);/ 设置一个 6*5 的网格布局for (int cols = 0; cols 6;cols+) for (int rows = 0; rows 5;rows+) / = 设置图片 =/diamondsButtoncolsrows =
15、new JButton(iconsgridcols + 1rows + 1);diamondsButtoncolsrows.addActionL istener(this);centerPanel.add(diamondsButtoncolsrows);exitButton = new JButton( 退出 / 退出按钮exitButton.addActionListener(this);newlyButton = new JButton(再来一局 / 再来一局按钮newlyButton.addActionListener(this);southPanel.add(exitButton);增
16、添退出按钮southPanel.add(newlyButton);/ 增添再来一局按钮scoreLable.setText(String.valueOf(Intege r.parseInt(scoreLable.getText();time = new MyPanel();northPanel.add(time,BorderLayout.CENTER); /时间 -分数面板上在 CENTER 地点增添时间northPanel.add(scoreLable,BorderLayout.WEST); /时间 -分数面板上在 WEST 地点增添分数 LablemainFrame.setSize(500
17、, 450);/设置主面板的大小mainFrame.setLocationRelativeTo(null);/设置窗口在屏幕中间显示mainFrame.setVisible(true);设置窗口可见public void startt()timer = new Timer(10, this);/创立时间对象,每隔 100 毫秒计时一次。 init();timer.start();public void randomBuild() / 初始化寄存游戏按钮地点的 grid 数组(也就是icon【】下标 +1)int randoms, cols, rows; / 变量定义16for (int twi
18、ns = 1; twins = 15;n+;twins+) randoms = (int)(Math.random() *24);for (int alike = 1; alike = 0) / while循环rows = (int)(Math.random() * 5 + 1);cols = (int) (Math.random()while*6+1);(gridcolsrows != 0) while (gridcolsrows !0)/ 循环嵌套this.gridcolsrows= randoms;this.gridcolsrows =public void score()/ 方法申明s
19、aven; / this 出此刻实例方法中, 表示使用该方法的目前对象n-;.getText() + 100);public void reload()/ 方法申明int save = new int30; / 创建申明数组int n = 0, cols, rows; / 变量定义 /创立申明数组= 6; i+) for (int j = 0;= 5; j+)mainFrame.setVisible(false);窗口不行见pressInformation = false; / 这里必定要将按钮点击信息归为初始init(); i+)/ for 循环 j+)/循环嵌套if (gridi + 1j
20、 + 1= 0)if (this.gridij != 0) diamondsButtonij.setVisible(false); 窗口不行见saven = this.gridij; 17public void estimateEven(int placeX, int placeY , JButton bz) / 点击按钮触发if (pressInformation = false)/选择语句x = placeX;y = placeY;secondMsg = gridxy;secondButton = bz;pressInformation = true; else x0 = x;y0 = y;fristMsg = secondMsg;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1