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

📄 gamescreen.java

📁 一个JAVA程序,可以直接运行,也可以进行调试.
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
	         //开火
	         //向右
	         if(((sboss.getX()+40)<c1.getX())&&(sboss.getY()<c1.getY())&&((sboss.getY()+65)>c1.getY())&&(sbsz0==0))
	         {bossbullet0.setVisible(true);
	         	bossbullet0.setPosition(sboss.getX()+45,sboss.getY()+35);
	         	sbsz0=1;
	         }
	         if(sbsz0==1)
	         {
	         	bossbullet0.move(3,0);
	         	if(bossbullet0.getX()>getWidth())
	         	{
	         		sbsz0=0;
	         	}
	         }
	         //向左
	        if((sboss.getX()>c1.getX())&&((sboss.getY()+65)>c1.getY())&&(sbsz1==0))
	        {
	        	bossbullet1.setPosition(sboss.getX()+10,sboss.getY()+35);
	         	sbsz1=1;
	        }
	        if(sbsz1==1)
	         {
	         	bossbullet1.move(-3,0);
	         	if(bossbullet1.getX()<0)
	         	{
	         		bossbullet1.setVisible(false);
	         		sbsz1=0;
	         	}
	         }	        
	        //向上
	        if((sboss.getX()<c1.getX())&&((sboss.getX()+50)>(c1.getX()))&&(sboss.getY()>c1.getY())&&(sbsz2==0))
	        		{
	        	bossbullet2.setVisible(true);//之所以只有2SET,是因为屏幕向上东,如果不SET,屏幕早晚会看到静止的子弹
	        	bossbullet2.setPosition(sboss.getX()+25,sboss.getY());
	         	sbsz2=1;
	        		}
	        if(sbsz2==1)
	        {
	        	bossbullet2.move(0,-4);
	         	if(bossbullet2.getY()<planepoup)
	         	{bossbullet2.setVisible(false);	
	         		sbsz2=0;
	         	}
	        }
	        
	       //向下
	        if((sboss.getX()<c1.getX())&&((sboss.getX()+50)>(c1.getX()))&&(sboss.getY()<c1.getY())&&(sbsz3==0))
	        {bossbullet0.setVisible(true);
	        bossbullet1.setVisible(true);
	        bossbullet2.setVisible(true);
	        		bossbullet2.setPosition(sboss.getX()+10,sboss.getY()+25);
	        		bossbullet1.setPosition(sboss.getX()+30,sboss.getY()+50);
	        		bossbullet0.setPosition(sboss.getX()+55,sboss.getY()+25);
	        		sbsz3=1;
	        }
	        	if(sbsz3==1)
	        	{
	        		bossbullet0.move(0,4);
	        		bossbullet1.move(0,4);
	        		bossbullet2.move(0,4);
	        		if(bossbullet0.getY()>planepo)
	        		{
	        			bossbullet0.setVisible(false);
	        			bossbullet1.setVisible(false);
	        			bossbullet2.setVisible(false);
	        			sbsz3=0;
	        		}
	        	}
	   }//sboss end
	         if((slife==80))
	         	{ 
	         	sboss.setImage(img("/pic/explosion.png"),32,32);
	         	 sboss.setFrame(3);
	         	bossbullet0.setVisible(false);
	         	bossbullet1.setVisible(false);
	         	bossbullet2.setVisible(false);
	         jiangli=11;
	         slife=85;
	         	drawslife=0;
	         	playerno=playerno+1;
	         	sbz=-1;//sboss发射子弹那段不执行
	         	sbpzbz=1;//玩家子弹与小BOSS不发生碰撞检测
	         }
	         //如果玩家挂了,背景的地图自动走,到BOSS出来得时候,SBOSS快速飞出屏幕上界
	         if((sboss.getY()==getHeight()))
	         {
	         	sbz=-1;
	         	sbpzbz=1;
	         	drawadd=21;
	         }
	         if(drawadd==21)
	         {
	         	sboss.move(0,-3);
	         	if(sboss.getY()<-65)
	         	{
	         		sboss.setVisible(false);
	         		drawadd=31;
	         	}
	         }
	         if(planert==1)
	         {inputno=1;
	         pzbz=1;
	        s2=65;
	         	c1.setImage(img("/pic/MyPlaneFrames.png"),24,24);
	         	c1.setFrame(0);
	         c1.setVisible(true);	
	         	c1.setPosition(getWidth()/2,planepo+48);
	         	//pzbz=0;
	         	//飞机从屏幕外飞回来,此过程键盘不好用
	         	//此时碰撞不好用,即无敌状态 
	         	planert=2;
	         }//玩家飞机小挂后初始位置
	         if(planert==2)
	         {
	         	  c1.move(0,-2);
	         	
	         	if(c1.getY()<(planepo-24))
	         	{//System.out.println(c1.getY());
	         	//System.out.println(planepo-24);
	         		inputno=0;
	         		s1=1;
		         		planert=3;
	         	}
	         	if(c1.getY()>(planepo+24))
	         	{  
	         		c1.move(0,-2);
	         	}
	         }
			et=System.currentTimeMillis();
			if((et-st)<rate)
			{
				try
				{
					Thread.sleep(rate-(et-st));
				
				}catch(Exception exp){}
			}
	
	  }
   
		
	}
	public void render(Graphics g)
	{ 	System.gc();
		g.setColor(255,255,255);
	  g.fillRect(0,0,getWidth(),getHeight());
		lm.setViewWindow(0,0,getWidth(),getHeight()+10000);//0,0,开始位置,宽,高,既是 可视面积
		lm.paint(g,0,y1);//在哪里画是地图,不是精灵//参考《王》P376,所有的点都是左上的点,所以PAINT要设置负数//即开始=-1400,一个线程+1,即-1399,-1398,
		// huokebullet.paint(g);
		//c1.setPosition(50,50);//有此行的话,瞄准精灵不懂,就固定在(50,50)了,
		//因为线成的关系,所以此行改在了构造函数里
		if(over==1)//c1.getheight=32,因为飞机被击中后变成了爆炸图片
		{
		    g.drawString("寒在杭州览桥上空因座机被击中,壮烈殉国,时",c1.getWidth()-24,60,0);//c1.getHeight(),0);
		    g.drawString("1937年 8月14日,空军第4大队少尉飞行员刘思",c1.getWidth()-24,40,0);//c1.getHeight()-20,0);
		    g.drawString("年21岁",c1.getWidth()-24,80,0);//c1.getHeight()+20,0);
		
		  inputno=1; //键盘输入标志位,GAMEOVER后,就不能读取键盘数据了
		}
		g.drawString("37年8月14日 杭州览桥 战果:"+String.valueOf(huokebullet[0].rscore()+huokebullet[3].rscore()+huokebullet[6].rscore()),c1.getWidth()-24,c1.getHeight()-20,0);//
        if(drawslife==1)//sboss生命条
        {
        	g.setColor(255,0,0);
		g.fillRect(2,22,80,5);//sboss进度条背景,白
        	g.setColor(255,255,255);
    		g.fillRect(2,22,slife,5);//sboss生命进度条前景,红
        }
		if(playerno==3)
        {
		g.drawImage(img("/pic/playerbiaozhi.png"),170,4,0);
        g.drawImage(img("/pic/playerbiaozhi.png"),195,4,0);
        g.drawImage(img("/pic/playerbiaozhi.png"),220,4,0);
        
		}
        if(playerno==2)
        {
        g.drawImage(img("/pic/playerbiaozhi.png"),195,4,0);
        g.drawImage(img("/pic/playerbiaozhi.png"),220,4,0); 
		}
        if(playerno==1)
        {
        g.drawImage(img("/pic/playerbiaozhi.png"),220,4,0);
		}       
        if(playerno==4)
        {
			g.drawImage(img("/pic/playerbiaozhi.png"),145,4,0);
		g.drawImage(img("/pic/playerbiaozhi.png"),170,4,0);
        g.drawImage(img("/pic/playerbiaozhi.png"),195,4,0);
        g.drawImage(img("/pic/playerbiaozhi.png"),220,4,0);
        g.setColor(255,0,0); 
		}
		if(jiangli==11)
		{
			g.setColor(255,0,0);
			g.drawString("援军到达",100,150,0);
			if(sboss.getY()>planepo)
			{
				jiangli=20;
			}
		}
        if(s1==1)
        {	
        	g.setColor(255,255,255);
		g.fillRect(170,22,65,5);//无敌生命进度条前景,白
        	g.setColor(255,0,0);
			g.fillRect(170,22,s2,5);//无敌进度条背景,红
			g.drawString("无敌时间",124,18,0);
		drawadd=1;
			s2=s2-1;	
			if(s2==0)
			{pzbz=0;
				s1=2;
			}
        }
		 flushGraphics();
	}	
	public void renderboss(Graphics g)
	{System.gc();
			lm.setViewWindow(0,0,getWidth(),getHeight());//0,0,开始位置,宽,高,既是 可视面积		
			lm.paint(g,0,0);
			if(over==1)//c1.getheight=32,因为飞机被击中后变成了爆炸图片
			{
			    g.drawString("寒在杭州览桥上空因座机被击中,壮烈殉国,年",c1.getWidth()-24,60,0);//c1.getHeight(),0);
			    g.drawString("1937年 8月14日,空军第4大队少尉飞行员刘思",c1.getWidth()-24,40,0);//c1.getHeight()-20,0);
			    g.drawString("仅21岁",c1.getWidth()-24,80,0);//c1.getHeight()+20,0);
			  inputno=1; //键盘输入标志位,GAMEOVER后,就不能读取键盘数据了
			} 
			g.setColor(255,0,0);
			g.fillRect(2,2,60,5);//生命进度条背景,红
			g.setColor(255,255,255);
			g.fillRect(2,2,bosslife,5);//生命进度条前景,白
			if((bossover==1)&&(c1.isVisible()))
			{
				    g.drawString("此处加览桥空战真实历史战果",c1.getWidth()-24,40,0);//c1.getHeight()-20,0); 
				    g.drawString("此处加览桥空战真实历史战果",c1.getWidth()-24,60,0);//c1.getHeight(),0);
				    g.drawString("仅21岁",c1.getWidth()-24,80,0);//c1.getHeight()+20,0);
			}
			if(playerno==4)
	        {
				g.drawImage(img("/pic/playerbiaozhi.png"),145,4,0);
			g.drawImage(img("/pic/playerbiaozhi.png"),170,4,0);
	        g.drawImage(img("/pic/playerbiaozhi.png"),195,4,0);
	        g.drawImage(img("/pic/playerbiaozhi.png"),220,4,0);
			}
			if(playerno==3)
	        {
			g.drawImage(img("/pic/playerbiaozhi.png"),170,4,0);
	        g.drawImage(img("/pic/playerbiaozhi.png"),195,4,0);
	        g.drawImage(img("/pic/playerbiaozhi.png"),220,4,0);
			}
	        if(playerno==2)
	        {
	        g.drawImage(img("/pic/playerbiaozhi.png"),195,4,0);
	        g.drawImage(img("/pic/playerbiaozhi.png"),220,4,0);
			}
	        if(playerno==1)
	        {
	        g.drawImage(img("/pic/playerbiaozhi.png"),220,4,0);
	        }
	        if(s1==1)
	        {	
	        	g.setColor(255,255,255);
			g.fillRect(170,22,65,5);//无敌生命进度条前景,白
	        	g.setColor(255,0,0);
				g.fillRect(170,22,s2,5);//无敌进度条背景,红
				g.drawString("无敌",124,18,0);
				s2=s2-1;
				if(s2==0)
				{pzbz=0;
					s1=2;		
				}
	        }
			flushGraphics();//必须写在最后,在做这BOSSOVER的时候忘了,浪费了时间 
	}
	
	public void input()
	{   if(inputno==0)
	{
		int keystate=getKeyStates();
		if((keystate&UP_PRESSED)!=0)
		{ 
			   moveUp();
		}
		if((keystate&DOWN_PRESSED)!=0)
		{
			moveDown();
		}
		if((keystate&LEFT_PRESSED)!=0)
		{ 
			moveLeft();
		}
	    if((keystate&LEFT_PRESSED)==0)
		{ 
			c1.setFrame(0);//飞机左转后改为平飞,即,只要左键松开都是平飞
	    }
		if((keystate&RIGHT_PRESSED)!=0)
		{
			moveRight();
	
		}
		//以 huokebullet[z].no为射程,以每组第一个子弹为标志,即0,3,,6,9。。。。。。。18
		if((keystate&FIRE_PRESSED)!=0)
		{ 
			for(int i=0;i<=6;i=i+3)
			{ 
				if(huokebullet[i].no==1)
				{   
					for( int z=i;z<i+3;z++)
					{   //huokebullet[z].setv(z);				
						huokebullet[z].initBullets(z);
				        huokebullet[z].no=huokebullet[z].bulletheight;
			    	}
					huokebullet[i].setfirstposition(c1.getX(),c1.getY(),i,huokebullet,img("/pic/bullet.png"));//相对于IF语句的I
					break;//重要,删除后就只能打一组子弹了
				}
		    }
		}
	}
}
	private void moveDown() {
		c1.move(0,4);
		
				if((c1.getY()+c1.getHeight())>planepo)
				{
					c1.setPosition(c1.getX(),planepo-c1.getHeight());//-c1.getHeight()是因为坐标点是左上的点,所以要减去GETHEIGHT以使用飞机出来
				}
	}
	private void moveUp() {
		c1.move(0,-4);
		if(c1.getY()<planepoup)
		{   
			c1.setPosition(c1.getX(),planepoup);
		}
	}
	private void moveRight() {

		  c1.setFrame(2);
			c1.move(3,0);
			if(c1.getX()>(getWidth()-c1.getWidth()))
			{
				c1.setPosition((getWidth()-c1.getWidth()),c1.getY());
				
			}	
	}
private void moveLeft() {
		c1.move(-3,0);
		c1.setFrame(1);	
		if(c1.getX()<=0)
	    {
	    	c1.setPosition(0,c1.getY());
	    }
	}
	public void start()
	{
		Thread t=new Thread(this);
		t.start();
	}
	public void commandAction(Command c,Displayable d)
	{
		if(c.getLabel()=="暂停")
		{   conti=false;
		 removeCommand(c);
		 addCommand(new Command("继续",Command.OK,1));
		}
		if(c.getLabel()=="继续")
		{   conti=true;
		start();//此处很重要,如果不写他,则RUN()根本就不执行,所以原先的继续不好用5月30日凌晨12时22分OK 
		 removeCommand(c);
		 addCommand(new Command("暂停",Command.OK,2));
		}
if(c.getLabel()=="返回")
		{   conti=false;
			midlet.menuscreensecond();//玩完一遍或挂了后在玩一遍 菜单第一项改为 重新开始
	        
		}
	}  
}

⌨️ 快捷键说明

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