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

📄 gamemain.java

📁 用JAVA写的
💻 JAVA
字号:
// FrontEnd Plus GUI for JAD
// DeCompiled : gamemain.class
import com.nokia.mid.ui.FullCanvas;
import java.io.PrintStream;
import java.util.Timer;
import javax.microedition.lcdui.*;

public class gamemain extends FullCanvas
    implements Runnable
{

    int gamestatus;
    boolean conti;
    int rate;
    long fps;
    Image offscreen;
    Image gametitle;
    private Thread t;
    gamekeystatus gkeystatus;
    tilemanger gametilemap;
    sprite mysprite;
    gamelogic mygamelogic;
    Timer timer;
    timerbar gamebar;
    int lasttime;
    int col;
    int row;

    public gamemain()
    {
        gamestatus = 0;
        conti = true;
        rate = 10;
        fps = 0L;
        offscreen = null;
        gametitle = null;
        t = null;
        col = 0;
        row = 0;
        timer = new Timer();
        gamebar = new timerbar();
        gkeystatus = new gamekeystatus();
        mygamelogic = new gamelogic();
        mysprite = new sprite(mygamelogic.mapwidth, mygamelogic.mapheight);
        gametilemap = new tilemanger(mygamelogic.map, mygamelogic.mapwidth, mygamelogic.mapheight);
        if(isDoubleBuffered())
            try
            {
                offscreen = Image.createImage(getWidth(), getHeight());
                gametitle = Image.createImage("/title.png");
            }
            catch(Exception exception)
            {
                System.out.println(exception.getMessage());
            }
        else
            System.out.println("no double buffering");
    }

    public void run()
    {
        long l = 0L;
        long l2 = 0L;
        while(conti) 
        {
            long l1 = System.currentTimeMillis();
            input();
            logic();
            repaint(0, 0, getWidth(), getHeight());
            serviceRepaints();
            long l3 = System.currentTimeMillis();
            if(l3 - l1 > 0L)
                fps = 1000L / (l3 - l1);
            if(l3 - l1 < (long)rate)
                try
                {
                    Thread.sleep((long)rate - (l3 - l1));
                }
                catch(Exception exception) { }
        }
    }

    public void input()
    {
        if(!gkeystatus.getkeystatus(2));
        if(!gkeystatus.getkeystatus(5));
        if(!gkeystatus.getkeystatus(1));
        if(!gkeystatus.getkeystatus(6));
        if(gkeystatus.getkeyclicked(8))
            if(gamestatus == 0)
            {
                gamestatus = 1;
                timer.schedule(gamebar, 1000L, 1000L);
            } else
            {
                col = mysprite.spritecol;
                row = mysprite.spriterow;
                mysprite.bclick(gametilemap.mapx, gametilemap.mapy);
                if(mygamelogic.bclick(row, col))
                {
                    gametilemap.mapchange(mygamelogic.map);
                    gamebar.gametime = gamebar.gametime + 6;
                }
            }
    }

    public void logic()
    {
        switch(gamestatus)
        {
        case 1: // '\001'
            if(gamebar.gettime() < 1)
                gamestatus = 4;
            if(mygamelogic.gameover())
            {
                lasttime = gamebar.gettime();
                gamestatus = 2;
            }
            break;

        case 2: // '\002'
            System.gc();
            mygamelogic.nextmap();
            mysprite.spriteinit(mygamelogic.mapwidth, mygamelogic.mapheight);
            gametilemap.mapinit(mygamelogic.map, mygamelogic.mapwidth, mygamelogic.mapheight);
            gamestatus = 1;
            gamebar.settime(45 + lasttime);
            mygamelogic.washcount++;
            break;
        }
    }

    public void paint(Graphics g)
    {
        Graphics g1 = offscreen.getGraphics();
        g1.setColor(0, 0, 0);
        g1.fillRect(0, 0, getWidth(), getHeight());
        if(gamestatus == 1)
        {
            gametilemap.drawmap(g1, mysprite.spritex, mysprite.spritey);
            mysprite.drawsprite(g1, gametilemap.mapx, gametilemap.mapy);
            g1.setColor(255, 255, 255);
            g1.drawString(mygamelogic.gamelevel + "       " + mygamelogic.washcount + "      " + gamebar.gettime(), 16, 2, 0);
        }
        if(gamestatus == 0)
        {
            g1.setColor(255, 255, 255);
            Graphics _tmp = g1;
            Graphics _tmp1 = g1;
            g1.drawImage(gametitle, 64, 64, 0x2 | 0x1);
        }
        if(gamestatus == 2)
        {
            g1.setColor(255, 255, 255);
            Graphics _tmp2 = g1;
            Graphics _tmp3 = g1;
            g1.drawString("Level " + (mygamelogic.gamelevel + 1), 64, 64, 0x40 | 0x1);
        }
        if(gamestatus == 4)
        {
            g1.setColor(255, 255, 255);
            Graphics _tmp4 = g1;
            Graphics _tmp5 = g1;
            g1.drawString("GAME OVER", 64, 64, 0x40 | 0x1);
            Graphics _tmp6 = g1;
            Graphics _tmp7 = g1;
            g1.drawString("mail:js_lin@163.com", 64, 90, 0x40 | 0x1);
        }
        Graphics _tmp8 = g;
        Graphics _tmp9 = g;
        g.drawImage(offscreen, 0, 0, 0x10 | 0x4);
    }

    public void exit()
    {
        conti = false;
        t = null;
    }

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

    public void keyPressed(int i)
    {
        int j = getGameAction(i);
        switch(j)
        {
        case 2: // '\002'
            mysprite.spritectrl(1);
            break;

        case 5: // '\005'
            mysprite.spritectrl(2);
            break;

        case 1: // '\001'
            mysprite.spritectrl(3);
            break;

        case 6: // '\006'
            mysprite.spritectrl(4);
            break;
        }
        gkeystatus.gamekeyPressed(j);
    }

    public void keyReleased(int i)
    {
        int j = getGameAction(i);
        gkeystatus.gamekeyReleased(j);
    }
}

⌨️ 快捷键说明

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