本文实例为大家分享了java实现对对碰的具体代码,供大家参考,具体内容如下
- 游戏实现功能:分别点击两张相邻的图像按钮进行交换(重点相邻),交换后的两个图像按钮的相邻水平或者垂直方向上,与之相同的图像超过规定个数后(这里规定为3个)就将其全部消除(置为空白按钮),上面的图像按钮也分别随之向下移动,将空白补齐(这里我们可以理解为图像按钮和空白按钮进行交换)。
- 游戏设计思路:
1.创建图像按钮数组,设置其基本属性;
2.给每个图像按钮配置相应的ID,用来标记图像信息,对于ID相同的按钮,图像也相同;
3.设置遍历全局判断是否可以建立相连按钮的函数;
4.设置遍历全局将可以建立相连的按钮图像ID置为EMPTY,将按钮置为空白按钮;
5.设置移动函数,将空白按钮与上层非空白按钮相互交换的函数,将空白按钮移动到上层;
6.设置更新函数,将移动到上层的空白按钮再随机匹配图像,继续使用;
7.设置交换按钮函数;
8.记录游戏得分,给一个确定的目标成绩,达到即可赢得游戏;
9.设置一个进度条,记录游戏进行的时间;
10.设置一个时间记录器(定时器);
11.设计游戏界面基本信息(根据个人爱好设计即可);
- 游戏代码
---mybutton类,设置了每个按钮对象的基本信息
package supperzzle;
import javax.swing.Icon;
import javax.swing.JButton;
public class MyButton extends JButton{
private final int Width = 30;//设置按钮的宽度
private final int Height = 30;
private int ID;//设置按钮的ID-----ID代表每一个按钮里面存放的数据
private int buttonPosX = 0;
private int buttonPosY = 0;
public MyButton(int id, Icon icon)//构造函数
{
this.setIcon(icon);
this.ID = id;
this.setSize(Width, Height);//设置按钮的边框大小
this.setFocusable(true);//去掉按钮的聚焦框
this.setBorderPainted(false);//去掉边框
this.setContentAreaFilled(false);//不显示外围矩形边框
}
public int GetID()
{
return ID;
}
public void SetID(int id)
{
this.ID = id;
}
}
//-----这是游戏的重点了,基本游戏界面设计--GamePanel类---对游戏的界面进行了基本的设置(写的有点挫,,有什么好的建议请尽情提的不要拘谨,哈哈)
package supperzzle;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.EventListener;
import java.util.Random;
import javax.swing.ImageIcon;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
public class GamePanel extends JPanel implements ActionListener{
private final int row = 10;
private final int col = 10;
private final int lineCount = 3;//设置几连可碰消除
private int grade = 0;//记录得分
private final int score = 10;//设置每次消去一个方块获得的分数
public MyButton mybutton[] = new MyButton[row*col];//这里只是开辟了相应的空间
private final int countImage = 7;
private ImageIcon imageIcon[] = new ImageIcon[countImage];//设置图标数组
private final int EMPTY = -1;
private Random random = new Random();
private int posx = 0;
private int posy = 0;//保存第一次按钮按下去的坐标
private boolean IsSecond = false;
public GamePanel()//游戏面板的构造函数----实现图片加载,数组图标的加载,以及按钮的基本设置
{
this.setLayout(new GridLayout(row,col,0,0));//创建一个网络布局管理格式---row行col列
for(int i = 0; i < countImage; i++)//图标数组初始化
{
// Image image = Toolkit.getDefaultToolkit().getImage("F:/Image/supperzzle/angrybird"+i+".png");
Image image = Toolkit.getDefaultToolkit().getImage("F:/Image/LinkGame/pic"+i+".png");
imageIcon[i] = new ImageIcon(image);//每一个数组元素都得到了相应的图标
}
<