📄 diamandcanvas.java
字号:
right();
}
}
public void makeLiveToDeath()
{
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 4; j++)
{
if (liveArray[i][j] == 1)
{
deadArray[livePos[0] + i][livePos[1] + j] = 1;
}
}
}
}
public void removeLine()
{
int removedLine = 0;
for (int i = 0; i < HIGHTH_DIAMAND; i++)
{
boolean isLineFill = true;
for (int j = 0; j < WIDTH_DIAMAND; j++)
{
if (deadArray[j][i] == 0)
{
isLineFill = false;
}
}
if(isLineFill)
{
removedLine ++;
for (int j = 0; j < WIDTH_DIAMAND; j++)
{
deadArray[j][0] = 0;
}
for (int j = i; j >= 1; j--)
{
for (int k = 0; k < WIDTH_DIAMAND; k++)
{
deadArray[k][j] = deadArray[k][j - 1];
}
}
}
}
if (removedLine != 0)
{
score += 10 * (2 ^ (removedLine - 1));
}
System.out.println("" + removedLine);
}
public void initLive()
{
livePos = new int[]{orgin_x, 0};
currentDiamand = nextDiamand;
nextDiamand = Math.abs(random.nextInt()) % 19;
liveArray = diamandArray[currentDiamand];
}
private boolean canMakeNewLive()
{
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 4; j++)
{
if (diamandArray[nextDiamand][i][j] == 1)
{
if (deadArray[orgin_x + i][j] == 1)
{
return false;
}
}
}
}
return true;
}
//0~0,1~4,5~8,9~12,13~14,15~16,17~18
private int getNextShapeId(int shapeId)
{
switch (shapeId)
{
case 0:
return 0;
case 1:
case 2:
case 3:
case 5:
case 6:
case 7:
case 9:
case 10:
case 11:
case 13:
case 15:
case 17:
return shapeId + 1;
case 4:
case 8:
case 12:
return shapeId - 3;
case 14:
case 16:
case 18:
return shapeId - 1;
default:
return 0;
}
}
private void changeShape()
{
currentDiamand = getNextShapeId(currentDiamand);
liveArray = diamandArray[currentDiamand];
}
private boolean canChange()
{
int[][] tmpArray = diamandArray[getNextShapeId(currentDiamand)];
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 4; j++)
{
if (tmpArray[i][j] == 1)
{
if (livePos[1] + j > HIGHTH_DIAMAND - 1)
{
return false;
}
if (livePos[1] + j < 0)
{
return false;
}
if (livePos[0] + i > WIDTH_DIAMAND - 1)
{
return false;
}
if (livePos[0] + i < 0)
{
return false;
}
if (deadArray[livePos[0] + i][livePos[1] + j] == 1)
{
return false;
}
}
}
}
return true;
}
private boolean canDown()
{
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 4; j++)
{
if (liveArray[i][j] == 1)
{
if (livePos[1] + j + 1 > (HIGHTH_DIAMAND - 1))
{
return false;
}
if (deadArray[livePos[0] + i][livePos[1] + j + 1] == 1)
{
return false;
}
}
}
}
return true;
}
private boolean canLeft()
{
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 4; j++)
{
if (liveArray[i][j] == 1)
{
if (livePos[0] + i - 1 < 0)
{
return false;
}
if (deadArray[livePos[0] + i - 1][livePos[1] + j] == 1)
{
return false;
}
}
}
}
return true;
}
private boolean canRight()
{
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 4; j++)
{
if (liveArray[i][j] == 1)
{
if (livePos[0] + i + 1 >= HIGHTH_DIAMAND)
{
return false;
}
if (deadArray[livePos[0] + i + 1][livePos[1] + j] == 1)
{
return false;
}
}
}
}
return true;
}
public void down()
{
livePos[1] = livePos[1] + 1;
}
public void left()
{
livePos[0] = livePos[0] - 1;
}
public void right()
{
livePos[0] = livePos[0] + 1;
}
public void updateUI()
{
extImg.clear((byte)0);
extImg.getImage().getGraphics().setColor(1);
extImg.getImage().getGraphics().drawLine(leftMagin, 0, leftMagin, 80);
// extImg.getImage().getGraphics().setColor(0x00FF00);
// extImg.getImage().getGraphics().setStrokeStyle(Graphics.DOTTED);
// for (int i = 0; i < WIDTH_DIAMAND; i++)
// {
// extImg.getImage().getGraphics().drawLine(leftMagin + SIZE_DIAMAND*i, 0, leftMagin + SIZE_DIAMAND*i, 80);
// }
// extImg.getImage().getGraphics().setStrokeStyle(Graphics.SOLID);
// extImg.getImage().getGraphics().setColor(1);
extImg.getImage().getGraphics().drawLine(leftMagin + 64, 0, leftMagin + 64, 80);
extImg.getImage().getGraphics().drawString("Score:", leftMagin + 68, 0, Graphics.TOP|Graphics.LEFT);
extImg.getImage().getGraphics().drawString("" + score, leftMagin + 68, 20, Graphics.TOP|Graphics.LEFT);
if (!isRunning)
{
extImg.getImage().getGraphics().drawString("GameOver", 30, 40, Graphics.TOP|Graphics.LEFT);
}
else
{
for (int i = 0; i < WIDTH_DIAMAND; i++)
{
for (int j = 0; j < HIGHTH_DIAMAND; j++)
{
if (deadArray[i][j] == 1)
{
extImg.getImage().getGraphics().drawImage(img, leftMagin + SIZE_DIAMAND * i, SIZE_DIAMAND * j, Graphics.LEFT | Graphics.TOP);
}
}
}
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 4; j++)
{
if (liveArray[i][j] == 1)
{
extImg.getImage().getGraphics().drawImage(img, leftMagin + (livePos[0] + i) * SIZE_DIAMAND,
(livePos[1] + j) * SIZE_DIAMAND, Graphics.LEFT | Graphics.TOP);
}
if (diamandArray[nextDiamand][i][j] == 1)
{
extImg.getImage().getGraphics().drawImage(img, leftMagin + 64 + (1 + i) * SIZE_DIAMAND,
40 + j * SIZE_DIAMAND, Graphics.LEFT | Graphics.TOP);
}
}
}
}
extImg.blitToScreen(0,0);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -