📄 block.java
字号:
import java.util.Random;
//Download by http://www.codefans.net
public class Block{
public int ClassNum; //关卡号
public String BlockImage[][] = new String[6][5]; //各配对块图片号
public int BlockZt[][] = new int[6][5]; //各配对块状态:0消失/1盖住/2打开
private int Open_Block_X,Open_Block_Y; //当前打开方块
private Random rand = new Random();
public int Opened_X1,Opened_Y1,Opened_X2,Opened_Y2;
public int width,height; //宽、竖-方块数
public int Block_X; //当前活动方块X位置
public int Block_Y; //当前活动方块Y位置
public Block()
{
}
public void reset(int class_num,int _width,int _height)
{
//初使化各变量
width = _width;
height = _height;
Block_X = 0;
Block_Y = 0;
Open_Block_X = -1;
Open_Block_Y = -1;
Opened_X1 = Opened_X2 = Opened_Y1 = Opened_Y2 = -1;
ClassNum = class_num;
//各Block初使化
for(int i=0;i<width;i++)
for(int j=0;j<height;j++)
BlockImage[i][j] = null;
int _w=0;
if(width==5&&height==5)
{
_w=1;
BlockZt[0][0]=0;
BlockImage[0][0]="1000";
}
for(int i=_w;i<width;i++)
for(int j=0;j<height;j++)
{
if(BlockImage[i][j]==null)
{
getImageNum(i,j);
}
}
}
public boolean isPass()
{
for(int i=0;i<width;i++)
for(int j=0;j<height;j++)
{
if(BlockZt[i][j]!=0)return false;
}
return true;
}
public void getImageNum(int i,int j)
{
int _i,_j;
String num=null;
boolean found=false;
if(i<width/2 && j<height/2)
{
while(found=true)
{
_i = Math.abs(rand.nextInt())%width;
_j = Math.abs(rand.nextInt())%height;
if(BlockImage[_i][_j]==null && (_i!=i || _j!=j))
{
num = String.valueOf(ClassNum) + String.valueOf(Math.abs(rand.nextInt())%10);
BlockImage[_i][_j] = num;
BlockImage[i][j] = num;
BlockZt[_i][_j] = 1;
BlockZt[i][j] = 1;
found=true;
return;
}
}
}
else
{
num = String.valueOf(ClassNum) + String.valueOf(Math.abs(rand.nextInt())%10);
BlockImage[i][j]=num;
BlockZt[i][j] = 1;
for( int ii=0;ii<width;ii++)
for(int jj=0;jj<height;jj++)
if(BlockImage[ii][jj]==null)
{
BlockImage[ii][jj]=num;
BlockZt[ii][jj] = 1;
return;
}
}
}
public int clickBlock()
{
if (BlockZt[Block_X][Block_Y]==0) return -1;
if (Open_Block_X==-1 && Open_Block_Y==-1)
{
Open_Block_X = Block_X;
Open_Block_Y = Block_Y;
BlockZt[Block_X][Block_Y] = 2;
return 2;
}
else
{
//此块已打开则关闭
if (Open_Block_X==Block_X && Open_Block_Y == Block_Y){
BlockZt[Block_X][Block_Y] = 1;
Open_Block_X = -1;
Open_Block_Y = -1;
return -1;
}
//翻开第二块
BlockZt[Block_X][Block_Y] = 2;
//判断是否相同
if (BlockImage[Open_Block_X][Open_Block_Y].compareTo(BlockImage[Block_X][Block_Y])==0)
{
beforeClick(0);
return 0;
}
else
{
beforeClick(1);
return 1;
}
}
}
public void beforeClick(int value)
{
if (value==0 || value==1)
{
BlockZt[Open_Block_X][Open_Block_Y] = value;
BlockZt[Block_X][Block_Y] = value;
Opened_X1 = Open_Block_X;
Opened_Y1 = Open_Block_Y;
Opened_X2 = Block_X;
Opened_Y2 = Block_Y;
Open_Block_X = -1;
Open_Block_Y = -1;
}
}
public void pointLeft()
{
if(Block_X>0)
Block_X--;
else
Block_X = width-1;
}
public void pointRight()
{
if(Block_X<width-1)
Block_X++;
else
Block_X = 0;
}
public void pointUp()
{
if(Block_Y>0)
Block_Y--;
else
Block_Y = height-1;
}
public void pointDown()
{
if(Block_Y<height-1)
Block_Y++;
else
Block_Y = 0;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -