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

📄 raidencanvas.java

📁 JVAV手机游戏单机版 连连看
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;
import java.util.Random;
public class RaidenCanvas extends GameCanvas implements Runnable
{
    private int CanvasWidth = getWidth();
    private int CanvasHeight = getHeight();
    private Image image;
    private Image imgState;
    private Image imgBack1;
    private Image imgBack2;
    private Image imgBack3;
    private Image imgExplored;
    private Image imgLife;
    private Image num[];
    private static final int MILLIS_PER_TICK = 50;
    private Player player;
    private final Graphics g;
    private Bullet []bullets = new Bullet[3];
    private Enemy1 enemy1;
    private Enemy2 enemy2;
    private Enemy3456[]enemy3456 = new Enemy3456[8];
    private int Enemy3456Cnt;
    private int backY;
    private int score=0;
    private int life = 2;
    private Random random;
    private int i, j;
    private volatile Thread animationThread = null;
    private boolean isPaused = false;
    private boolean isWin = false;
    private boolean isFail = false;
    private int energy = 40;
    private Bonus bonus;
    private boolean isExplored;
    private int expX, expY;
    private int bonusCnt;
    private RaidenMIDlet midlet;
    private int fontWidth,fontHeight;
    private Font font;
    private Image imgWin;
    private Image imgFail;
    private Audio audio;
    public RaidenCanvas(RaidenMIDlet midlet)
    {   
        super(false); // suppress key events for game keys
        this.midlet = midlet;
        setFullScreenMode(true);
        CanvasHeight = getHeight();
        g = getGraphics();
        random = new Random();
        font = Font.getFont(Font. FACE_PROPORTIONAL, Font.STYLE_BOLD,
            Font.SIZE_LARGE);
        fontHeight = font.getHeight();
        fontWidth = font.charWidth('雷');
        
        load();
        init();
    }
    public synchronized void start()
    {
        animationThread = new Thread(this);
        animationThread.start();
    }
    public synchronized void stop()
    {
        animationThread = null;
    }
    public void init()
    {   isPaused = false;
        isWin = false;
        isFail = false;
        score =0;
        backY = CanvasHeight - imgBack1.getHeight();
        player.init();
        enemy1.init();
        enemy2.init();
        for (i = 0; i < 8; i++)
        {
            enemy3456[i].init();
        }
        for (i = 0; i < 3; i++)
        {
            bullets[i].setAlive(false);
        }
        life = 2;
        energy = 40;
        Enemy3456Cnt=0;
        bonusCnt=0;
        isExplored = false;
        expX=0;
        expY=0;
        bonus.setAlive(false);
        if(midlet.set[RaidenMIDlet.AUDIO])audio.playSound(Audio.START);
    }
    private void load()
    {
    	  audio = Audio.getInstance();
        image = RaidenMIDlet.createImage("/player.png");
        player = new Player(image, image.getWidth(), image.getHeight());
        player.setCanvasSize(CanvasWidth, CanvasHeight);

        image = RaidenMIDlet.createImage("/bullet.png");
        bullets[0] = new Bullet(image, image.getWidth(), image.getHeight());
        bullets[1] = new Bullet(image, image.getWidth(), image.getHeight());
        bullets[2] = new Bullet(image, image.getWidth(), image.getHeight());
        for (i = 0; i < 3; i++)
        {
            bullets[i].setCanvasSize(CanvasWidth, CanvasHeight);
        }
        image = RaidenMIDlet.createImage("/e1.png");
        enemy1 = new Enemy1(image, image.getWidth(), image.getHeight());
        enemy1.setCanvasSize(CanvasWidth, CanvasHeight);
      //  enemy1.setAlive(true);
        image = RaidenMIDlet.createImage("/e2.png");
        enemy2 = new Enemy2(image, image.getWidth(), image.getHeight());
        enemy2.setCanvasSize(CanvasWidth, CanvasHeight);
     //   enemy2.setAlive(true);
        image = RaidenMIDlet.createImage("/e3.png");
        enemy3456[0] = new Enemy3456(image, image.getWidth(), image.getHeight())
            ;
        enemy3456[4] = new Enemy3456(image, image.getWidth(), image.getHeight())
            ;
        image = RaidenMIDlet.createImage("/e4.png");
        enemy3456[1] = new Enemy3456(image, image.getWidth(), image.getHeight())
            ;
        enemy3456[5] = new Enemy3456(image, image.getWidth(), image.getHeight())
            ;
        image = RaidenMIDlet.createImage("/e5.png");
        enemy3456[2] = new Enemy3456(image, image.getWidth(), image.getHeight())
            ;
        enemy3456[6] = new Enemy3456(image, image.getWidth(), image.getHeight())
            ;
        image = RaidenMIDlet.createImage("/e6.png");
        enemy3456[3] = new Enemy3456(image, image.getWidth(), image.getHeight())
            ;
        enemy3456[7] = new Enemy3456(image, image.getWidth(), image.getHeight())
            ;
        image = RaidenMIDlet.createImage("/bonus.png");
        bonus = new Bonus(image, image.getWidth(), image.getHeight() / 3);
        bonus.setCanvasSize(CanvasWidth, CanvasHeight);
        for (i = 0; i < 8; i++)
        {
            enemy3456[i].setCanvasSize(CanvasWidth, CanvasHeight);
        }
        imgState = RaidenMIDlet.createImage("/energy_bar.png");
        imgBack1 = RaidenMIDlet.createImage("/back_img1.png");
        imgBack2 = RaidenMIDlet.createImage("/back_img2.png");
        imgBack3 = RaidenMIDlet.createImage("/back_img3.png");

        imgExplored = RaidenMIDlet.createImage("/explored.png");
        imgLife = RaidenMIDlet.createImage("/Life.png");
        num = new Image[10];
        image = RaidenMIDlet.createImage("/num.png");
        for (i = 0; i <= 9; i++)
        {
                num[i] = Image.createImage(7, 11);
                Graphics g = num[i].getGraphics();
                g.drawImage(image, 0, -i* 11,  g.TOP|g.LEFT);
        }
        imgWin = RaidenMIDlet.createImage("/win.png");
        imgFail = RaidenMIDlet.createImage("/fail.png");
    }
    public void run()
    {
        Thread currentThread = Thread.currentThread();
        try
        {
            // This ends when animationThread is set to null, or when
            // it is subsequently set to a new thread; either way, the
            // current thread should terminate
            while (currentThread == animationThread)
            {
                long startTime = System.currentTimeMillis();
                // Don't advance game or draw if canvas is covered by
                // a system screen.
                if (!isPaused)
                {
                    input();
                    tick();                    
                    draw();

                }
                long timeTaken = System.currentTimeMillis() - startTime;
                if (timeTaken < MILLIS_PER_TICK)
                {
                    synchronized(this)
                    {
                        wait(MILLIS_PER_TICK - timeTaken);
                    }
                }
                else
                {
                    currentThread.yield();
                }
            }
        }
        catch (InterruptedException e)
        {
            // won't be thrown
        }
    }
    protected void keyPressed(int keyCode)
    {
    	
    	if(isWin||isFail)midlet.endGame(score);
    	//System.out.println(keyCode)
      if (getGameAction(keyCode) == FIRE) {

                for (i = 0; i < 3; i++)
                {
                    if (bullets[i].isAlive() == false)
                    {
                        bullets[i].setAlive(player.getRefPixelX() - 6,
                            player.getY());
                        break;
                    }
                }
       }else if(keyCode == -7){
         //暂停游戏
         isPaused = true;
         midlet.stopGame();
      }
    }
    public void resumeGame(){
      isPaused = false;
    }
    private void input()
    {
        // If player presses two or more direction buttons, we ignore them
        // all. But pressing fire is independent. The code below also ignores
        // direction buttons if GAME_A..GAME_D are pressed.
        int keyStates = getKeyStates();
        if (player.isAlive())
        {
            if ((keyStates & LEFT_PRESSED) != 0)
                player.move(LEFT);
            else if ((keyStates & RIGHT_PRESSED) != 0)
                player.move(RIGHT);
            else if ((keyStates & UP_PRESSED) != 0)
                player.move(UP);
            else if ((keyStates & DOWN_PRESSED) != 0)
                player.move(DOWN);

        }
    }
    // draw game
    private void draw()
    {
        if (score <= 4000){
            g.drawImage(imgBack1, 0, backY, 0);
        if(backY>0&&backY<CanvasHeight)
        	g.drawImage(imgBack1, 0, backY-imgBack2.getHeight(), 0);
        }
        

⌨️ 快捷键说明

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