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

📄 battlecanvas.java

📁 《神州》RPG游戏引擎
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
	    	g.setFont(Style.font);
	    	g.setColor(0x000000);
	    	g.drawString("级别  "+GameMIDlet.mainRole.getUpLv(),x+5,y+31,Style.LT);
	    	g.drawString("力量  "+GameMIDlet.mainRole.getUpPower(),x+5,y+31+Style.font.getHeight(),Style.LT);
	    	g.drawString("防御  "+GameMIDlet.mainRole.getUpDefence(),x+5,y+31+Style.font.getHeight()*2,Style.LT);
	    	g.drawString("气血  "+GameMIDlet.mainRole.getUpMaxLife(),x+5,y+31+Style.font.getHeight()*3,Style.LT);
	    	g.drawString("精神  "+GameMIDlet.mainRole.getUpMaxMagic(),x+5,y+31+Style.font.getHeight()*4,Style.LT);
	    	g.drawString("速度  "+GameMIDlet.mainRole.getUpActSpeed(),x+5,y+31+Style.font.getHeight()*5,Style.LT);
	    	status=STATUS_END;
    	}
    }
    
    //初始化道具界面
    public void initItemTab()
    {
        int w=100;
        int h=130;
        int x=(this.width-w)/2;
        int y=(this.height-h)/2;
        
        if(matTab==null)
        {
            matTab=new MatTab();
            matTab.setTabName(new String[]{"使用道具"});
            matTab.setTabIndex(0);
            matTab.setBgColor(Style.bgColor2);
            matTab.setHighLightColor(Style.highLight);
            matTab.setPosition(x,y);
            matTab.setW(w);
            matTab.setH(h);
            Vector matVC = GameMIDlet.mainRole.getBagMatVC(Mat.TYPE_USED);
            
            for(int i=0; matVC!=null && i<matVC.size(); i++)
            {
                matTab.addElement((Mat)matVC.elementAt(i));
            }
            matTab.sort();
            //System.out.println("数据加完");
        }
    }
    
    //初始化技能界面
    public void initSkillTab()
    {
        int w=100;
        int h=130;
        int x=(this.width-w)/2;
        int y=(this.height-h)/2;
        
        if(skillTab==null)
        {
            skillTab=new SkillTab();
            skillTab.setTabName(new String[]{"技能"});
            skillTab.setTabIndex(0);
            skillTab.setBgColor(Style.bgColor2);
            skillTab.setHighLightColor(Style.highLight);
            skillTab.setPosition(x,y);
            skillTab.setW(w);
            skillTab.setH(h);
            Vector skillVC = GameMIDlet.mainRole.getSkillVC();
            
            for(int i=0; skillVC!=null && i<skillVC.size(); i++)
            {
                skillTab.addElement((Skill)skillVC.elementAt(i));
            }            
        }
    }
    public void synBattleMainRole()
    {
        //保持战斗主角的各项数值与实际主角对象数值同步
        battleMainRole.setLife(GameMIDlet.mainRole.getLife());
        battleMainRole.setMagic(GameMIDlet.mainRole.getMagic());
    }
    public void synMainRole()
    {
        //保持实际主角对象数值与战斗主角的各项数值同步
        GameMIDlet.mainRole.setLife(battleMainRole.getLife());
        GameMIDlet.mainRole.setMagic(battleMainRole.getMagic());
    }
    
    public void run()
    {
        while(isPlay)
        {
            if(!isDrawing)
            {                
                isDrawing=true;

                //g.setColor(0x000000);
                //g.fillRect(0,0,width,height);                
                
                
                
                //把死的加入尸体集合
                for(int i=battleRoleVC.size()-1;i>=0;i--)
                {
                    if((ashesVC==null || !ashesVC.contains(battleRoleVC.elementAt(i))) && ((BattleSprite)battleRoleVC.elementAt(i)).getLife()<=0)
                    {
                        if(ashesVC==null)ashesVC=new Vector();
                        ashesVC.addElement(battleRoleVC.elementAt(i));  
                        //显示死去效果
                        showDieEffect((BattleSprite)battleRoleVC.elementAt(i));
                    }
                }
                
                
                if(backLayer!=null)backLayer.paint(g,0,0);    //绘制背景
                if(roleLayer!=null)roleLayer.sort();
                if(roleLayer!=null)roleLayer.paint(g,0,0);   //绘制角色层
                
                //画头上的数字
                for(int i=0;battleRoleVC!=null && i<battleRoleVC.size();i++)
                {
                	BattleSprite battleSprite=(BattleSprite)battleRoleVC.elementAt(i);
                	if(battleSprite.damageNum!=null)
                	{
                		DamageNum dn=battleSprite.damageNum;
                		g.setFont(numFont);
                		g.setColor(dn.color);
                		g.drawString(String.valueOf(dn.num),dn.point.x,dn.point.y,Style.LT);
                	}
                }
                if(battleMainRole.isShowWarEffect())
                {                    
                    battleMainRole.getBattleSkill().setPosition(battleMainRole.getX(),battleMainRole.getY()+10);
                    battleMainRole.getBattleSkill().paint(g);
                }
                //画血槽
                drawLife();
                
                //画手
                if(status==STATUS_COMMAND_ATTACK || status==STATUS_COMMAND_SKILL_ATTACK)
                {
                    if(battleHand!=null)battleHand.paint(g);
                }
                else
                {
                	if(battleHand!=null)battleHand.stopAniHand();
                }
                    
                
                //显示战斗命令
                if((status>=BattleCanvas.STATUS_COMMAND && status<=STATUS_COMMAND_SKILL_ATTACK) && battleCommand!=null)
                {
                    battleCommand.paint();
                }
                
                //显示道具选择界面
                if((status==BattleCanvas.STATUS_COMMAND_ITEM || status==BattleCanvas.STATUS_COMMAND_ITEM_COMMAND) && matTab!=null)
                {
                    matTab.paint(g);
                }
                
                //显示技能选择界面
                if(status==BattleCanvas.STATUS_COMMAND_SKILL && skillTab!=null)
                {
                    skillTab.paint(g);
                }
                //显示提示框
                if(myAlert!=null && myAlert.isShow())
                {
                    myAlert.paint(g);
                } 
                
                /*
                //淡入
                if(fadeInBox!=null)
                {
                	g.setColor(0x000000);
                	System.out.println("画黑box"+fadeInBox.x+","+fadeInBox.y+","+fadeInBox.w+","+fadeInBox.h);
                	g.fillRect(fadeInBox.x,fadeInBox.y,fadeInBox.w,fadeInBox.h);
                }
                */
                
                //敌全死胜利
                //if(battleRoleVC.size()==1 && battleRoleVC.elementAt(0)==battleMainRole)
                if(enemyVC==null || enemyVC.size()<=0)
                {
                    //stopTurn();
                    showResult(true);
                }
                /*
                if(enemy1!=null && enemy1.getLife()<=0)  //敌死退出
                {
                	stopAttack();
                	showResult(true);                	
                }
                */
                
                //主角死失败
                if(battleMainRole!=null && battleMainRole.getLife()<=0)  
                {
                	//stopTurn();
                	showResult(false);
                }
                
                //显示升级信息
                showLvupInfo();
                
                g.setColor(0xFF0000);
                if(GameMIDlet.showFPS)
                {
                long t2=System.currentTimeMillis();                                
                if(t2-t1>0)g.drawString("Fps:"+runTimes*1000/(t2-t1),5,5,Style.LT);
                }
                runTimes++;
                if(GameMIDlet.showMem)
                {
                g.drawString("Total memory:"+Runtime.getRuntime().totalMemory(),5,20,Style.LT);
                g.drawString("Free memory:"+Runtime.getRuntime().freeMemory(),5,35,Style.LT);
                }
                
                flushGraphics();
                isDrawing=false;
            }
            //System.out.println("enemy1.getLife()="+enemy1.getLife());
            //System.out.println("battleMainRole.getLife()="+battleMainRole.getLife());
            
             
            
            try {
                Thread.sleep(delay);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            
            
        }
        ThreadRunning=false;
    }
    
    private Timer ashesTimer;
    private AshesTimerTask ashesTimerTask;
    
    //显示死去的效果
    private void showDieEffect(BattleSprite battleSprite)
    {
        ashesTimer = null;
        ashesTimerTask = null;
        ashesTimer = new Timer();
    	ashesTimerTask = new AshesTimerTask();
    	ashesTimerTask.setRoleLayer(roleLayer);
    	ashesTimerTask.setAshes(battleSprite);    	
    	ashesTimer.schedule(ashesTimerTask,0,60);
    }
    
    
    protected void keyPressed(int keyCode)
    {    
        if(battleController!=null)battleController.keyPressed(keyCode);
    }
    
    protected void keyRepeated(int keyCode)
    {    
        if(battleController!=null)battleController.keyRepeated(keyCode);
    }
    
  
    public void outBattle()
    {    	
    	stop();
    	backLayer=null;
        roleLayer=null;
        battleMainRole=null;    
        System.gc();
    	//((Canvas1)last).outBattle();
        GameMIDlet.midlet.outBattle();
    }
    
    //清除尸体的过程
    class AshesTimerTask extends TimerTask{

		private BattleSprite ashes;
		private RoleLayer roleLayer;		
		
		
		private int step;
		
		public BattleSprite getAshes() {
			return ashes;
		}
		public void setAshes(BattleSprite ashes) {
			this.ashes = ashes;
		}
		public RoleLayer getRoleLayer() {
			return roleLayer;
		}
		public void setRoleLayer(RoleLayer roleLayer) {
			this.roleLayer = roleLayer;
		}
		public void run() {			
			doClearAshes();
		}
		private void doClearAshes()
	    {   
            if(step==10)
	    	{
	    		roleLayer.remove(ashes);
	    	}
	    	else
	    	if(step==11)
	    	{
	    		roleLayer.append(ashes);
	    	}
	    	else
	    	if(step==12)
	    	{
	    		roleLayer.remove(ashes);
	    	}
	    	else
	    	if(step==13)
	    	{
	    		roleLayer.append(ashes);
	    	}
	    	else
	    	if(step==14)
	    	{
	    		roleLayer.remove(ashes);	    		
	    	}
	    	else
	    	if(step==15)
	    	{
	    		roleLayer.append(ashes);
	    	}
	    	else
	    	if(step==16)
	    	{
	    		roleLayer.remove(ashes);                
	    		ashesTimer.cancel();                
	    	}
	    	step++;
	    	//System.out.println("step="+step);
	    }
    	
    }
    /*
    public void flushGraphics()
    {
        repaint();
        serviceRepaints();
    }
    protected void paint(Graphics g)
    {
       g.drawImage(screenImg,0,0,Style.LT);        
    }
    */
    
    /*
    TimerTask timerTask2;
    Timer timer2;
    Box fadeInBox;
    public void fadeIn()
    {    
    	fadeInBox=new Box();
    	fadeInBox.x=0;
    	fadeInBox.y=0;
    	fadeInBox.w=width;
    	fadeInBox.h=height;
    	
    	timerTask2=new TimerTask()
    	{
    		public void run()
    		{
    			doFadeIn();
    		}
    	};
    	timer2=new Timer();
    	timer2.schedule(timerTask2,0,20);
    
    }
    private void doFadeIn()
    {
    	fadeInBox.w=fadeInBox.w-width/10;
    	fadeInBox.h=fadeInBox.h-height/10;
    	fadeInBox.x=width/2-fadeInBox.w/2;
    	fadeInBox.y=height/2-fadeInBox.h/2;
    	
    	if(fadeInBox.w<-width/10 && fadeInBox.h<-height/10)
    	{
    		timer2.cancel();
    		fadeInBox=null;    		
    		startAttack();
    	}
    }
    */
    class Loader extends Thread
    {
        public void run()
        {
            doLoadScene();
            startGame();
        }
    } 
}

⌨️ 快捷键说明

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