一、项目背景随着移动互联网技术的飞速发展,智能手机和智能平板电脑的兴起和普及,我国手游行业发展迅猛.在游戏行业中占有举足轻重的地位。配对游戏是一款经典的消除类游戏。玩家只需点击图案即可在图案之间交换位置,连接3个或更多图案即可消除它们,并获得相应的积分。2.项目目标设计一个基于JAVA的游戏,显示64(8*8)张动物图片。游戏开始时,进入100秒倒计时。用户点击相应的动物图片。如果相同的动物图片有3个或3个以上,则淘汰成功,各10分。三、游戏项目设置1、交换:玩家选择两个水平或垂直相邻的动物头交换位置。如果位置交换成功,兽头将被淘汰,否则不能交换位置。2.淘汰赛:玩家选择两个横向或纵向相邻的动物头像交换位置。交换后,如果横排或竖排上有超过3张相同的动物头像,则淘汰这些相同的动物。头像,消除动物头像后的空间将由上方的动物头像填充,每消除一次动物头像,玩家即可获得相应的分数。3.连锁:玩家擦除动物头像后,上面的动物头像会掉落补上。如果游戏池中连续出现3张或以上相同的动物头像,则可以淘汰这些动物头像。消除后的空白会被掉落的动物头像填满,连锁会不断触发,直到没有连锁条件。4、项目实现使用eclipse软件开发,先上传效果图,如下图。可以看到界面上有开始游戏按钮、得分、时间进度条、退出游戏等功能。接下来小编就带大家进行具体的实现,具体的实现步骤如下。(1)首先实现表单接口1.代码如下publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubDuiDuiPengd=newDuiDuiPeng();d.setTitle("DuiDuiPeng");d.setSize(700,550);d.setVisible(true);d.setResizable(false);d.setLocationRelativeTo(null);}2.使用new关键字创建DuiDuiPeng类setTitle表示设置界面标题;setSize(width,height)表示窗口大小;setVisible(trueorfalse)表示表单是否可见;setResizable(trueorfalse)表示表单是否可以被用户调整大小;setLocationRelativeTo()表示设置窗口相对于指定组件的位置。效果图如下:(二)添加开始按钮、比分、时间、退出按钮1、创建JFrame实例,JPanel面板,然后将面板添加到JFrame中。2、创建开始按钮(JButton)、评分标签(JLabel)、文本框(JTextField)、进度条(JProgressBar)、退出按钮(JButton)。3、进度条(JProgressBar)是一个以可视化形式显示某些任务进度的组件。进度条可以显示此百分比的文本表示。4、进度条常用方法:getMaximum()方法返回进度条的最大值;getMinimum()方法返回进度条的最小值;getPercentComplete()返回进度条的完成百分比;getString()方法返回当前进度的String表示;getValue()返回进度条的当前值;setBorderPainted(booleanb)设置borderPainted属性,如果进度条应该绘制它的边框,则此属性为true;setIndeterminate(booleannewValue)设置进度条的indeterminate属性,该属性决定了进度条处于determinate模式还是indeterminate模式;setMaximum(inta)设置进度条的最大值为a;setMinimum(inta)设置进度条的最小值为a;setOrientation(intnewOrientation)设置进度条的方向为newOrientation;setString(Strings)设置进度字符串的值;setStringPainted(booleanb)设置stringPainted属性的值,该属性决定进度条是否应该显示progressstring;setValue(inta)设置进度条当前值为a;代码如下:");privateJTextFieldtext_score=newJTextField(10);privateJTextFieldtext_score=newJTextField(10)=newJProgressBar();privateJButtonbtn_exit=newJButton("退出");(三)添加8*8动物矩阵1.准备7种动物图片;效果图如下:2.开始添加8*8的动物矩阵JPanel、JButton、ImageIcon等,添加DuiDuiPeng类的成员变量代码如下:privateJPanelpanel02=newJPanel();privateJButtonbutton[][]=newJButton[8][8];privateinanimal[][]=newint[8][8];//0猫1牛2鸡3狐4青蛙5猴子6熊猫privateImageIconicon[]=newImageIcon[]{newImageIcon("image//cat.png"),newImageIcon("image//cattle.png"),newImageIcon("image//chicken.png"),newImageIcon("image//fox.png"),newImageIcon("image//frog.png"),newImageIcon("image//monkey.png"),newImageIcon("image//panda.png"),};//7种动物的图片(四种)显示开始按钮、分数标签、文本框、进度条、退出按钮text_score.setText("0");text_score.setEditable(false);progress.setMinimum(0);//progress最小值为0progress.setMaximum(100);//最大进度值为100progress.setStringPainted(true);//设置stringPainted属性的值,该属性决定进度条是否应该显示进度字符串panel01。添加(btn_start);panel01.add(label01);panel01.add(text_score);panel01.add(label02);panel01.add(进度);panel01.add(btn_exit);this.setLayout(newBorderLayout());this.add(panel01,BorderLayout.NORTH);效果如下图(5)显示8X8的动物矩阵,完成界面设计后,可以看到第一个和第二个游戏池类型第二张表的颜色不一样,第三张和第一张颜色一样。我们可以给出一个判断条件。如果桌子的颜色是奇数,就是橙色,如果桌子的颜色是偶数,就是黄色。最后我们设置它的背景颜色为橙色,效果图如下图代码如下图panel02.setLayout(newGridLayout(8,8,2,2));for(inti=0;i<8;i++){//Linefor(intj=0;j<8;j++){//columninttemp=(int)(Math.random()*7);//0-6button[i][j]=newJButton(icon[temp]);if((i+j)%2==0){button[i][j].setBackground(newColor(255,222,173));}else{button[i][j].setBackground(newColor(255,246,143));}animal[i][j]=temp;panel02.add(button[i][j]);button[i][j].setEnabled(false);button[i][j].addActionListener(my);}}this.add(panel02,BorderLayout.CENTER);setOpaque设置控件是否透明。true表示不透明,false表示透明。panel01.setOpaque(false);panel02.setOpaque(false);this.getContentPane().setBackground(Color.orange);以上内容主要是为了完成游戏的界面设计。实现的功能请参考第二部分《Java实现对对碰游戏(下篇)》。五、小结1、本文主要介绍了JLabel、JButton、JPanel、ImageIcon、JTextField、JProgressBar等组件的基本使用,并介绍了进度条(JProgressBar)的常用方法。2、用二维数组实现88动物矩阵。88动物矩阵第一个单元格的颜色与第二个单元格的颜色不同,第三个单元格的颜色与第一个单元格的颜色相同。将奇数单元格涂成橙色,将偶数单元格涂成黄色。3.本文是一个小游戏案例,代码比较简单,希望对你有所帮助。本文转载自微信公众号《Java进阶学习交流》,可通过以下二维码关注。转载本文请联系Java进阶学习交流公众号。
