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