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

📄 gamescreen.java

📁 手机游戏
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
                if((j = matrix.judge(X, Y, XX, YY, true)) > 0)
                {
                    Score += j;
                    repaint();
                    serviceRepaints();
                    j = 0;
                    playbs(bs_clear);
                    if(SoundVolume == 0)
                    {
                        for(int i = 0; i < 0x3ffff; i++)
                            j++;

                    }
                    matrix.setAt(X, Y, -1);
                    matrix.setAt(XX, YY, -1);
                    if(X == X1 + 1 && Y == Y1 + 1 || X == X2 + 1 && Y == Y2 + 1 || XX == X1 + 1 && YY == Y1 + 1 || XX == X2 + 1 && YY == Y2 + 1)
                    {
                        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(CurrentRound);
                    if(matrix.find() == 0)
                        if(RestShuffle > 0)
                        {
                            do
                                matrix.shuffleMatrix();
                            while(matrix.find() == 0);
                            RestShuffle--;
                            matrix.rearrange(CurrentRound);
                            playbs(bs_shuffle);
                        } else
                        {
                            plays(s_gameover);
                            GameEnd();
                        }
                    repaint();
                } else
                {
                    XX = -1;
                    YY = -1;
                    playbs(bs_error);
                }
                repaint();
            }
            break;

        case 1: // '\001'
            Y--;
            if(Y < 1)
                Y = VCount;
            repaint();
            break;

        case 6: // '\006'
            Y++;
            if(Y > VCount)
                Y = 1;
            repaint();
            break;

        case 2: // '\002'
            X--;
            if(X < 1)
                X = HCount;
            repaint();
            break;

        case 5: // '\005'
            X++;
            if(X > HCount)
                X = 1;
            repaint();
            break;
        }
    }

    public void paint(Graphics g)
    {
        if(Ended)
            endpaint();
        else
        if(!Paused)
            activepaint();
        else
            pausepaint();
        flushGraphics();
    }

    private void pausepaint()
    {
        Graphics g = getGraphics();
        g.setColor(0);
        g.fillRect(0, 0, ScreenWidth, ScreenHeight);
        g.setColor(255, 255, 255);
        g.drawImage(PauseImage, (ScreenWidth - PauseImage.getWidth()) / 2, (ScreenHeight - PauseImage.getHeight()) / 2 - 14, 0);
        paintscoreboard(g);
    }

    private void activepaint()
    {
        Graphics g = getGraphics();
        paintbackground(g);
        paintmaze(g);
        paintscoreboard(g);
    }

    private void endpaint()
    {
        Graphics g = getGraphics();
        g.setColor(0);
        g.fillRect(0, 0, ScreenWidth, ScreenHeight);
        g.setColor(255, 255, 255);
        try
        {
            Image img = Image.createImage("/res/img/gameover.png");
            g.drawImage(img, (ScreenWidth - img.getWidth()) / 2, (ScreenHeight - img.getHeight()) / 2, 0);
            img = null;
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
        paintscoreboard(g);
    }

    private void paintbackground(Graphics g)
    {
        g.setColor(BackColor);
        g.fillRect(0, 0, ScreenWidth, ScreenHeight);
    }

    private void paintmaze(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 paintscoreboard(Graphics g)
    {
        g.setColor(ScoreColor);
        g.drawString("$" + Score, 5, ScreenHeight - 12, 0);
        g.drawImage(ShuffleImage, ScreenWidth - 67, ScreenHeight - 13, 0);
        if(RestShuffle < 100)
            g.drawString(RestShuffle + " ", ScreenWidth - 54, ScreenHeight - 13, 0);
        else
            g.drawString("99", ScreenWidth - 54, ScreenHeight - 13, 0);
        g.drawImage(HintImage, ScreenWidth - 33, ScreenHeight - 13, 0);
        if(RestHint < 100)
            g.drawString(RestHint + " ", ScreenWidth - 23, ScreenHeight - 13, 0);
        else
            g.drawString("99", ScreenWidth - 23, ScreenHeight - 13, 0);
        g.setColor(TimeColor);
        g.fillRect(50, ScreenHeight - 13, (TimeWidth * TimeLeft) / TimeTotal + 1, 12);
        g.setColor(0);
        g.drawString("Round " + CurrentRound, 52, ScreenHeight - 13, 0);
        g.setColor(0xffffff);
        g.drawRect(50, ScreenHeight - 13, TimeWidth, 12);
        if(HASSOUND)
            g.drawImage(SoundImages[SoundVolume / 25], 53 + TimeWidth, ScreenHeight - 13, 0);
        g.setColor(255, 255, 255);
        g.drawRect(ScreenWidth - 10, ScreenHeight - 10, 9, 9);
        g.drawLine(ScreenWidth - 10, ScreenHeight - 10, ScreenWidth, ScreenHeight);
        g.drawLine(ScreenWidth - 10, ScreenHeight, ScreenWidth, ScreenHeight - 10);
    }

    protected void showNotify()
    {
    }

    protected void hideNotify()
    {
    }

    public boolean HASSOUND;
    public boolean HASTEST;
    private static final int KEY_SOFTKEY1 = -6;
    private static final int KEY_SOFTKEY2 = -7;
    private static final int KEY_SOFTKEY3 = -5;
    private int ScreenHeight;
    private int ScreenWidth;
    private int X;
    private int Y;
    private int XX;
    private int YY;
    private int X1;
    private int X2;
    private int Y1;
    private int Y2;
    private int VStep;
    private int HStep;
    private int VSizes[] = {
        25, 25, 25
    };
    private int HSizes[] = {
        25, 25, 25
    };
    private int VCounts[] = {
        8, 10, 12
    };
    private int HCounts[] = {
        8, 8, 8
    };
    public int VSize;
    public int HSize;
    private int VCount;
    private int HCount;
    private int SeedCounts[] = {
        20, 27, 35
    };
    public int SeedCount;
    public int ImageCount;
    private int XMargins[] = {
        4, 4, 4
    };
    private int YMargins[] = {
        4, 4, 4
    };
    private int XMargin;
    private int YMargin;
    private int HintOffset;
    private int LineSize;
    private int LineColor;
    private int BackColor;
    private int RectColor;
    private int SeleColor;
    private int OuterColor;
    private int HintColor;
    private int TimeColor;
    private Player player;
    private VolumeControl vc;
    private byte bs_error[];
    private byte bs_clear[];
    private byte bs_shuffle[];
    private byte bs_global[];
    private String s_win;
    private String s_gameover;
    private int SoundVolume;
    public Image SoundImages[];
    private int CurrentRound;
    private int Score;
    private int ScoreColor;
    private MatchIt2 parent;
    private MainMenu myparent;
    private int RestShuffle;
    private int RestHint;
    private int TimeLeft;
    private int TimeTotal;
    private int TimeWidth;
    private TimerTask timertask;
    private Timer timer;
    public int Level;
    public boolean Paused;
    public boolean Ended;
    public Image images[];
    public Image HintImage;
    public Image ShuffleImage;
    public Image PauseImage;
    private GameMatrix matrix;
    private GameWin gamewin;
    private FireworksCanvas fireworks;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -