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

📄 sixthstage.java

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

/**
 *
 * @author liang
 */
public class SixthStage extends Stage{

    private AchieveCanvas canvas;
    private Sprite[] pipe;
    private int row;
    private int col;
    /** Creates a new instance of FirstStage */
    public SixthStage(AchieveCanvas canvas) {
        this.canvas = canvas;
        ScreenWid = canvas.getWidth();
        ScreenHigt = canvas.getHeight();
        pipe = new Sprite[2];
        pipe[0] = new Sprite(ImageTools.createImage("/pipe.png"));
        pipe[1] = new Sprite(ImageTools.createImage("/pipe.png"));
        box = new Sprite(ImageTools.createImage("/box.png"));
        exit = new Sprite(ImageTools.createImage("/exit.png"));
        backgroundLayer = new TiledLayer(12, 19, ImageTools.createImage("/brick.png"), 15, 15);
    }

    public void init() {
//          isPaused = false;
//        gameover = false;
      
                int[][] map = {
                                    { 0, 0, 0, 0, 0, 0, 5, 1, 1, 1, 1, 4 },
                                    { 0, 0, 0, 0, 0, 5, 1, 0, 0, 0, 1, 1 },
                                    { 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1 },
                                    { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1 },
                                    { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1 },
                                    { 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 6 },
                                    { 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0 },
                                    { 0, 0, 0, 0, 0, 7, 1, 0, 0, 0, 1, 0 },
                                    { 0, 0, 0, 0, 0, 0, 7, 1, 0, 0, 1, 0 },
                                    { 0, 0, 0, 0, 0, 0, 0, 7, 1, 1, 6, 0 },
                                    { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0 },
                                    { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1 },
                                    { 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1 },
                                    { 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 },
                                    { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
                                    { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
                                    { 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 },
                                    { 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1 },
                                    { 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1 }
                               };

              
                for(int i = 0; i < 19; i++){
                    for(int j = 0; j < 12; j++)
                      backgroundLayer.setCell(j, i, map[i][j]);
                }
                backgroundLayer.setPosition( (ScreenWid - backgroundLayer.getWidth() )/2, (ScreenHigt - backgroundLayer.getHeight())/2 );
                int initX = backgroundLayer.getX() + 105;
                int initY = backgroundLayer.getY() + 105;
                box.setPosition(initX, initY); 
                int exitX = backgroundLayer.getX() + 60;
                int exitY = backgroundLayer.getY() + 75;
                exit.setPosition(exitX, exitY);
                int pipeX1 = backgroundLayer.getX() + 120;
                int pipeY1 = backgroundLayer.getY() + 60;
                pipe[0].setPosition(pipeX1, pipeY1);
                int pipeX2 = backgroundLayer.getX() + 120;
                int pipeY2 = backgroundLayer.getY() + 225;
                pipe[1].setPosition(pipeX2, pipeY2);
            
    }

    public void checkCollision(int keypressed) {
         switch(keypressed){
            case UPMOVE:
                move(1);
                col = (box.getX() - backgroundLayer.getX())/15;
                row = (box.getY() - backgroundLayer.getY())/15;
                if(col >= 0 && row >= 0 && col < 12 && row < 19){
                    if(backgroundLayer.getCell(col, row) == 7){
                        move(3);
                        box.move(MOVE, 0);
                    } 
                    else if(backgroundLayer.getCell(col, row) == 6){
                        move(4);
                        box.move(-MOVE, 0);
                    }
                    else 
                         box.move(0, MOVE);
                }
              
                 break;
            case DOWNMOVE:
                move(2);
                col = (box.getX() - backgroundLayer.getX())/15;
                row = (box.getY() - backgroundLayer.getY())/15;
                if(col >= 0 && row >= 0 && col < 12 && row < 19){
                    if(backgroundLayer.getCell(col, row) == 4){
                        move(4);
                        box.move(-MOVE, 0);
                    } 
                    else if(backgroundLayer.getCell(col, row) == 5){
                        move(3);
                        box.move(MOVE, 0);
                    }
                    else 
                         box.move(0, -MOVE);
                }
                break;
            case LEFTMOVE:
                move(3);
                col = (box.getX() - backgroundLayer.getX())/15;
                row = (box.getY() - backgroundLayer.getY())/15;
                if(col >= 0 && row >= 0 && col < 12 && row < 19){
                    if(backgroundLayer.getCell(col, row) == 4){
                        move(1);
                        box.move(0, MOVE);
                    } 
                    else if(backgroundLayer.getCell(col, row) == 6){
                        move(2);
                        box.move(0, -MOVE);
                    }
                    else 
                         box.move( MOVE,0 );
                }
                 
                break;
            case RIGHTMOVE:
               move(4);
                col = (box.getX() - backgroundLayer.getX())/15;
                row = (box.getY() - backgroundLayer.getY())/15;
                if(col >= 0 && row >= 0 && col < 12 && row < 19){
                    if(backgroundLayer.getCell(col, row) == 5){
                        move(1);
                        box.move(0, MOVE);
                    } 
                    else if(backgroundLayer.getCell(col, row) == 7){
                        move(2);
                        box.move(0, -MOVE);
                    }
                    else 
                         box.move(-MOVE, 0);
                }
                 
                break;
           default:
               break;
        }
    }

    public int getNumOfBombs() {
        return 0;
    }

    public boolean getFlag(int n) {
        return false;
    }

    public int getTime(int n) {
        return 0;
    }

    public void setTime(int n) {
        
    }

    public int[] getCoordinate(int n) {
        return new int[2];
    }

    public void setFlag(int i, boolean b) {
    }

    public void setLeftOfBombs() {
    }

    public int getLeftOfBombs() {
        return -1;
    }
    
    private void move(int r){
        switch(r){
            case 1:
                do{  
                   if(box.collidesWith(exit, true)){
                         canvas.doStagepassing();
                         break;
                    }
                   int boxX,boxY;
                   for(int i = 0;i<2;i++){
                      if(box.collidesWith(pipe[i],true)){
                           boxX = pipe[1-i].getX();
                           boxY = pipe[1-i].getY();
                           box.setPosition(boxX, boxY);
                           break;
                     }
                   }
                   canvas.repaint();                        
                   canvas.threadSleep();
                    
                    box.move(0, -MOVE);
                } while(!box.collidesWith(backgroundLayer,true) && !canvas.CheckOutOfEdge()); 
                break;
            case 2:
                do{ 
                    if(box.collidesWith(exit, true)){
                         canvas.doStagepassing();
                         break;
                    } 
                    
                   int boxX,boxY;
                   for(int i = 0;i<2;i++){
                      if(box.collidesWith(pipe[i],true)){
                           boxX = pipe[1-i].getX();
                           boxY = pipe[1-i].getY();
                           box.setPosition(boxX, boxY);
                           break;
                     }
                   }
                    canvas.repaint();                        
                    canvas.threadSleep();
                    
                    box.move(0, MOVE);     
                }while(!box.collidesWith(backgroundLayer,true) && !canvas.CheckOutOfEdge());
                break;
            case 3:
                 do{
                    if(box.collidesWith(exit, true)){
                         canvas.doStagepassing();
                         break;
                    }
                    
                   int boxX,boxY;
                   for(int i = 0;i<2;i++){
                      if(box.collidesWith(pipe[i],true)){
                           boxX = pipe[1-i].getX();
                           boxY = pipe[1-i].getY();
                           box.setPosition(boxX, boxY);
                           break;
                     }
                   }
                    canvas.repaint();                        
                    canvas.threadSleep();
                     
                      box.move(-MOVE, 0);
                }while(!box.collidesWith(backgroundLayer,true) && !canvas.CheckOutOfEdge());
                 break;
            case 4:
                do{  
                   if(box.collidesWith(exit, true)){
                         canvas.doStagepassing();
                         break;
                    } 
                   
                   int boxX,boxY;
                   for(int i = 0;i<2;i++){
                      if(box.collidesWith(pipe[i],true)){
                           boxX = pipe[1-i].getX();
                           boxY = pipe[1-i].getY();
                           box.setPosition(boxX, boxY);
                           break;
                     }
                   }
                   canvas.repaint();                        
                    canvas.threadSleep();              
                      box.move(MOVE, 0);
                } while(!box.collidesWith(backgroundLayer,true) && !canvas.CheckOutOfEdge());
                break;
        
        }
    
    }

    public Sprite getPipe(int index) {
        return pipe[index];
    }
    
   

    
}

⌨️ 快捷键说明

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