📄 bird.java
字号:
import javax.microedition.lcdui.game.*;
import javax.microedition.lcdui.*;
import java.util.Random;
/**
*
* @author TOM
*/
public class Bird {
private Hunt_Canvas manCanvas; //游戏画面
private int[] Locus; //存储鸟数组
private Sprite bird; // 鸟图象
private Random rnd; // 随机种子
private int SWidth, SHeight; // 设备屏幕的宽度与高度
private boolean isFly;
static int t=0;
private int k;
private boolean isBird;
public Bird(Hunt_Canvas manCanvas, Image img, int SWidth, int SHeight,int k) {
this.manCanvas = manCanvas;
if(k==2)
bird = new Sprite(img, img.getWidth()/3, img.getHeight());
if(k==3)
bird = new Sprite(img, img.getWidth()/6, img.getHeight());
this.k = k;
bird.setFrame(0);
Locus = new int[5];
rnd = new Random();
this.SWidth = SWidth;
this.SHeight = SHeight;
isFly=false;
isBird = true;
}
// 初始化运行轨迹随机数组
public void InitBirdLocus() {
Locus[0] = (rnd.nextInt() & 0x7fffffff) % 4; //鸟类型
switch (Locus[0]) {
case 0:
Locus[1] = -50; //初始X坐标值
Locus[2] = (rnd.nextInt() & 0x7fffffff) % (SHeight-200); //初始的Y坐标值
Locus[3] = (rnd.nextInt() & 0x7fffffff) % 5 + 6; //X坐标增量
Locus[4] = 0; //Y坐标增量
bird.setTransform(Sprite.TRANS_MIRROR);
isFly=false;
break;
case 1:
Locus[1] = SWidth + 50;
Locus[2] = (rnd.nextInt() & 0x7fffffff) % (SHeight-200);
Locus[3] = ( (rnd.nextInt() & 0x7fffffff) % 5 + 6) * -1;
Locus[4] = 0;
bird.setTransform(Sprite.TRANS_NONE);
isFly=false;
break;
case 2:
Locus[1] = -50;
Locus[2] = (rnd.nextInt() & 0x7fffffff) % (SHeight-200);
Locus[3] = (rnd.nextInt() & 0x7fffffff) % 5 + 6;
Locus[4] = (rnd.nextInt()) % 7;
bird.setTransform(Sprite.TRANS_MIRROR);
isFly=true;
break;
case 3:
Locus[1] = SWidth + 50;
Locus[2] = (rnd.nextInt() & 0x7fffffff) % (SHeight-200);
Locus[3] = (rnd.nextInt() & 0x7fffffff) % 5 + 6;
Locus[4] = (rnd.nextInt()) % 7;
bird.setTransform(Sprite.TRANS_NONE);
isFly=true;
break;
}
}
// 显示
public void paint(Graphics g) {
bird.setPosition(Locus[1], Locus[2]);
bird.paint(g);
if(isBird && bird.getFrame()<=1)
bird.nextFrame();
else if(isBird && bird.getFrame()==2)
bird.setFrame(0);
else if(!isBird && bird.getFrame()<=4)
bird.nextFrame();
else{
bird.setFrame(0);
manCanvas.setFlag(k,false);
InitBirdLocus();
isBird = true;
}
UpdataBirdLocus(); // 更新运行轨迹数组
}
// 更新运行轨迹数组
private void UpdataBirdLocus() {
if(isBird)
Locus[1] += Locus[3];
else{
Locus[2] += 10;
if(isFly){
t++;
if(t<10){
Locus[2] += Locus[4];
}
else{
Locus[4]*=-1;
t=0;
}
}
else
Locus[2] += Locus[4];
}
//超出边界的处理
if (Locus[1] < -50 || Locus[1] > SWidth + 50 || Locus[2]>SHeight) {
InitBirdLocus();
manCanvas.setFlag(k,false);
isBird = true;
}
if (Locus[2] < 0 || Locus[2] > SHeight -200) {
Locus[4] *= -1;
}
}
public Sprite getBird(){
return bird;
}
public boolean getIsBird(){
return isBird;
}
public void setIsBird(boolean f){
isBird = f;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -