Java课设对对碰_java实现对对碰小游戏

本文实例为大家分享了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);//每一个数组元素都得到了相应的图标

}

<
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值