📄 gamematrix.java
字号:
} else
{
for(int c = yy + 1; c <= i; c++)
a += matrix[xx][c];
}
if(-a == Math.abs(yy - i))
{
if(mark)
{
if(y > i)
{
for(int c = i; c < y; c++)
matrix[x][c] = VConn;
if(x < xx)
matrix[x][i] = RDConn;
else
matrix[x][i] = LDConn;
} else
{
for(int c = y + 1; c <= i; c++)
matrix[x][c] = VConn;
if(x < xx)
matrix[x][i] = RUConn;
else
matrix[x][i] = LUConn;
}
if(yy > i)
{
for(int c = i; c < yy; c++)
matrix[xx][c] = VConn;
if(x < xx)
matrix[xx][i] = LDConn;
else
matrix[xx][i] = RDConn;
} else
{
for(int c = yy + 1; c <= i; c++)
matrix[xx][c] = VConn;
if(x < xx)
matrix[xx][i] = LUConn;
else
matrix[xx][i] = RUConn;
}
for(int c = x1 + 1; c < x2; c++)
matrix[c][i] = HConn;
}
return Score3;
}
}
}
}
}
a = 0;
for(i = 0; i < y; i++)
a += matrix[x][i];
if(-a == y)
{
a = 0;
for(i = 0; i < yy; i++)
a += matrix[xx][i];
if(-a == yy)
{
if(mark)
{
for(i = 0; i < y; i++)
matrix[x][i] = VConn;
if(y == 0)
matrix[x][0] = -matrix[x][0] + SConn + VConn * 100;
for(i = 0; i < yy; i++)
matrix[xx][i] = VConn;
if(yy == 0)
matrix[xx][0] = -matrix[xx][0] + SConn + VConn * 100;
}
return Score3;
}
}
a = 0;
for(i = y + 1; i < VSize; i++)
a += matrix[x][i];
if(-a == VSize - y - 1)
{
a = 0;
for(i = yy + 1; i < VSize; i++)
a += matrix[xx][i];
if(-a == VSize - yy - 1)
{
if(mark)
{
for(i = y + 1; i < VSize; i++)
matrix[x][i] = VConn;
if(y == VSize - 1)
matrix[x][y] = -matrix[x][y] + SConn + VConn * 100;
for(i = yy + 1; i < VSize; i++)
matrix[xx][i] = VConn;
if(yy == VSize - 1)
matrix[xx][yy] = -matrix[xx][yy] + SConn + VConn * 100;
}
return Score3;
}
}
return 0;
}
public void initMatrix(int hs, int vs)
{
HSize = hs;
VSize = vs;
matrix = new int[HSize][VSize];
int j = 0;
int b = 0;
for(int x = 0; x < HSize; x++)
{
for(int y = 0; y < VSize; y++)
{
j = 1 - j;
if(j == 1)
b = ((x * HSize + y) / 2) % SeedCount;
matrix[x][y] = b;
}
}
do
shuffleMatrix();
while(find() == 0);
}
public int find()
{
for(int i = 0; i < HSize * VSize; i++)
{
for(int j = i + 1; j < HSize * VSize; j++)
if(judge(i % HSize + 1, i / HSize + 1, j % HSize + 1, j / HSize + 1, false) > 0)
return i * 1000 + j;
}
return 0;
}
public int getRest()
{
int k = 0;
for(int x = 0; x < HSize; x++)
{
for(int y = 0; y < VSize; y++)
if(matrix[x][y] >= 0)
k++;
}
return k;
}
private void dropdown()
{
for(int x = 0; x < HSize; x++)
{
for(int y = 0; y < VSize; y++)
if(matrix[x][y] < 0)
{
for(int i = y; i > 0; i--)
matrix[x][i] = matrix[x][i - 1];
matrix[x][0] = -1;
}
}
}
private void leftdownrightup()
{
for(int x = 0; x < HSize / 2; x++)
{
for(int y = 0; y < VSize; y++)
if(matrix[x][y] < 0)
{
for(int i = y; i > 0; i--)
matrix[x][i] = matrix[x][i - 1];
matrix[x][0] = -1;
}
}
for(int x = HSize / 2; x < HSize; x++)
{
for(int y = VSize - 1; y >= 0; y--)
if(matrix[x][y] < 0)
{
for(int i = y; i < VSize - 1; i++)
matrix[x][i] = matrix[x][i + 1];
matrix[x][VSize - 1] = -1;
}
}
}
private void goleft()
{
for(int y = 0; y < VSize; y++)
{
for(int x = HSize - 1; x >= 0; x--)
if(matrix[x][y] < 0)
{
for(int i = x; i < HSize - 1; i++)
matrix[i][y] = matrix[i + 1][y];
matrix[HSize - 1][y] = -1;
}
}
}
private void upleftdownright()
{
for(int y = 0; y < VSize / 2; y++)
{
for(int x = HSize - 1; x >= 0; x--)
if(matrix[x][y] < 0)
{
for(int i = x; i < HSize - 1; i++)
matrix[i][y] = matrix[i + 1][y];
matrix[HSize - 1][y] = -1;
}
}
for(int y = VSize / 2; y < VSize; y++)
{
for(int x = 0; x < HSize; x++)
if(matrix[x][y] < 0)
{
for(int i = x; i > 0; i--)
matrix[i][y] = matrix[i - 1][y];
matrix[0][y] = -1;
}
}
}
private void raiseup()
{
for(int x = 0; x < HSize; x++)
{
for(int y = VSize - 1; y >= 0; y--)
if(matrix[x][y] < 0)
{
for(int i = y; i < VSize - 1; i++)
matrix[x][i] = matrix[x][i + 1];
matrix[x][VSize - 1] = -1;
}
}
}
private void updown()
{
for(int x = 0; x < HSize; x++)
{
for(int y = VSize / 2 - 1; y >= 0; y--)
if(matrix[x][y] < 0)
{
for(int i = y; i < VSize / 2 - 1; i++)
matrix[x][i] = matrix[x][i + 1];
matrix[x][VSize / 2 - 1] = -1;
}
for(int y = VSize / 2; y < VSize; y++)
if(matrix[x][y] < 0)
{
for(int i = y; i > VSize / 2; i--)
matrix[x][i] = matrix[x][i - 1];
matrix[x][VSize / 2] = -1;
}
}
}
private void leftright()
{
for(int y = 0; y < VSize; y++)
{
for(int x = HSize / 2 - 1; x >= 0; x--)
if(matrix[x][y] < 0)
{
for(int i = x; i < HSize / 2 - 1; i++)
matrix[i][y] = matrix[i + 1][y];
matrix[HSize / 2 - 1][y] = -1;
}
for(int x = HSize / 2; x < HSize; x++)
if(matrix[x][y] < 0)
{
for(int i = x; i > HSize / 2; i--)
matrix[i][y] = matrix[i - 1][y];
matrix[HSize / 2][y] = -1;
}
}
}
private void updowncenter()
{
for(int x = 0; x < HSize; x++)
{
for(int y = 0; y <= VSize / 2 - 1; y++)
if(matrix[x][y] < 0)
{
for(int i = y; i > 0; i--)
matrix[x][i] = matrix[x][i - 1];
matrix[x][0] = -1;
}
for(int y = VSize - 1; y >= VSize / 2; y--)
if(matrix[x][y] < 0)
{
for(int i = y; i < VSize - 1; i++)
matrix[x][i] = matrix[x][i + 1];
matrix[x][VSize - 1] = -1;
}
}
}
private void leftrightcenter()
{
for(int y = 0; y < VSize; y++)
{
for(int x = 0; x <= HSize / 2 - 1; x++)
if(matrix[x][y] < 0)
{
for(int i = x; i > 0; i--)
matrix[i][y] = matrix[i - 1][y];
matrix[0][y] = -1;
}
for(int x = HSize - 1; x >= HSize / 2; x--)
if(matrix[x][y] < 0)
{
for(int i = x; i < HSize - 1; i++)
matrix[i][y] = matrix[i + 1][y];
matrix[HSize - 1][y] = -1;
}
}
}
public void rearrange(int rnd)
{
switch(rnd)
{
case 1: // '\001'
return;
case 2: // '\002'
dropdown();
break;
case 3: // '\003'
goleft();
break;
case 4: // '\004'
updown();
break;
case 5: // '\005'
leftright();
break;
case 6: // '\006'
updowncenter();
break;
case 7: // '\007'
leftrightcenter();
break;
case 8: // '\b'
upleftdownright();
break;
case 9: // '\t'
leftdownrightup();
break;
case 10: // '\n'
updown();
leftright();
break;
case 11: // '\013'
updowncenter();
leftrightcenter();
break;
}
}
private int matrix[][];
private int VSize;
private int HSize;
private int SeedCount;
private int Score1;
private int Score2;
private int Score3;
public int VConn;
public int HConn;
public int SConn;
public int LDConn;
public int LUConn;
public int RDConn;
public int RUConn;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -