⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gunandaim.java

📁 j2me平台上的一个手机小游戏 2d版的cs 可以用来熟悉一下j2me环境
💻 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 + -