这是我分析连连看的java学习笔记第二部分,下面主要来分析连连看游戏的原理和代码实现。

功能区域

一般的连连看游戏界面主要分游戏区和功能区2块组成(我这主要指单机版)。

  • 游戏区

功能:按一定排列显示所要消除的所有图片,当我们选择到两张相同的图片时,通过一定的规则对这两张图片进行消除,并显示连接和消除的效果。

  • 功能区

功能:显示程序的各个功能,如显示倒计时、分数、声音控制、游戏控制(开始和退出)等。

游戏区的实现

游戏区其实就是一个棋盘,我们可以把游戏区的最左上角的那一点看做坐标(0.0),游戏区的最上面的边就是X轴,游戏区最左面的边就是Y轴。这样我们就可以把游戏区看做一个二维数组,它的一维值是X,二维值是Y。当我们在游戏区选择了某一点时,我们就可以根据坐标定位到该数组,确定该点的值,再去判断这个值并执行操作。

图片方块对象类

按照上面所说,游戏区就是一个棋盘,是有一些图片方块组成的,这些图片方块我们可以看做一个个具体的对象。现在我们创建一个Piece类表示图片方块。Piece类代码如下所示,类中定义了7个属性,beginX,beginY,endX,endY为图片方块在游戏区的坐标;indexX,indexY为图片方块在棋盘数组中的位置;image为图片方块所代表的图片。我们可以用一个图片工具类ImageUtil把图片读入到图片方块对象中。

Piece类代码:
package cn.song.linkgame.commons;
import java.awt.image.BufferedImage;
/**
*方块对象
*/
public class Piece {
//方块对应图片
private BufferedImage image;
//方块开始x坐标
private int beginX;
//方块开始y坐标
private int beginY;
//方块结束x坐标
private int endX;
//方块结束y坐标
private int endY;
//方块在数组一维位置
private int indexX;
//方块在数组二维位置
private int indexY;

public Piece(int indexX,int indexY){
this.indexX = indexX;
this.indexY = indexY;
}
public Piece(int beginX,int beginY,int indexX,int indexY,BufferedImage image){
this.beginX = beginX;
this.beginY = beginY;
this.indexX = indexX;
this.indexY = indexY;
this.image = image;
this.endX = beginX + image.getWidth();
this.endY = beginY + image.getHeight();
}
/*********************************************
***以下省略所有geter方法
***另可以不用提供seter,我们直接通过构造方法构造对象
***一但构造这个对象,它的属性不能改变
**********************************************/
//图片是否相同
public boolean isSameImage(Piece piece){
if(this.image.equals(piece.getImage())){
return true;
}
return false;
}
}

作者:song   转载请注明出处:http://mtoou.info/java-lianliankan-daima/