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

📄 gamemanager.java

📁 基于j2me的手机赛车游戏源代码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
                mA256 = mA256 + (ve << 8) / 40;
                mA = mA256 >> 8;
                for(int n = 0; n < 2; n++)
                    ar[n].tick();

                for(int n = 0; n < 4; n++)
                    os[n].tick();

                av.tick();
                if(da <= 0)
                {
                    vAvv();
                    isGO = true;
                    isAv = false;
                }
                if(isGO)
                {
                    tur = 0;
                    ve256 -= 1024;
                    ve = ve256 >> 8;
                    if(ve < 0)
                    {
                        ve = 0;
                        isAv = false;
                        mi.mtempo = mi.tempo;
                    }
                }
                if(mA > MeT[li])
                {
                    stTi = true;
                    if(!isViA)
                    {
                        vGio();
                        isGO = true;
                    } else
                    {
                        isGO = true;
                    }
                }
                if(!stTi)
                    tS = mi.ct(System.currentTimeMillis() - tIn);
            }
        }
    }

    public void run()
    {
        Thread cT = Thread.currentThread();
        try
        {
            while(cT == aT) 
            {
                long sTi = System.currentTimeMillis();
                if(!iP)
                    if(can.isShown())
                    {
                        if(!hBS)
                            hBS = true;
                        tick();
                    } else
                    if(hBS)
                        pause();
                if(can.isShown() && vo++ % 2 == 0 && !isSe)
                {
                    can.repaint(0, 0, 176, 208);
                    can.serviceRepaints();
                }
                long tTa = System.currentTimeMillis() - sTi;
                if(tTa < 40L)
                    synchronized(this)
                    {
                        wait(40L - tTa);
                    }
                else
                    Thread.yield();
            }
        }
        catch(Exception e) { }
    }

    public synchronized void start()
    {
        aT = new Thread(this);
        aT.start();
    }

    public synchronized void stop()
    {
        aT = null;
    }

    public void pause()
    {
        synchronized(this)
        {
            iP = true;
        }
    }

    public synchronized boolean isPaused()
    {
        return iP;
    }

    public void resume()
    {
        synchronized(this)
        {
            iP = false;
        }
    }

    public Canvas getCanvas()
    {
        return can;
    }

    void closePressed()
    {
        if(!iP)
            pause();
        mi.gameManagerMainMenu(isViA || isViG);
    }

    public void keyPressed(int kC)
    {
        if(isSe)
        {
            if(kC == 53 || kC == -5)
            {
                iAu = se.pa;
                isSe = false;
                isCa = true;
                se.libera();
                se = null;
                caricaDati();
                return;
            }
            int p = se.pa;
            if(kC == -3 || kC == 52)
                p--;
            else
            if(kC == -4 || kC == 54)
                p++;
            if(p > 3)
                p = 0;
            else
            if(p < 0)
                p = 3;
            if(se.pa != p)
            {
                se.pa = p;
                if(can.isShown())
                {
                    can.repaint(0, 0, 176, 208);
                    can.serviceRepaints();
                }
            }
            return;
        }
        if(iP && can.isShown())
        {
            resume();
        } else
        {
            if(kC == -1 || kC == -3 || kC == -4 || kC == 49 || kC == 50 || kC == 51)
                pAc = true;
            else
            if(kC == -2 || kC == 48 || kC == 55 || kC == 56)
                pDc = true;
            if(kC == -3 || kC == 52 || kC == 49 || kC == 55)
                pSi = true;
            else
            if(kC == -4 || kC == 54 || kC == 51 || kC == 57)
                pDe = true;
            if(kC == 53 || kC == -5)
                pTu = true;
        }
    }

    public void keyReleased(int keyCode)
    {
        pAc = false;
        pDc = false;
        pDe = false;
        pSi = false;
        pTu = false;
    }

    private void fill(int indice, int n1, int n2, boolean presente)
    {
        for(int n = n1; n >= n2; n--)
            str[indice][n] = presente;

    }

    boolean isGameOver()
    {
        return isViA || isViG;
    }

    private synchronized void caricaDati()
    {
        auG = new Image[3];
        String nomi[] = {
            "ho", "ma", "mi", "ni"
        };
        try
        {
            for(int n = 0; n < 3; n++)
                auG[n] = Image.createImage("/i/" + nomi[iAu] + "/" + (n + 1) + ".png");

        }
        catch(IOException e) { }
        dxA = (short)auG[0].getWidth();
        dyA = (short)auG[0].getHeight();
        sT = tuM[iAu];
        for(iAuAv = ra.nextInt() & 0x3; iAuAv == iAu; iAuAv = ra.nextInt() & 0x3);
        Image pa = null;
        Image ci = null;
        try
        {
            if(!gC)
            {
                pa = Image.createImage("/i/sf/pa.png");
                ci = Image.createImage("/i/sf/ci.png");
                ni = Image.createImage("/i/fi/ni.png");
                fd = Image.createImage("/i/va/fd.png");
                iLa = new Immagine(Image.createImage("/i/ar/la.png"));
                iSe = new Immagine(Image.createImage("/i/ar/pa.png"));
                iAr = new Immagine(Image.createImage("/i/ar/ar.png"));
                iTa = new Immagine(Image.createImage("/i/os/ta.png"));
                iFu = new Immagine(Image.createImage("/i/os/fu.png"));
            }
            iAv = new Immagine(Image.createImage("/i/" + nomi[iAuAv] + "/1.png"));
        }
        catch(IOException e) { }
        if(!gC)
        {
            sf = Image.createImage(528, 94);
            Graphics g = sf.getGraphics();
            for(int x = 0; x < 528; x++)
                g.drawImage(ci, x, 0, 20);

            g.drawImage(pa, 0, 27, 20);
            iniS = new int[110];
            dxS = new int[110];
            dxL = new int[110];
            liS = new int[110];
            r2562 = new int[110];
            for(int n = 1; n < 76; n++)
            {
                iniS[n] = 67 - (n * 102) / 76;
                dxS[n] = 20 + (n * 102) / 76;
                dxL[n] = (n * 8) / 76;
                if((n * 8) / 76 < 1)
                    dxL[n] = 1;
                r2562[n] = (0x10000 * dxS[n]) / 102;
            }

            for(int n = 76; n < 110; n++)
            {
                liS[n] = 67 - (n * 102) / 76;
                dxS[n] = 20 + (n * 102) / 76;
                r2562[n] = r2562[75];
            }

            r2562[0] = r2562[1];
            str = new boolean[20][100];
            for(int in = 0; in < 20; in++)
            {
                boolean pr = true;
                int yr = -in;
                int yp = (3025 - 18 * yr) / (55 + yr);
                while(yr < 165) 
                {
                    yr += 10;
                    int ypp = yp;
                    yp = (3025 - 18 * yr) / (55 + yr);
                    fill(in, ypp, yp, pr);
                    pr = !pr;
                }
            }

            ar = new Arredo[2];
            for(int n = 0; n < 2; n++)
                ar[n] = new Arredo(this, 110 * n);

            os = new Ostacolo[4];
            for(int n = 0; n < 2; n++)
                os[n] = new Ostacolo(this, n, iFu, 60, 3);

            for(int n = 2; n < 4; n++)
                os[n] = new Ostacolo(this, n, iTa, 120, 1);

        } else
        {
            for(int n = 0; n < 4; n++)
                os[n].re();

            for(int n = 0; n < 2; n++)
                ar[n].re();

        }
        av = new Avversario(this, iAv, veM[iAuAv], tuM[iAuAv]);
        xAG = 34;
        pi = new int[10][2];
        li = mi.livello;
        mi.mtempo = -1L;
        isCa = false;
        isCD = true;
        isAv = false;
        isGO = false;
        gC = true;
    }

    void resetta()
    {
        se = new Selezione(mi);
        isSe = true;
        isCa = false;
        xSf256 = 0;
        xSf = 0;
        poSt = 0;
        poSt256 = 0;
        fr = 0;
        po = 0;
        duSe = 256;
        ve256 = 0;
        ve = 0;
        iAG = 0;
        st256 = 0;
        ca = 0x271000;
        mA256 = 0;
        da = 100;
        pTu = false;
        hBS = false;
        iP = false;
        isViG = false;
        isViA = false;
        isCD = false;
        isAv = false;
        isGO = false;
        stTi = false;
        cD = 3000;
        tS = "0.00.00";
        tur = 0;
        mi.mtempo = -1L;
        li = mi.livello;
    }

    private void qS(int it[][], int nE)
    {
        qs(it, 0, nE - 1);
    }

    private void qs(int it[][], int le, int ri)
    {
        int i = le;
        int j = ri;
        int z = it[(le + ri) / 2][0];
        do
        {
            while(it[i][0] > z && i < ri) 
                i++;
            for(; z > it[j][0] && j > le; j--);
            if(i <= j)
            {
                int y0 = it[i][0];
                int y1 = it[i][1];
                it[i][0] = it[j][0];
                it[i][1] = it[j][1];
                it[j][0] = y0;
                it[j][1] = y1;
                i++;
                j--;
            }
        } while(i <= j);
        if(le < j)
            qs(it, le, j);
        if(j < ri)
            qs(it, i, ri);
    }

    void vAvv()
    {
        if(isViG)
        {
            return;
        } else
        {
            isViA = true;
            isViG = false;
            mi.vinto = false;
            return;
        }
    }

    void vGio()
    {
        if(isViA)
        {
            return;
        } else
        {
            isViA = false;
            isViG = true;
            mi.vinto = true;
            return;
        }
    }

    void diAr(DirectGraphics dg)
    {
        int pR = MeT[li] - mA;
        if(pR < 0 || pR > 222)
            return;
        int xp = (5576 - 25 * pR) / (76 + pR);
        if(xp < 1 || xp > 109)
        {
            return;
        } else
        {
            int dx = 172 * r2562[xp] >> 16;
            int dy = 26 * r2562[xp] >> 16;
            iAr.rid(dg, liS[xp] + (2 * dxS[xp] - dx) / 2, 94 - dy - xp / 3, dx, 0);
            return;
        }
    }
/*
    static 
    {
        MPT = 40;
    }*/
}

⌨️ 快捷键说明

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