⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 llkcanvas.java

📁 这是我买的一本J2me手机游戏设计的一本书里的例子
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
                        {
                            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 + -