13,097
社区成员




//碰撞检测
public void isCrash(){
if(MaLi.collidesWith(layer1, false)){
flag=false;
}
else if(MaLi.collidesWith(layer4, false)){
score=score+10;
flag=false;
}
else if(MaLi.collidesWith(emy1,false)){
score=score+10;
manager.remove(emy1);
eat=true;
}
else
flag=true;
}
//run方法
public void run() {
while(RUN){
gra.setColor(230, 230,255);
gra.fillRect(0, 0, this.getWidth(), this.getHeight());
if(eat){
manager.append(emy1);
emy1.setPosition(new Random().nextInt(this.getWidth()), 180);
eat=false;
}
if(MaLi.getY()>this.getHeight()-MaLi.getHeight())
MaLi.setPosition(MaLi.getX(),this.getHeight()-MaLi.getHeight() );
int state=this.getKeyStates();
switch(state){
case GameCanvas.LEFT_PRESSED:
if(MaLi.getX()>0){
MaLi.move(-10, 0);
}
else{
MaLi.move(40, 0);
emy1.move(50, 30);
layer1.move(50, 0);
layer2.move(50, 0);
layer3.move(50, 0);
layer4.move(50, 0);
}
isCrash();
if(!flag)
MaLi.move(10, 0);
break;
case GameCanvas.RIGHT_PRESSED:
MaLi.nextFrame();
if(MaLi.getX()<this.getWidth()-MaLi.getWidth()){
MaLi.move(10, 0);
}
else{
MaLi.move(-40, 0);
emy1.move(-50, 0);
layer1.move(-50, 0);
layer2.move(-50, 0);
layer3.move(-50, 0);
layer4.move(-50, 0);
}
isCrash();
if(!flag)
MaLi.move(-10, 0);
break;
case GameCanvas.UP_PRESSED:
if(MaLi.getY()>0){
//MaLi.move(0, -15);
new GameUP(this,MaLi);
}
isCrash();
if(!flag){
MaLi.move(0, 15);
}
break;
case GameCanvas.DOWN_PRESSED:
if(MaLi.getY()<this.getHeight()-MaLi.getHeight()){
MaLi.move(0, 15);
}
isCrash();
if(!flag){
MaLi.move(0,-15);
}
break;
default:
break;
}
gra.setColor(0, 0, 0);
gra.setFont(Font.getFont(Font.FACE_MONOSPACE,Font.STYLE_ITALIC,Font.SIZE_MEDIUM));
gra.drawString("Score:"+String.valueOf(score), 0, 0, Graphics.LEFT|Graphics.TOP);
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
manager.paint(gra,0,0);
if(MaLi.getX()>layer1.getWidth()-50){
gra.setColor(255, 0, 0);
gra.setFont(Font.getFont(Font.FONT_STATIC_TEXT,Font.STYLE_BOLD,Font.SIZE_LARGE));
gra.drawString("闯关成功!", this.getWidth()/2, this.getHeight()/2, Graphics.HCENTER|Graphics.VCENTER);
RUN=false;
}
this.flushGraphics();
}
}
public class GameUP extends GameCanvas implements Runnable {
private Sprite sprite;
GameBack gb = new GameBack();
boolean flag = gb.flag;
public GameUP(GameBack gb, Sprite s) {
super(true);
this.sprite = s;
this.gb = gb;
new Thread(this).start();
}
public void run() {
int move_Y[] = { -20, -18, -13, -9, -3, -1, 1, 3, 9, 13, 18, 20 };
int y = move_Y.length;
while (y > 0) {
for (int i = 0; i < move_Y.length; i++) {
if (flag) {
if (sprite.collidesWith(gb.layer1, false)) {
flag = false;
}
sprite.move(0, move_Y[i]);
} else
y = -1;
y--;
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}