📄 fifthstage.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 + -