📄 rectanglelayer.java
字号:
package src;
import java.io.IOException;
import java.util.Random;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.game.LayerManager;
import javax.microedition.lcdui.game.Sprite;
public class RectangleLayer {
public int[] recTypeRecoder = {0,0,0,0,0,0,0};
private Sprite[] Rectangle = new Sprite[7];
private final int RECTANGLE_WIDTH = 60;
private final int RECTANGLE_HEIGHT = 10;
private final int RECTANGLE_TYPE1 = 1;
private final int RECTANGLE_TYPE2 = 2;
private final int RECTANGLE_TYPE3 = 3;
private final int RECTANGLE_TYPE4 = 4;
private final int RECTANGLE_TYPE5 = 5;
private final int RECTANGLE_TYPE6 = 6;
public static boolean hasSounded = false;
private Image image = null;
private Random rnd = new Random();
public RectangleLayer(LayerManager layerManager)
{
try {
image = Image.createImage("/res/rectangle.png");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
for(int i = 0;i < Rectangle.length;i++)
{
Rectangle[i]= new Sprite(image,RECTANGLE_WIDTH,RECTANGLE_HEIGHT);
//Rectangle[i].defineCollisionRectangle(-5,-5, 70, 30);
layerManager.append(Rectangle[i]);
}
initLocation();
}
public void initLocation()
{
for(int i = 0;i < Rectangle.length;i++)
{
int type = rnd.nextInt(8)+1;
setRandomSprite(Rectangle[i],type);
recTypeRecoder[i] = type; //记录类型
int x = 10+i*rnd.nextInt(20); //初始化位置
int y = 100+i*40;
Rectangle[i].setPosition(x, y);
//System.out.println(type+"\n");
}
}
public void update()
{
for(int i = 0;i < Rectangle.length;i++)
{
Rectangle[i].move(0,-GameMIDlet.MOVE_UP_SPEED);
Rectangle[i].nextFrame();
if(Rectangle[i].getY() < 40)
{
int type = rnd.nextInt(8)+1;
this.setRandomSprite(Rectangle[i], type);
recTypeRecoder[i] = type; //记录类型
//System.out.println(type+"\n");
}
}
}
public void setRandomSprite(Sprite sprite,int type) //随机确定楼梯样式
{
int x = 10+rnd.nextInt(160);
int y = GameMIDlet.CANVAS_HEIGHT+30;
switch(type)
{
case RECTANGLE_TYPE1: //30%几率显示图形1
case 7:
case 8:
{
sprite.setFrameSequence(new int[]{0});
sprite.setPosition(x, y);
break;
}
case RECTANGLE_TYPE2:
{
sprite.setFrameSequence(new int[]{1,2,3,4});
sprite.setPosition(x, y);
break;
}
case RECTANGLE_TYPE3:
{
sprite.setFrameSequence(new int[]{5,6,7,8});
sprite.setPosition(x, y);
break;
}
case RECTANGLE_TYPE4:
{
sprite.setFrameSequence(new int[]{12});
sprite.setPosition(x, y);
break;
}
case RECTANGLE_TYPE5:
{
sprite.setFrameSequence(new int[]{15});
sprite.setPosition(x, y);
break;
}
case RECTANGLE_TYPE6:
{
sprite.setFrameSequence(new int[]{19});
sprite.setPosition(x, y);
break;
}
default :
break;
}
}
public void collidesAction(int type,Sprite player,Sprite rectangle)
{
switch(type)
{
case RECTANGLE_TYPE1:
case 7:
case 8:
{
if(!hasSounded)
GameMIDlet.soundControl.typeSound1();
hasSounded = true;
break;
}
case RECTANGLE_TYPE2:
{
if(!hasSounded)
GameMIDlet.soundControl.typeSound2();
hasSounded = true;
player.move(-2, 0);
break;
}
case RECTANGLE_TYPE3:
{
if(!hasSounded)
GameMIDlet.soundControl.typeSound2();
hasSounded = true;
player.move(2, 0);
break;
}
case RECTANGLE_TYPE4:
{
if(!hasSounded)
GameMIDlet.soundControl.typeSound5();
hasSounded = true;
rectangle.setFrameSequence(new int[]{12,13,14});
player.move(0, 2);
break;
}
case RECTANGLE_TYPE5:
{
if(!hasSounded)
GameMIDlet.soundControl.typeSound3();
hasSounded = true;
rectangle.setFrameSequence(new int[]{15,16,17,18});
player.move(0, -25);
break;
}
case RECTANGLE_TYPE6:
{
if(!hasSounded)
GameMIDlet.soundControl.typeSound4();
hasSounded = true;
player.setFrameSequence(new int[]{17});
GameMIDlet.PLAYER_LIFE -= 3;
break;
}
default :
}
}
public Sprite[] getSprites()
{
return Rectangle;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -