📄 gamematrix.java
字号:
// Decompiled by Jad v1.5.7f. Copyright 2000 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/SiliconValley/Bridge/8617/jad.html
// Decompiler options: packimports(3)
// Source File Name: GameMatrix.java
package matchit2;
import java.util.Random;
public class GameMatrix
{
public GameMatrix(int h, int v, int s)
{
VSize = 0;
HSize = 0;
SeedCount = 0;
Score1 = 10;
Score2 = 20;
Score3 = 50;
VConn = -10;
HConn = -11;
SConn = -10;
LDConn = -12;
LUConn = -13;
RDConn = -14;
RUConn = -15;
if((v * h) % 2 == 0)
{
VSize = v;
HSize = h;
SeedCount = s;
initMatrix(HSize, VSize);
}
}
public void end()
{
matrix = null;
}
public int getAt(int x, int y)
{
if(x > HSize || x < 1 || y > VSize || y < 1)
return -1;
else
return matrix[x - 1][y - 1];
}
public int setAt(int x, int y, int b)
{
if(x > HSize || x < 1 || y > VSize || y < 1)
{
return 0;
} else
{
matrix[x - 1][y - 1] = b;
return 1;
}
}
public void shuffleMatrix()
{
Random r = new Random();
clearTrace();
for(int x = 0; x < HSize; x++)
{
for(int y = 0; y < VSize; y++)
{
int xx = Math.abs(r.nextInt()) % HSize;
int yy = Math.abs(r.nextInt()) % VSize;
int b = matrix[x][y];
matrix[x][y] = matrix[xx][yy];
matrix[xx][yy] = b;
}
}
}
public void clearTrace()
{
for(int x = 0; x < HSize; x++)
{
for(int y = 0; y < VSize; y++)
if(matrix[x][y] < -1)
matrix[x][y] = -1;
}
}
public int judge(int x, int y, int xx, int yy, boolean mark)
{
x--;
y--;
xx--;
yy--;
if(x == xx && y == yy)
return 0;
if(x < 0 || x > HSize - 1 || y < 0 || y > VSize - 1 || xx < 0 || xx > HSize - 1 || yy < 0 || yy > VSize - 1)
return 0;
if(matrix[x][y] != matrix[xx][yy])
return 0;
if(matrix[x][y] < 0 || matrix[xx][yy] < 0)
return 0;
int i;
int a;
if(x == xx)
{
if(y > yy)
{
int c = y;
y = yy;
yy = c;
}
a = 0;
for(i = y + 1; i < yy; i++)
a += matrix[x][i];
if(-a == yy - y - 1)
{
if(mark)
for(i = y + 1; i < yy; i++)
matrix[x][i] = VConn;
return Score1;
}
}
if(y == yy)
{
if(x > xx)
{
int c = x;
x = xx;
xx = c;
}
a = 0;
for(i = x + 1; i < xx; i++)
a += matrix[i][y];
if(-a == xx - x - 1)
{
if(mark)
for(i = x + 1; i < xx; i++)
matrix[i][y] = HConn;
return Score1;
}
}
a = 0;
if(x > xx)
{
int c = x;
x = xx;
xx = c;
c = y;
y = yy;
yy = c;
}
if(y < yy)
{
for(i = x + 1; i <= xx; i++)
a += matrix[i][y];
for(i = y + 1; i < yy; i++)
a += matrix[xx][i];
if(-a == ((xx - x) + yy) - y - 1)
{
if(mark)
{
for(i = x + 1; i <= xx; i++)
matrix[i][y] = HConn;
for(i = y + 1; i < yy; i++)
matrix[xx][i] = VConn;
matrix[xx][y] = LDConn;
}
return Score2;
}
a = 0;
for(i = x; i < xx; i++)
a += matrix[i][yy];
for(i = y + 1; i < yy; i++)
a += matrix[x][i];
if(-a == ((xx - x) + yy) - y - 1)
{
if(mark)
{
for(i = x; i < xx; i++)
matrix[i][yy] = HConn;
for(i = y + 1; i < yy; i++)
matrix[x][i] = VConn;
matrix[x][yy] = RUConn;
}
return Score2;
}
} else
{
for(i = x + 1; i <= xx; i++)
a += matrix[i][y];
for(i = yy + 1; i < y; i++)
a += matrix[xx][i];
if(-a == ((xx - x) + y) - yy - 1)
{
if(mark)
{
for(i = x + 1; i <= xx; i++)
matrix[i][y] = HConn;
for(i = yy + 1; i < y; i++)
matrix[xx][i] = VConn;
matrix[xx][y] = LUConn;
}
return Score2;
}
a = 0;
for(i = x; i < xx; i++)
a += matrix[i][yy];
for(i = yy + 1; i < y; i++)
a += matrix[x][i];
if(-a == ((xx - x) + y) - yy - 1)
{
if(mark)
{
for(i = x; i < xx; i++)
matrix[i][yy] = HConn;
for(i = yy + 1; i < y; i++)
matrix[x][i] = VConn;
matrix[x][yy] = RDConn;
}
return Score2;
}
}
int y1;
int y2;
if(y > yy)
{
y1 = yy;
y2 = y;
} else
{
y1 = y;
y2 = yy;
}
i = x;
for(int s = 0; Math.abs(s) < HSize;)
{
s = -s;
if(s >= 0)
s++;
i = x + s;
if(i < HSize && i >= 0)
{
a = 0;
for(int j = y1; j <= y2; j++)
a += matrix[i][j];
if(-a == (y2 - y1) + 1)
{
a = 0;
if(x > i)
{
for(int c = i; c < x; c++)
a += matrix[c][y];
} else
{
for(int c = x + 1; c <= i; c++)
a += matrix[c][y];
}
if(-a == Math.abs(x - i))
{
a = 0;
if(xx > i)
{
for(int c = i; c < xx; c++)
a += matrix[c][yy];
} else
{
for(int c = xx + 1; c <= i; c++)
a += matrix[c][yy];
}
if(-a == Math.abs(xx - i))
{
if(mark)
{
if(x > i)
{
for(int c = i; c < x; c++)
matrix[c][y] = HConn;
if(y < yy)
matrix[i][y] = RDConn;
else
matrix[i][y] = RUConn;
} else
{
for(int c = x + 1; c <= i; c++)
matrix[c][y] = HConn;
if(y < yy)
matrix[i][y] = LDConn;
else
matrix[i][y] = LUConn;
}
if(xx > i)
{
for(int c = i; c < xx; c++)
matrix[c][yy] = HConn;
if(y < yy)
matrix[i][yy] = RUConn;
else
matrix[i][yy] = RDConn;
} else
{
for(int c = xx + 1; c <= i; c++)
matrix[c][yy] = HConn;
if(y < yy)
matrix[i][yy] = LUConn;
else
matrix[i][yy] = LDConn;
}
for(int c = y1 + 1; c < y2; c++)
matrix[i][c] = VConn;
}
return Score3;
}
}
}
}
}
a = 0;
for(i = 0; i < x; i++)
a += matrix[i][y];
if(-a == x)
{
a = 0;
for(i = 0; i < xx; i++)
a += matrix[i][yy];
if(-a == xx)
{
if(mark)
{
for(i = 0; i < x; i++)
matrix[i][y] = HConn;
if(x == 0)
matrix[0][y] = -matrix[0][y] + SConn + HConn * 100;
for(i = 0; i < xx; i++)
matrix[i][yy] = HConn;
if(xx == 0)
matrix[0][yy] = -matrix[0][yy] + SConn + HConn * 100;
}
return Score3;
}
}
a = 0;
for(i = x + 1; i < HSize; i++)
a += matrix[i][y];
if(-a == HSize - x - 1)
{
a = 0;
for(i = xx + 1; i < HSize; i++)
a += matrix[i][yy];
if(-a == HSize - xx - 1)
{
if(mark)
{
for(i = x + 1; i < HSize; i++)
matrix[i][y] = HConn;
if(x == HSize - 1)
matrix[x][y] = -matrix[x][y] + SConn + HConn * 100;
for(i = xx + 1; i < HSize; i++)
matrix[i][yy] = HConn;
if(xx == HSize - 1)
matrix[xx][yy] = -matrix[xx][yy] + SConn + HConn * 100;
}
return Score3;
}
}
int x1;
int x2;
if(x > xx)
{
x1 = xx;
x2 = x;
} else
{
x1 = x;
x2 = xx;
}
i = y;
for(int s = 0; Math.abs(s) < VSize;)
{
s = -s;
if(s >= 0)
s++;
i = y + s;
if(i < VSize && i >= 0)
{
a = 0;
for(int j = x1; j <= x2; j++)
a += matrix[j][i];
if(-a == (x2 - x1) + 1)
{
a = 0;
if(y > i)
{
for(int c = i; c < y; c++)
a += matrix[x][c];
} else
{
for(int c = y + 1; c <= i; c++)
a += matrix[x][c];
}
if(-a == Math.abs(y - i))
{
a = 0;
if(yy > i)
{
for(int c = i; c < yy; c++)
a += matrix[xx][c];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -