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

📄 gamecanvas.java

📁 韩国人手机上的J2ME手机游戏哈里波特源代码
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
//Download by http://www.codefans.net
import javax.microedition.lcdui.*;
import javax.microedition.midlet.MIDlet;

class GameCanvas extends Canvas
    implements Runnable
{

    protected void hideNotify()
    {
    }

    protected void showNotify()
    {
        repaint(0, 0, Harry.SW, Harry.SH);
        GameCanvas _tmp = this;
        if(ResourceManager.repeatFlag)
            rm.play(ResourceManager.tsound, ResourceManager.repeatFlag);
    }

    public GameCanvas(Harry harry)
    {
        status = 0;
        speedlevel = 1;
        shopMsg = 0;
        shopKey = false;
        tmpMsg = 0;
        rTxt = 0;
        itemok = 0;
        midlet = harry;
    }

    void init()
    {
        offimg = Image.createImage(Harry.SW, Harry.SH);
        g2 = offimg.getGraphics();
        gscreen = new GameScreen(this);
        rm = new ResourceManager(this);
        rm.setOption(midlet.getSoundOption(), midlet.getEffectOption());
        speedlevel = (byte)midlet.getSpeed();
        bg = midlet.getBg();
        setSpeed();
        mscreen = new MenuScreen(this);
        mscreen.rm = rm;
        gscreen = null;
        System.gc();
        display = Display.getDisplay(midlet);
        display.setCurrent(this);
        repaint();
        (new Thread(this)).start();
        mscreen.setTitleStatus((byte)11);
        font = Font.getDefaultFont();
    }

    public void newGame()
    {
        status = 1;
        mscreen = null;
        rm.unloadImage();
        System.gc();
        rm.imageLoad((byte)3);
        System.gc();
        gscreen = new GameScreen(this);
        gscreen.rm = rm;
        status = 2;
        gscreen.newGame();
    }

    public void menu()
    {
        status = 1;
        gscreen = null;
        rm.unloadImage();
        System.gc();
        rm.imageLoad((byte)1);
        System.gc();
        mscreen = new MenuScreen(this);
        mscreen.rm = rm;
        status = 0;
        mscreen.titlestatus = 1;
    }

    public void paint(Graphics g1)
    {
        g = g1;
        switch(status)
        {
        case 0: // '\0'
            mscreen.paint();
            break;

        case 2: // '\002'
            gscreen.update();
            gscreen.paint();
            break;

        case 12: // '\f'
        case 14: // '\016'
            paintShop();
            break;

        case 17: // '\021'
            fillScreen(0x7fd2ff);
            paintBox(0, 0, Harry.SW, Harry.SH);
            paintHelp();
            drawImageCenter(rm.i_p, rm.publicCoord[11], Harry.CX, Harry.SH - 6);
            break;

        case 21: // '\025'
        case 22: // '\026'
            fillScreen(0x7fd2ff);
            paintBox(0, 0, Harry.SW, Harry.SH);
            paintLoad();
            drawImageCenter(rm.i_p, rm.publicCoord[11], Harry.CX, Harry.SH - 6);
            break;
        }
    }

    public void keyPressed(int i)
    {
        switch(status)
        {
        case 0: // '\0'
            mscreen.keyPressed(i);
            break;

        case 2: // '\002'
            gscreen.keyPressed(i);
            break;

        case 12: // '\f'
        case 14: // '\016'
            shopKeypress(i);
            break;

        case 17: // '\021'
            helpKeyPressed(i);
            break;

        case 21: // '\025'
            loadKeyPressed(i);
            break;

        case 22: // '\026'
            saveKeyPressed(i);
            break;

        case 1: // '\001'
            saveKeyPressed(i);
            mscreen = new MenuScreen(this);
            mscreen.rm = rm;
            mscreen.titlestatus = 0;
            status = 0;
            break;
        }
    }

    public void keyReleased(int i)
    {
        gscreen.keyReleased(i);
    }

    public void setGameStatus(byte byte0)
    {
        prevscreen = byte0;
        status = byte0;
    }

    public void setGameStatus(byte byte0, byte byte1)
    {
        prevscreen = byte1;
        status = byte0;
    }

    public void setSoundMax()
    {
        GameCanvas _tmp = this;
        ResourceManager.intVol++;
        GameCanvas _tmp1 = this;
        if(ResourceManager.intVol > 5)
        {
            GameCanvas _tmp2 = this;
            ResourceManager.intVol = 0;
        }
        midlet.setOption(ResourceManager.intVol, midlet.getEffectOption(), speedlevel, bg);
        rm.soundOnOff();
    }

    public void setSoundMin()
    {
        GameCanvas _tmp = this;
        ResourceManager.intVol--;
        GameCanvas _tmp1 = this;
        if(ResourceManager.intVol < 0)
        {
            GameCanvas _tmp2 = this;
            ResourceManager.intVol = 5;
        }
        midlet.setOption(ResourceManager.intVol, midlet.getEffectOption(), speedlevel, bg);
        rm.soundOnOff();
    }

    public void setSpeedMax()
    {
        speedlevel++;
        if(speedlevel > 4)
            speedlevel = 0;
        setSpeed();
    }

    public void setSpeedMin()
    {
        speedlevel--;
        if(speedlevel < 0)
            speedlevel = 4;
        setSpeed();
    }

    public void setSpeed()
    {
        switch(speedlevel)
        {
        case 0: // '\0'
            speedgap = 200;
            break;

        case 1: // '\001'
            speedgap = 150;
            break;

        case 2: // '\002'
            speedgap = 100;
            break;

        case 3: // '\003'
            speedgap = 50;
            break;

        case 4: // '\004'
            speedgap = 5;
            break;
        }
        midlet.setOption(midlet.getSoundOption(), midlet.getEffectOption(), speedlevel, bg);
    }

    public void setBg()
    {
        bg = bg != 1 ? 1 : 0;
        midlet.setOption(midlet.getSoundOption(), midlet.getEffectOption(), speedlevel, bg);
    }

    public void run()
    {
        do
        {
            updateFrame();
            Thread.yield();
            try
            {
                Thread.sleep(speedgap);
            }
            catch(Exception exception) { }
            repaint(0, 0, Harry.SW, Harry.SH);
        } while(true);
    }

    public void updateFrame()
    {
        frame++;
        if(frame == 0x7fffffff)
            frame = 0;
        frame2 = frame % 2;
        frame3 = frame % 3;
        frame4 = frame % 4;
        if(frame % 50 == 0)
            Runtime.getRuntime().gc();
    }

    public void drawImage(Image image, short aword0[], int i, int j)
    {
        g.setClip(i, j, aword0[2], aword0[3]);
        if(image == null)
        {
            return;
        } else
        {
            g.drawImage(image, i - aword0[0], j - aword0[1], 20);
            return;
        }
    }

    public void drawImage(Image image, int ai[], int i, int j)
    {
        g.setClip(i, j, ai[2], ai[3]);
        if(image == null)
        {
            return;
        } else
        {
            g.drawImage(image, i - ai[0], j - ai[1], 20);
            return;
        }
    }

    public void drawImage(Image image, byte abyte0[], int i, int j)
    {
        g.setClip(i, j, abyte0[2], abyte0[3]);
        if(image == null)
        {
            return;
        } else
        {
            g.drawImage(image, i - abyte0[0], j - abyte0[1], 20);
            return;
        }
    }

    public void drawImageCenter(Image image, short aword0[], int i, int j)
    {
        drawImage(image, aword0, i - aword0[2] / 2, j - aword0[3] / 2);
    }

    public void drawImageCenter(Image image, byte abyte0[], int i, int j)
    {
        drawImage(image, abyte0, i - abyte0[2] / 2, j - abyte0[3] / 2);
    }

    public void drawImage(Image image, int i, int j)
    {
        if(image == null)
        {
            return;
        } else
        {
            drawImage(image, i, j, 20);
            return;
        }
    }

    public void drawImage(Image image, int i, int j, int k)
    {
        try
        {
            g.setClip(0, 0, Harry.SW, Harry.SH);
            g.drawImage(image, i, j, k);
        }
        catch(Exception exception)
        {
            exception.printStackTrace();
        }
    }

    public void setColor(int i)
    {
        g.setColor(i);
    }

⌨️ 快捷键说明

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