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

📄 gamefc.java

📁 超级玛丽的源代码
💻 JAVA
字号:
// Decompiled by Jad v1.5.8e2. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://kpdus.tripod.com/jad.html
// Decompiler options: packimports(3) 
// Source File Name:   GameFC.java

import com.nokia.mid.ui.FullCanvas;
import java.io.PrintStream;
import java.util.Hashtable;
import java.util.Vector;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;

public class GameFC extends FullCanvas
    implements Runnable
{

    public GameFC(Main main1)
    {
        thread = null;
        offscreen = Image.createImage(96, 65);
        upPressed = false;
        downPressed = false;
        leftPressed = false;
        rightPressed = false;
        firePressed = false;
        turtles = new Vector();
        main = main1;
        main1.cache.put("mario.png", main1.loadImage("mario.png"));
        main1.cache.put("bricks.png", main1.loadImage("bricks.png"));
        main1.cache.put("characters1.png", main1.loadImage("characters1.png"));
        main1.cache.put("characters2.png", main1.loadImage("characters2.png"));
        loadLevel(1);
    }

    private void start()
    {
        if(thread == null)
        {
            thread = new Thread(this);
            thread.start();
        }
    }

    protected void paint(Graphics g)
    {
        start();
        Graphics g1 = offscreen.getGraphics();
        g1.setColor(bgR, bgG, bgB);
        g1.fillRect(0, 0, 96, 65);
        landscape.paint(g1);
        paintTurtles(g1);
        mario.paint(g1);
        if(gate != null)
            gate.paint(g1);
        if(levelInfo != null)
            levelInfo.paint(g1);
        main.paintCenter(g, offscreen);
    }

    public void run()
    {
_L2:
        if(!dead && gate == null)
        {
            landscape.touch();
            marioTouchTurtles();
            if(rightPressed)
                mario.move(1);
            if(leftPressed)
                mario.move(-1);
            if(upPressed)
                mario.jump();
            mario.idle();
            turtleAction();
            if(completed)
                gate = new Gate(0, main);
            break MISSING_BLOCK_LABEL_388;
        }
        if(dead && mario.yF < 650)
        {
            mario.dead();
            if(mario.deadJump < 4)
            {
                mario.deadJump++;
                mario.yF -= 30;
            } else
            if(mario.yF < 650)
                mario.yF += 40;
        } else
        if(gate == null)
            gate = new Gate(0, main);
        if(levelInfo != null && levelInfo.done)
        {
            if(levelInfo.state == 1)
                gate = new Gate(1, main);
            if(levelInfo.state == 0)
                main.setCurrentDA(new MainMenuL(main));
            levelInfo = null;
        }
        if(gate == null || !gate.done)
            break MISSING_BLOCK_LABEL_388;
        if(dead)
        {
            gate = new Gate(2, main);
            levelInfo = new LevelInfo(0, this);
            continue; /* Loop/switch isn't completed */
        }
        if(completed)
        {
            loadLevel(level + 1);
            continue; /* Loop/switch isn't completed */
        }
        gate = null;
        repaint();
        Thread.currentThread();
        Thread.sleep(100L);
        continue; /* Loop/switch isn't completed */
        Exception exception;
        exception;
        System.out.println("Run cycle exception: " + exception.toString());
        if(main.currentDA == this) goto _L2; else goto _L1
_L1:
        thread = null;
        return;
    }

    public void keyPressed(int i)
    {
        if(main.currentDA != this)
            return;
        if(i == -6)
        {
            GameMenuL gamemenul = new GameMenuL(main, this);
            main.setCurrentDA(gamemenul);
            return;
        }
        int j = getGameAction(i);
        if(j == 1)
            upPressed = true;
        if(j == 6)
            downPressed = true;
        if(j == 2)
            leftPressed = true;
        if(j == 5)
            rightPressed = true;
        if(j == 8)
            firePressed = true;
    }

    public void keyReleased(int i)
    {
        int j = getGameAction(i);
        if(j == 1)
            upPressed = false;
        if(j == 6)
            downPressed = false;
        if(j == 2)
            leftPressed = false;
        if(j == 5)
            rightPressed = false;
        if(j == 8)
            firePressed = false;
    }

    public void loadLevel(int i)
    {
        if(i > 15)
            i = 1;
        level = i;
        if(main.demo && i > 1)
        {
            main.setCurrentDA(new ActivateFC(main));
            return;
        }
        turtles.removeAllElements();
        String s = new String(main.loadResource("levels/level" + i + ".txt"));
        Vector vector = main.getLines(s);
        String s1 = (String)vector.elementAt(0);
        Vector vector1 = main.getTokens(s1);
        bgR = Integer.parseInt((String)vector1.elementAt(0));
        bgG = Integer.parseInt((String)vector1.elementAt(1));
        bgB = Integer.parseInt((String)vector1.elementAt(2));
        int j = ((String)vector.elementAt(1)).length();
        int k = vector.size();
        char ac[][] = new char[j][k - 1];
        for(int l = 0; l < k - 1; l++)
        {
            String s2 = (String)vector.elementAt(l + 1);
            for(int i1 = 0; i1 < j; i1++)
                ac[i1][l] = s2.charAt(i1);

        }

        landscape = new Landscape(main, ac, this);
        mario = new Mario(main, this);
        dead = false;
        completed = false;
        gate = new Gate(2, main);
        levelInfo = new LevelInfo(1, this);
        main.saveFile("level", ("" + i).getBytes());
    }

    private void paintTurtles(Graphics g)
    {
        int i = turtles.size();
        for(int j = 0; j < i; j++)
        {
            GroundEnemy groundenemy = (GroundEnemy)turtles.elementAt(j);
            if(!groundenemy.isActive())
            {
                turtles.removeElementAt(j);
                j--;
                i--;
            } else
            {
                groundenemy.paint(g);
            }
        }

    }

    private void turtleAction()
    {
        int i = turtles.size();
        for(int j = 0; j < i; j++)
        {
            GroundEnemy groundenemy = (GroundEnemy)turtles.elementAt(j);
            groundenemy.move();
        }

    }

    private void marioTouchTurtles()
    {
        int i = turtles.size();
        for(int j = 0; j < i; j++)
        {
            GroundEnemy groundenemy = (GroundEnemy)turtles.elementAt(j);
            int k = groundenemy.xF / 10;
            int l = k + groundenemy.w;
            int i1 = groundenemy.yF / 10;
            int j1 = i1 + groundenemy.h;
            if(main.inside(mario.xF / 10 + mario.w / 2, (mario.yF / 10 + mario.h) - mario.h / 4, k, i1, l, j1))
                dead = true;
        }

    }

    private Main main;
    private Thread thread;
    private Image offscreen;
    private boolean upPressed;
    private boolean downPressed;
    private boolean leftPressed;
    private boolean rightPressed;
    public boolean firePressed;
    public Mario mario;
    public Landscape landscape;
    public boolean dead;
    public boolean completed;
    private Gate gate;
    private LevelInfo levelInfo;
    public int level;
    public Vector turtles;
    private int bgR;
    private int bgG;
    private int bgB;
}

⌨️ 快捷键说明

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