📄 gunandaim.java
字号:
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.game.GameCanvas;
import javax.microedition.lcdui.game.Sprite;
public class GunAndAim {
public static final int GA_NORMAL = 0; //正常状态
public static final int GA_FIRE = 1; //开火
public static final int GA_STATE_NUM = 2;
private int m_nState = GA_NORMAL;
public Sprite m_AimSp; //准心图像
private Sprite m_GunSp; //手枪图像
private int m_nTime; //开火后需要停顿的时间
public GunAndAim(int scrWidth, int scrHeight){
try{
//读取手枪图像
Image img = Image.createImage("/demo/gun.png");
m_GunSp = new Sprite(img, 40, 32);
int x = scrWidth / 2;
int y = scrHeight - m_GunSp.getHeight();
m_GunSp.setPosition(x, y);
//读取准心图像
img = null;
img = Image.createImage("/demo/aim.png");
m_AimSp = new Sprite(img, 15, 15);
m_AimSp.setPosition(x - 5, y - 40);
}
catch(Exception exception){}
}
//获取当前状态
public int getState(){
return m_nState;
}
//设置当前状态
public void setState( int state){
if(state < 0 || state >= GA_STATE_NUM )
return;
m_nState = state;
switch( m_nState ){
case GA_NORMAL:
m_nTime = 5;
break;
}
}
//处理按键输入,参数keyStates为按键状态
//scrWidth、scrHeight分别是屏幕的宽和高
public void Input(int keyStates, int scrWidth, int scrHeight){
int Ax = m_AimSp.getX();
int Ay = m_AimSp.getY();
int Gx = m_GunSp.getX();
int Gy = m_GunSp.getY();
int nDis = 10;
//设置手枪及准心的位置
if( ( keyStates & GameCanvas.LEFT_PRESSED ) != 0 ){
if( Ax > 0 ){
Ax -= nDis;
Gx -= nDis;
}
}
if( ( keyStates & GameCanvas.RIGHT_PRESSED ) != 0 ){
if( Ax < scrWidth ){
Ax += nDis;
Gx += nDis;
}
}
if( ( keyStates & GameCanvas.UP_PRESSED ) != 0 ){
if( Ay > 0 )
Ay -= nDis;
}
if( ( keyStates & GameCanvas.DOWN_PRESSED ) != 0 ){
if( Ay < scrHeight )
Ay += nDis;
}
m_AimSp.setPosition(Ax, Ay);
m_GunSp.setPosition(Gx, Gy);
//开火
if( ( keyStates & GameCanvas.FIRE_PRESSED ) != 0 )
{//连续开火需要有一定的时间间隔
if( m_nTime <= 0 ){
setState(GA_FIRE);
}
}
}
//逻辑
public void Logic(){
switch( m_nState ){
case GA_NORMAL:
m_nTime --;
break;
case GA_FIRE:
setState(GA_NORMAL);
break;
}
}
//显示图像
public void Paint(Graphics g){
m_GunSp.paint(g);
m_AimSp.paint(g);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -