📄 llkcanvas.java
字号:
{
X1 = - 1;
Y1 = - 1;
X2 = - 1;
Y2 = - 1;
}
XX = - 1;
YY = - 1;
// matrix.clearTrace();
TimeLeft += 2;
if (TimeLeft > TimeTotal)
{
TimeLeft = TimeTotal;
}
if (matrix.getRest() == 0)
{
Success();
}
matrix.rearrange(round);
if (matrix.find() == 0)
{
if (RestShuffle > 0)
{
do
{
matrix.shuffleMatrix();
}
while (matrix.find() == 0);
RestShuffle--;
matrix.rearrange(round)
;
playbs(bs_shuffle);
}
else
{
plays(s_gameover);
GameEnd();
}
}
repaint();
}
else
{
XX = - 1;
YY = - 1;
playbs(bs_error);
}
repaint();
}
break;
case 1:
Y--;
if (Y < 1)
{
Y = VCount;
}
repaint();
break;
case 6:
Y++;
if (Y > VCount)
{
Y = 1;
}
repaint();
break;
case 2:
X--;
if (X < 1)
{
X = HCount;
}
repaint();
break;
case 5:
X++;
if (X > HCount)
{
X = 1;
}
repaint();
break;
default:
break;
}
}
public void paint(Graphics g)
{
if (isEnded)
{
drawEnd();
}
else
if (!isPaused)
{
drawGame();
}
else
{
drawPause();
}
flushGraphics();
}
private void drawPause()
{
Graphics g = getGraphics();
g.setColor(0);
g.fillRect(0, 0, CanvasWidth, CanvasHeight);
g.setColor(255, 255, 255);
g.drawImage(PauseImage, (CanvasWidth - PauseImage.getWidth()) / 2,
(CanvasHeight - PauseImage.getHeight()) / 2-14, 0);
drawStatusBoard(g);
}
private void drawGame()
{
Graphics g = getGraphics();
drawBackground(g);
drawMaze(g);
drawStatusBoard(g);
}
private void drawEnd()
{
Graphics g = getGraphics();
g.setColor(0);
g.fillRect(0, 0, CanvasWidth, CanvasHeight);
g.setColor(255, 255, 255);
try
{
Image img = Image.createImage("/gameover.png");
g.drawImage(img, (CanvasWidth - img.getWidth()) / 2, (CanvasHeight
- img.getHeight()) / 2, 0);
img = null;
}
catch (Exception e)
{
e.printStackTrace();
}
drawStatusBoard(g);
}
private void drawBackground(Graphics g)
{
g.setColor(BackColor);
g.fillRect(0, 0, CanvasWidth, CanvasHeight);
}
private void drawMaze(Graphics g)
{
boolean h1 = false;
boolean v1 = false;
boolean h2 = false;
boolean v2 = false;
for (int x = 0; x < HCount; x++)
{
for (int y = 0; y < VCount; y++)
{
int b = matrix.getAt(x + 1, y + 1);
if (x == 0)
{
if (h1)
{
if (b == matrix.HConn || b / 100 == matrix.HConn)
{
h1 = false;
g.setColor(LineColor);
g.fillRect(0, y * VSize + YMargin, LineSize, VSize/2);
g.fillRect(0, (y * VSize + YMargin + VSize / 2) - 1,
XMargin - 1, LineSize);
}
else
{
g.setColor(LineColor);
g.fillRect(0, y * VSize + YMargin, LineSize, VSize
- 1);
}
}
else
if (b == matrix.HConn || b / 100 == matrix.HConn)
{
h1 = true;
g.setColor(LineColor);
g.fillRect(0, (y * VSize + YMargin + VSize / 2) - 1,
LineSize, VSize / 2);
g.fillRect(0, (y * VSize + YMargin + VSize / 2) - 1,
XMargin - 1, LineSize);
}
}
if (x == HCount - 1)
{
if (h2)
{
if (b == matrix.HConn || b / 100 == matrix.HConn)
{
h2 = false;
g.setColor(LineColor);
g.fillRect((HCount * HSize + XMargin * 2) - 4, y *
VSize + YMargin, LineSize, VSize / 2);
g.fillRect(HCount * HSize + XMargin, (y * VSize +
YMargin + VSize / 2) - 1, XMargin - 1, LineSize)
;
}
else
{
g.setColor(LineColor);
g.fillRect((HCount * HSize + XMargin * 2) - 4, y *
VSize + YMargin, LineSize, VSize - 1);
}
}
else
if (b == matrix.HConn || b / 100 == matrix.HConn)
{
h2 = true;
g.setColor(LineColor);
g.fillRect((HCount * HSize + XMargin * 2) - 4, (y *
VSize + YMargin + VSize / 2) - 1, LineSize, VSize /
2);
g.fillRect(HCount * HSize + XMargin, (y * VSize +
YMargin + VSize / 2) - 1, XMargin - 1, LineSize);
}
}
if (y == 0)
{
if (v1)
{
if (b == matrix.VConn || b / 100 == matrix.VConn)
{
v1 = false;
g.setColor(LineColor);
g.fillRect(x * HSize + XMargin, 0, HSize / 2,
LineSize);
g.fillRect((x * HSize + XMargin + HSize / 2) - 1, 0,
LineSize, YMargin - 1);
}
else
{
g.setColor(LineColor);
g.fillRect(x * HSize + XMargin, 0, HSize - 1,
LineSize);
}
}
else
if (b == matrix.VConn || b / 100 == matrix.VConn)
{
v1 = true;
g.setColor(LineColor);
g.fillRect((x * HSize + XMargin + HSize / 2) - 1, 0,
LineSize, YMargin - 1);
g.fillRect((x * HSize + XMargin + HSize / 2) - 1, 0,
HSize / 2, LineSize);
}
}
if (y == VCount - 1)
{
if (v2)
{
if (b == matrix.VConn || b / 100 == matrix.VConn)
{
v2 = false;
g.setColor(LineColor);
g.fillRect(x * HSize + XMargin, (VSize * VCount +
YMargin * 2) - 4, HSize / 2, LineSize);
g.fillRect((x * HSize + XMargin + HSize / 2) - 1,
VSize * VCount + YMargin, LineSize, YMargin - 1)
;
}
else
{
g.setColor(LineColor);
g.fillRect(x * HSize + XMargin, (VSize * VCount +
YMargin * 2) - 4, HSize - 1, LineSize);
}
}
else
if (b == matrix.VConn || b / 100 == matrix.VConn)
{
v2 = true;
g.setColor(LineColor);
g.fillRect((x * HSize + XMargin + HSize / 2) - 1, VSize
* VCount + YMargin, LineSize, YMargin - 1);
g.fillRect((x * HSize + XMargin + HSize / 2) - 1,
(VSize * VCount + YMargin * 2) - 4, HSize / 2,
LineSize);
}
}
if (b < matrix.SConn * 100)
{
b = - b % 100+matrix.SConn;
}
if (b >= 0 && b < SeedCount)
{
if ((X1 != x || Y1 != y) && (X2 != x || Y2 != y))
{
g.setColor(OuterColor);
g.drawImage(images[b], x * HSize + XMargin + 1, y *
VSize + YMargin + 1, 0);
g.drawRect(x * HSize + XMargin, y * VSize + YMargin,
HSize, VSize);
}
else
{
g.setColor(HintColor);
g.drawImage(images[b], x * HSize + XMargin + 1, y *
VSize + YMargin + 1, 0);
g.drawRect(x * HSize + XMargin, y * VSize + YMargin,
HSize - 2, VSize - 2);
g.drawRect(x * HSize + XMargin + 1, y * VSize + YMargin
+ 1, HSize - 3, VSize - 3);
}
}
if (b <= matrix.VConn)
{
g.setColor(LineColor);
if (b == matrix.VConn)
{
g.fillRect((x * HSize + XMargin + HSize / 2) - 1, y *
VSize + YMargin, LineSize, VSize - 1);
}
if (b == matrix.HConn)
{
g.fillRect(x * HSize + XMargin, (y * VSize + YMargin +
VSize / 2) - 1, HSize - 1, LineSize);
}
if (b == matrix.LDConn)
{
g.fillRect(x * HSize + XMargin, (y * VSize + YMargin +
VSize / 2) - 1, HSize / 2, LineSize);
g.fillRect((x * HSize + XMargin + HSize / 2) - 1, (y *
VSize + YMargin + VSize / 2) - 1, LineSize, VSize /
2);
}
if (b == matrix.LUConn)
{
g.fillRect(x * HSize + XMargin, (y * VSize + YMargin +
VSize / 2) - 1, HSize / 2, LineSize);
g.fillRect((x * HSize + XMargin + HSize / 2) - 1, y *
VSize + YMargin, LineSize, VSize / 2);
}
if (b == matrix.RDConn)
{
g.fillRect((x * HSize + XMargin + HSize / 2) - 1, (y *
VSize + YMargin + VSize / 2) - 1, HSize / 2,
LineSize);
g.fillRect((x * HSize + XMargin + HSize / 2) - 1, (y *
VSize + YMargin + VSize / 2) - 1, LineSize, VSize /
2);
}
if (b == matrix.RUConn)
{
g.fillRect((x * HSize + XMargin + HSize / 2) - 1, (y *
VSize + YMargin + VSize / 2) - 1, HSize / 2,
LineSize);
g.fillRect((x * HSize + XMargin + HSize / 2) - 1, y *
VSize + YMargin, LineSize, VSize / 2);
}
}
}
}
g.setColor(RectColor);//红色
g.drawRect(((X - 1) * HSize - 1) + XMargin, ((Y - 1) * VSize - 1) +
YMargin, HSize - 1, VSize - 1);
g.drawRect((X - 1) * HSize + XMargin, (Y - 1) * VSize + YMargin, HSize
- 1, VSize - 1);
g.setColor(SeleColor);//选中颜色
g.drawRect((XX - 1) * HSize + 1+XMargin, (YY - 1) * VSize + 1+YMargin,
HSize - 3, VSize - 3);
g.drawRect((XX - 1) * HSize + XMargin, (YY - 1) * VSize + YMargin,
HSize - 3, VSize - 3);
}
private void drawStatusBoard(Graphics g)
{
g.setColor(ScoreColor);
g.drawString("$" + Score, 5, CanvasHeight - 12, 0);
g.drawImage(ShuffleImage, CanvasWidth - 67, CanvasHeight - 13, 0);
if (RestShuffle < 100)
{
g.drawString(RestShuffle + " ", CanvasWidth - 54, CanvasHeight - 13,
0);
}
else
{
g.drawString("99", CanvasWidth - 54, CanvasHeight - 13, 0);
}
g.drawImage(HintImage, CanvasWidth - 33, CanvasHeight - 13, 0);
if (RestHint < 100)
{
g.drawString(RestHint + " ", CanvasWidth - 23, CanvasHeight - 13, 0)
;
}
else
{
g.drawString("99", CanvasWidth - 23, CanvasHeight - 13, 0);
}
g.setColor(TimeColor);
g.fillRect(50, CanvasHeight - 13, (TimeWidth * TimeLeft) / TimeTotal +
1, 12);
g.setColor(0);
g.drawString("Round " + round, 52, CanvasHeight - 13, 0);
g.setColor(0xffffff);
g.drawRect(50, CanvasHeight - 13, TimeWidth, 12);
g.drawImage(SoundImages[SoundVolume / 25], 53+TimeWidth, CanvasHeight -
13, 0);
g.setColor(255, 255, 255);
g.drawRect(CanvasWidth - 10, CanvasHeight - 10, 9, 9);
g.drawLine(CanvasWidth - 10, CanvasHeight - 10, CanvasWidth,
CanvasHeight);
g.drawLine(CanvasWidth - 10, CanvasHeight, CanvasWidth, CanvasHeight -
10);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -