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

📄 fifthstage.java

📁 类似于推箱子的手机游戏源码
💻 JAVA
字号:
import javax.microedition.lcdui.game.Sprite;
import javax.microedition.lcdui.game.TiledLayer;
/*
 * ThirdStage.java
 *
 * Created on 2007年12月2日, 下午4:02
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

/**
 *
 * @author liang
 */
public class FifthStage extends Stage{
    private AchieveCanvas canvas;
    private boolean[] flag;
    private int numOfBombs;
    private int[] time;
    private int[][] coordinate;
    private int[][] translation;
    
    /** Creates a new instance of ThirdStage */
    public FifthStage(AchieveCanvas canvas) {
        numOfBombs = 8;
        flag = new boolean[numOfBombs];
        time = new int[numOfBombs];
        this.canvas = canvas;
        this.ScreenHigt = canvas.getHeight();
        this.ScreenWid = canvas.getWidth();
        box = new Sprite(ImageTools.createImage("/box.png"));
        exit = new Sprite(ImageTools.createImage("/exit.png"));
        backgroundLayer = new TiledLayer(10, 10, ImageTools.createImage("/brick.png"), 15, 15);
        for(int i=0; i<numOfBombs;i++){
            flag[i] = false;
            time[i] = 9;
        }
        coordinate = new int[8][2];
        
    }

    public void init() {
        int[][] map = {
                        { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0 },
                        { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 },
                        { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 },
                        { 0, 0, 0, 2, 2, 2, 0, 1, 0, 0 },
                        { 0, 0, 0, 2, 0, 2, 0, 1, 0, 0 },
                        { 0, 0, 0, 2, 2, 2, 0, 0, 0, 1 },
                        { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
                        { 0, 0, 0, 0, 1, 0, 1, 0, 0, 0 },
                        { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0 },
                        { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 }
                      };
        for(int i = 0; i < 10; i++){
            for(int j=0;j<10;j++)
              backgroundLayer.setCell(j, i, map[i][j]);
        }
        
        backgroundLayer.setPosition( (ScreenWid - backgroundLayer.getWidth() )/2, (ScreenHigt - backgroundLayer.getHeight())/2 );
        int groundX = backgroundLayer.getX();
        int groundY = backgroundLayer.getY();
        
        int initX = groundX + 60;
        int initY = groundY + 60;
        box.setPosition(initX, initY); 
        int exitX = groundX + 120;
        int exitY = groundY + 45;
        exit.setPosition(exitX, exitY);
        int[][] co = {
            {groundX + 45, groundY + 45},
            {groundX + 60, groundY + 45},
            {groundX + 75, groundY + 45},
            {groundX + 45, groundY + 60},
            {groundX + 75, groundY + 60},
            {groundX + 45, groundY + 75},
            {groundX + 60, groundY + 75},
            {groundX + 75, groundY + 75}
        };
        coordinate = co;
        translation = new int[10][10];
        translation[3][3] = 0;
        translation[3][4] = 1;
        translation[3][5] = 2;
        translation[4][3] = 3;
        translation[4][5] = 4;
        translation[5][3] = 5;
        translation[5][4] = 6;
        translation[5][5] = 7;
        
    }

    public void checkCollision(int keypressed) {
        int col,row;
        switch(keypressed){
            case UPMOVE:
               do{  
                   if(box.collidesWith(exit, true)){
                         canvas.doStagepassing();
                         break;
                    }                 
                    canvas.repaint();                        
                    canvas.threadSleep();
                    
                    box.move(0, -MOVE);
                } while(!box.collidesWith(backgroundLayer,true) && !canvas.CheckOutOfEdge());
                box.move(0, MOVE);
                col = (box.getX() - backgroundLayer.getX())/15;
                row = (box.getY() - backgroundLayer.getY() - 15)/15;
                if(col >= 0 && row >= 0 && col < 10 && row < 10){
                    if(backgroundLayer.getCell(col, row) == 2){
                        flag[translation[row][col]] = true;
                        backgroundLayer.setCell(col,row,3);
                    }
                    else if(backgroundLayer.getCell(col, row) == 3){
                        canvas.player(canvas.getexplosionPlayer());
                        backgroundLayer.setCell(col,row,0);
                        flag[translation[row][col]] = false;
                    }
                }
                break;
            case DOWNMOVE:
                do{ 
                    if(box.collidesWith(exit, true)){
                         canvas.doStagepassing();
                         break;
                    }                 
                    canvas.repaint();                        
                    canvas.threadSleep();
                    
                    box.move(0, MOVE);     
                }while(!box.collidesWith(backgroundLayer,true) && !canvas.CheckOutOfEdge());
                box.move(0, -MOVE);
                col = (box.getX() - backgroundLayer.getX())/15;
                row = (box.getY() - backgroundLayer.getY() + 15)/15;
                if(col >= 0 && row >= 0 && col < 10 && row < 10){
                    if(backgroundLayer.getCell(col, row) == 2){
                        flag[translation[row][col]] = true;
                        backgroundLayer.setCell(col,row,3);
                    }
                    else if(backgroundLayer.getCell(col, row) == 3){
                        canvas.player(canvas.getexplosionPlayer());
                        backgroundLayer.setCell(col,row,0);
                        flag[translation[row][col]] = false;
                    }
                }
                break;
            case LEFTMOVE:
                do{
                    if(box.collidesWith(exit, true)){
                         canvas.doStagepassing();
                         break;
                    }
                    canvas.repaint();                        
                    canvas.threadSleep();
                     
                      box.move(-MOVE, 0);
                }while(!box.collidesWith(backgroundLayer,true) && !canvas.CheckOutOfEdge());
                 box.move( MOVE,0 );
                 col = (box.getX() - backgroundLayer.getX() - 15)/15;
                 row = (box.getY() - backgroundLayer.getY())/15;
                 if(col >= 0 && row >= 0 && col < 10 && row < 10){
                    if(backgroundLayer.getCell(col, row) == 2){
                        flag[translation[row][col]] = true;
                        backgroundLayer.setCell(col,row,3);
                    }
                     else if(backgroundLayer.getCell(col, row) == 3){
                        canvas.player(canvas.getexplosionPlayer());
                        backgroundLayer.setCell(col,row,0);
                        flag[translation[row][col]] = false;
                    }
                 }
                break;
            case RIGHTMOVE:
               do{  
                   if(box.collidesWith(exit, true)){
                         canvas.doStagepassing();
                         break;
                    }               
                   canvas.repaint();                        
                    canvas.threadSleep();              
                      box.move(MOVE, 0);
                } while(!box.collidesWith(backgroundLayer,true) && !canvas.CheckOutOfEdge());
                 box.move(-MOVE, 0);
                col = (box.getX() - backgroundLayer.getX() + 15)/15;
                row = (box.getY() - backgroundLayer.getY())/15;
                if(col >= 0 && row >= 0 && col < 10 && row < 10){
                    if(backgroundLayer.getCell(col, row) == 2){
                        flag[translation[row][col]] = true;
                        backgroundLayer.setCell(col,row,3);
                    }
                    else if(backgroundLayer.getCell(col, row) == 3){
                        canvas.player(canvas.getexplosionPlayer());
                        backgroundLayer.setCell(col,row,0);
                        flag[translation[row][col]] = false;
                    }
                }
                break;
           default:
               break;
    }
        
        
  }
    
    public int getNumOfBombs(){
        return numOfBombs;
    }
    public boolean getFlag(int n){
        return flag[n];
    }
    public int getTime(int n){
        return time[n];
    }
    
    public void setTime(int n){
        time[n]--;
    }
    
    public int[] getCoordinate(int n){
         return coordinate[n];
    }

    public void setFlag(int i, boolean b) {
        flag[i] = b;
    }

    public void setLeftOfBombs() {
    }

    public int getLeftOfBombs() {
        return -1;
    }

    public Sprite getPipe(int index) {
        return null;
    }
}

⌨️ 快捷键说明

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