📄 llkmatrix.java
字号:
{
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:
raiseup();
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;
case 12:
return ;
default:
break;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -