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

📄 gunandaim.java

📁 用JavaME开发的手机版CS和射击飞机的游戏
💻 JAVA
字号:
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.game.GameCanvas;
import javax.microedition.lcdui.game.Sprite;
import java.util.Random;

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;
	int fire=0;
	int flag1=0;                                    //控制子弹1不偏转
	int flag2=0;									//控制子弹2不偏转
	int Ax=0;
	int Ay=0;
	int Bx1=0;
	int Bx2=0;
	private int m_nState = GA_NORMAL;
	public  Sprite m_AimSp;							//准心图像
	public  Sprite m_GunSp;						    //手枪图像
	private Sprite m_cloudSp[]=new Sprite[4];//白云彩
	public  Sprite m_playerSp[]=new Sprite[2];//飞机
	public  Sprite m_bulletSp[]=new Sprite[2];//子弹
	public  Sprite m_bombSp;					  //爆炸现象	
	private int m_nTime;							//开火后需要停顿的时间
//	private MainCanvas m_Canvas;
	public GunAndAim(int scrWidth, int scrHeight){
		try{
			//读取手枪图像
			Image img = Image.createImage("/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("/aim.png");
			m_AimSp = new Sprite(img, 11,11);
			m_AimSp.setPosition(x - 5, y - 40);
			img = Image.createImage("/cloud.png");
			for( int n = 0; n <m_cloudSp.length; n ++ )
			m_cloudSp[n] = new Sprite(img, 16, 16);
			m_cloudSp[0].setPosition(x - 100, y - 120);
			m_cloudSp[1].setPosition(x - 30, y - 70);
			m_cloudSp[2].setPosition(x + 30, y - 110);
			m_cloudSp[3].setPosition(x + 70, y - 80);
            img = Image.createImage("/player.png");
			for( int m = 0; m <m_playerSp.length;m++)
				m_playerSp[m]=new Sprite(img,30,30);
			m_playerSp[0].setTransform(Sprite.TRANS_ROT90);
			m_playerSp[0].setPosition(x - 100, y - 250);
			m_playerSp[1].setTransform(Sprite.TRANS_ROT270);
			m_playerSp[1].setPosition(x + 70, y -220);
			img = Image.createImage("/bullet.png");
			for(int m = 0; m <m_bulletSp.length;m++)
				m_bulletSp[m]=new Sprite(img,15,15);
			m_bulletSp[0].setPosition(x - 100, y - 250);
			m_bulletSp[1].setPosition(x + 70, y -220);
			img = Image.createImage("/bomb.png");
			m_bombSp=new Sprite(img,65,65);
			m_bombSp.setFrame(0);

		}
		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;
		}
	}
//	int Ax = m_AimSp.getX();
//	int Ay = m_AimSp.getY();
	//处理按键输入,参数keyStates为按键状态
	//scrWidth、scrHeight分别是屏幕的宽和高
	public void Input(int keyStates, int scrWidth, int scrHeight,int isCol){
	    int Cx1= m_cloudSp[0].getX();
		int Cx2= m_cloudSp[1].getX();
    	int Cx3= m_cloudSp[2].getX();
		int Cx4= m_cloudSp[3].getX();
		int Cy1= m_cloudSp[0].getY();
		int Cy2= m_cloudSp[1].getY();
		int Cy3= m_cloudSp[2].getY();
		int Cy4= m_cloudSp[3].getY();
		int Px1= m_playerSp[0].getX();
		int Px2= m_playerSp[1].getX();
		int Py1= m_playerSp[0].getY();
		int Py2= m_playerSp[1].getY();
		int Gx = m_GunSp.getX();
		int Gy = m_GunSp.getY(); 
		if(flag1==0)
			Bx1= Px1;
		else
			Bx1= m_bulletSp[0].getX();
		if(flag2==0)
			Bx2= Px2;
		else		
		    Bx2= m_bulletSp[1].getX();
		flag1=1;
		flag2=1;

		int By1= m_bulletSp[0].getY();
		
		int By2= m_bulletSp[1].getY();
		if(isCol==0)
		{
		 Ax = m_AimSp.getX();
	     Ay = m_AimSp.getY();
		}
		else
		{
		 
		 Ax=Gx;
		 Ay=Gy;
		}
		if(fire==0)
		{
		 Ax=Gx;
		 Ay=Gy;
		}
		Random rdm1=new Random();
		int speed1=(rdm1.nextInt()>>>1)%15;
		Random rdm2=new Random();
		int speed2=(rdm2.nextInt()>>>1)%15;
		if(speed1<6)
			speed1*=3;
		if(speed2<6)
			speed2*=3;
		if(Px1>=scrWidth)
			Px1=0;
		else
		Px1+=speed1;
		if(Px2<=0)
			Px2=scrWidth;
		else
		Px2-=speed2;
		if(Cy1==scrHeight)     //判断白云1是否到屏幕最下端,否则继续向下移动
			Cy1=0;
		else
		Cy1++;
		if(Cy2==scrHeight)     //判断白云2是否到屏幕最下端,否则继续向下移动
			Cy2=0;
		else
		Cy2++;
		if(Cy3==scrHeight)    //判断白云3是否到屏幕最下端,否则继续向下移动
			Cy3=0;
		else
		Cy3++;
		if(Cy4==scrHeight)   //判断白云4是否到屏幕最下端,否则继续向下移动
			Cy4=0;
		else
		Cy4++;
       if(By1>=scrHeight)
		{
		   By1=Py1;
		   flag1=0;
		}
	   else
		   By1+=5;
	   if(By2>=scrHeight)
		{
		   By2=Py2;
		   flag2=0;
		}
	   else
		   By2+=5;
		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;
			    Cy1-= nDis;
				Cy2-= nDis;
				Cy3-= nDis;
				Cy4-= nDis;
		}
		if( ( keyStates & GameCanvas.DOWN_PRESSED ) != 0 ){
			if( Ay < scrHeight )
				Ay += nDis;
			    Cy1+= nDis;
				Cy2+= nDis;
				Cy3+= nDis;
				Cy4+= nDis;
		}
		if((Ay>0)&&(fire==1))
			
		    Ay-=40;
    	    
		
		m_AimSp.setPosition(Ax, Ay);
		m_GunSp.setPosition(Gx, Gy);
		m_cloudSp[0].setPosition(Cx1,Cy1);
		m_cloudSp[1].setPosition(Cx2,Cy2);
		m_cloudSp[2].setPosition(Cx3,Cy3);
		m_cloudSp[3].setPosition(Cx4,Cy4);
        m_playerSp[0].setPosition(Px1,Py1);
		m_playerSp[1].setPosition(Px2,Py2);
		m_bulletSp[0].setPosition(Bx1,By1);
		m_bulletSp[1].setPosition(Bx2,By2);
		m_bombSp.setPosition(-300,-300);
		
		//开火
		if( ( keyStates & GameCanvas.FIRE_PRESSED ) != 0 )
		{//连续开火需要有一定的时间间隔

		   fire=1;
		   if((isCol==1)||(Ay<=0))
		   {
		    	   fire=0;
		    //	   Ax=Gx;
		    //	   Ay=Gy;
		   }
	 //     m_Canvas.Collision();
     //     for( int n = 0; n < m_aEnemy.length; n ++ )
	 //		if(m_AimSp.collidesWith( m_aEnemy[n], true ) )
     //      break; 
		  
			
			if( m_nTime <= 0 ){
				setState(GA_FIRE);
    			 SoundPlayer.getInstance().playFireSound();
			 
			}
		}
	}
	//逻辑
	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);
		for( int n = 0; n <m_playerSp.length;n++)
			m_playerSp[n].paint(g);
		for( int m = 0; m < m_bulletSp.length;  m ++ ){
				m_bulletSp[m].paint(g);
			}
		m_AimSp.paint(g);
		for( int m = 0; m < m_cloudSp.length;  m ++ ){
				m_cloudSp[m].paint(g);
			}
        m_bombSp.paint(g);
			
	}

	public void bomb(int height,int width){
		m_bombSp.setPosition(height,width);
		m_bombSp.nextFrame();
		
	}
	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -