📄 ufocanvas.java.bak
字号:
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;
import java.util.*;
import java.io.*;
public class UFOCanvas extends GameCanvas implements Runnable{
private Display display;
private boolean sleeping;
private long frameDelay;
private Random rand;
private Sprite ufoSprite;
private int ufoXSpeed,ufoYSpeed;
private Sprite[] myweixinSprite=new Sprite[3];
private Sprite[] roidSprite=new Sprite[3];
public UFOCanvas(Display d){
super(true);
display=d;
frameDelay=33;
}
public void start(){
display.setCurrent(this);
rand=new Random();
ufoXSpeed=ufoYSpeed=0;
try{
ufoSprite=new Sprite(Image.createImage("/Saucer.png"));
ufoSprite.setPosition(getWidth()-ufoSprite.getWidth()/2,(getHeight()-ufoSprite.getHeight())/2);
Image img=Image.createImage("/shi.png");
roidSprite[0]=new Sprite(img,42,35);
roidSprite[1]=new Sprite(img,42,35);
roidSprite[2]=new Sprite(img,42,35);
Image img2=Image.createImage("/2weixin.PNG");
myweixinSprite[0]=new Sprite(img2,42,35);
myweixinSprite[1]=new Sprite(img2,42,35);
myweixinSprite[2]=new Sprite(img2,42,35);
//myweixinSprite=new Sprite(Image.createImage("/2weixin.PNG"));
}catch(IOException e){
System.err.println("Failed loading image");
}
sleeping=false;
Thread t=new Thread(this);
t.start();
}
public void stop(){
sleeping=true;
}
public void run(){
Graphics g=getGraphics();
while(!sleeping){
update();
draw(g);
try{
Thread.sleep(frameDelay);
}catch(InterruptedException ie){}
}
}
private void update(){
int keyState=getKeyStates();
if((keyState & LEFT_PRESSED)!=0)
ufoXSpeed--;
if((keyState & RIGHT_PRESSED)!=0)
ufoXSpeed++;
if((keyState & UP_PRESSED)!=0)
ufoYSpeed--;
else if((keyState & DOWN_PRESSED)!=0)
ufoYSpeed++;
ufoXSpeed=Math.min(Math.max(ufoXSpeed,-8),8);
ufoYSpeed=Math.min(Math.max(ufoYSpeed,-8),8);
ufoSprite.move(ufoXSpeed,ufoYSpeed);
checkBounds(ufoSprite);
for(int i=0;i<3;i++){
roidSprite[i].move(i+0,getHeight()/2);
checkBounds(roidSprite[i]);
if(i==1)
roidSprite[i].prevFrame();
else
roidSprite[i].nextFrame();
if(ufoSprite.collidesWith(roidSprite[i],true)){
AlertType.ERROR.playSound(display);
ufoSprite.setPosition((getWidth()-ufoSprite.getWidth())/2,(getHeight()-ufoSprite.getHeight())/2);
ufoXSpeed=ufoYSpeed=0;
for(int j=0;j<3;j++)
roidSprite[j].setPosition(0,0);
break;
}
}
for(int i=0;i<3;i++){
myweixinSprite[i].move(getWidth()/2,0+i);
fengtang(roidSprite[i]);
if(i==i)
myweixinSprite[i].prevFrame();
else
myweixinSprite[i].nextFrame();
if(ufoSprite.collidesWith(myweixinSprite[i],true)){
AlertType.ERROR.playSound(display);
ufoSprite.setPosition((getWidth()-ufoSprite.getWidth())/2,(getHeight()-ufoSprite.getHeight())/2);
ufoXSpeed=ufoYSpeed=0;
for(int j=0;j<3;j++)
myweixinSprite[j].setPosition(230,0);
break;
}
}
}
private void draw(Graphics g){
g.setColor(0x0000000);
g.fillRect(0,0,getWidth(),getHeight());
ufoSprite.paint(g);
for(int i=0;i<3;i++)
myweixinSprite[i].paint(g);
flushGraphics();
for(int i=0;i<3;i++)
roidSprite[i].paint(g);
flushGraphics();
}
private void checkBounds(Sprite sprite){
if(sprite.getX()<-sprite.getWidth())
sprite.setPosition(getWidth(),sprite.getY());
else if(sprite.getX()>getWidth())
sprite.setPosition(getWidth(),sprite.getY());
if(sprite.getY()<-sprite.getHeight())
sprite.setPosition(sprite.getX(),getHeight());
else if(sprite.getY()>getHeight())
sprite.setPosition(sprite.getX(),-sprite.getHeight());
}
private void fengtang(Sprite myweixinSprite){
if(myweixinSprite.getX()<0)
myweixinSprite.setPosition(-myweixinSprite.getX(),getHeight());
else if(myweixinSprite.getX()>getWidth())
myweixinSprite.setPosition(getWidth()-myweixinSprite.getX(),getHeight());
if(myweixinSprite.getY()<0)
myweixinSprite.setPosition(getWidth(),-myweixinSprite.getY());
else if(myweixinSprite.getY()>getHeight())
myweixinSprite.setPosition(getWidth(),getHeight()-myweixinSprite.getY());
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -