很多人写游戏都是从连连看或者五子棋这类的简单小游戏入手的,最近我也尝试着写了一个连连看,想要再梳理一遍其中的思路。
连连看的规则
连连看要求在一定范围内找到两个特征一样并且能够通过空白的通道在两折(直角)以内相连的东西,连续点击两个东西之后消除。
通常我们会选择用图片来进行匹配,这样更直观有趣。
如何存储连连看的数据
使用二维数组进行存储,每一个数组元素对应一个位置上的图片种类。
例如我们分别用1,2,3,4代表四个不同的图片,用0代表没有图片;那么二维数组{
{},{},{},{}}就相应地存储对应位置的数据。如果要对图片进行变更(连连看中的消除),那么只需要改变该位置对应的数组元素的值就行了(在这个例子中,消除就改为0)。
如何实现数组数据的初始化
- 一般来说连连看开始都会随机生成图片,此处的随机生成需要用到Random类里面的nextInt方法,能随机生成给定范围内的随机一个整数。
- 我们生成数组的时候要考虑一个问题:连连看相同的图片个数是偶数,这样才不会到最后形成落单的尴尬局面。
//随机给出数组值,初始化游戏数据
public int[][] DATA(int[][] data){
int[][] d=data;
Random random=new Random();
for(int i=0;i<8;i++){
d[0][i]=0;
d[7][i]=0;
}
for(int i=1;i<7;i++){
d[i][0]=0;
d[i][7]=0;
}
for(int i=0;i<18;i++){
int m=random.nextInt(Const.Const_TYPECOUNNT)+1;
int x1=random.nextInt(Const.COL)+1;
int y1=random.nextInt(Const.COL)+1;
while(d[x1][y1]!=0){
x1=random.nextInt(Const.COL)+1;
y1=random.nextInt(Const.COL)+1;
}
d[x1][y1]=m;
int x2=random.nextInt(Const.COL)+1;