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

📄 gamemenu.java

📁 《神州》RPG游戏引擎
💻 JAVA
字号:
import java.util.*;

import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;


/*
 * Created on 2005-7-28
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Style - Code Templates
 */

/**
 * @author Administrator
 *
 * TODO To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
public class GameMenu {
	public int menuIndex;
    public static String[] menuName=new String[]{"状态","道具","装备","技能","系统"};
    Canvas1 canvas;
    Graphics g;   
    int width,height;

    
    public GameMenu(Canvas1 canvas)
    {	    
	    this.canvas=canvas;
        this.g=canvas.g;
	    this.width=canvas.width;
	    this.height=canvas.height;
    }
    public void showMenu()
    {    	
    	int LMargin=width-90-5;
    	int TMargin=height-18-5;
    	Image menuImg=Tools.getImage("/pic/menu.png");
    	g.drawImage(menuImg,LMargin,TMargin,Style.LT);
    	g.setColor(0xFFFFFF);
    	g.drawRect(LMargin+18*menuIndex,TMargin,17,17);
    	
    	g.setFont(Style.font);
    	g.setColor(0x000000);
    	g.drawString(menuName[menuIndex],LMargin+18*menuIndex+10,TMargin-Style.font.getHeight()-1,Style.CT);
    	g.setColor(0xFFFFFF);
    	g.drawString(menuName[menuIndex],LMargin+18*menuIndex+9,TMargin-Style.font.getHeight()-2,Style.CT);
    }
    
    //控制显示位置
    int statusLOffset;
    int statusTOffset;
    public void showStatus()
    {  	
    	//主角头像    
    	Sprite mr=new Sprite(GameMIDlet.mainRole);
    	mr.setFrameSequence(new int[3]);
    	mr.setFrame(0);
    	int w=125;
    	int h=7*4+Style.font.getHeight()*4+7+mr.getHeight()+4;
    	
    	int L=width/2-w/2;
    	int T=height/2-h/2;

    	int LMargin=L+statusLOffset;
    	int TMargin=T+statusTOffset;
    	
    	mr.setPosition(LMargin+4,TMargin+5);
    	
    	
    	int lv=GameMIDlet.mainRole.getLv();
        int maxLife=GameMIDlet.mainRole.getMaxLife();
        int life=GameMIDlet.mainRole.getLife();
        int maxMagic=GameMIDlet.mainRole.getTotalMagic();
        int magic=GameMIDlet.mainRole.getMagic();
        if(magic>maxMagic)
        {
        	magic=maxMagic;
        	GameMIDlet.mainRole.setMagic(magic);
        }
        int nextExp=GameMIDlet.mainRole.getNextExp();
        int exp=GameMIDlet.mainRole.getExp();
        int power=GameMIDlet.mainRole.getTotalPower();
        int defence=GameMIDlet.mainRole.getTotalDefence();
        int actSpeed=GameMIDlet.mainRole.getTotalActSpeed();
        
    	g.setColor(0xDAE6D1);
        g.fillRect(LMargin,TMargin,w,h);  //对话框背景色
        g.setColor(0x618E3F);
    	g.drawRect(LMargin,TMargin,w,h); //外框    	
    	
    	mr.paint(g);
    	
    	g.setFont(Style.font);
    	g.setColor(0x000000);
    	g.drawString("当前状态",LMargin+30,TMargin+5,Style.LT);
    	g.drawString("级别",LMargin+30,mr.getY()+mr.getHeight()+3,Style.LB);
    	g.drawString("气血",LMargin+5,TMargin+42,Style.LT);
    	g.drawString("精神",LMargin+5,TMargin+42+Style.font.getHeight()+7,Style.LT);
    	g.drawString("经验",LMargin+5,TMargin+42+Style.font.getHeight()*2+14,Style.LT);
    	int numBlank=(w-Style.font.stringWidth("攻防速"))/3;
    	g.drawString("攻",LMargin+5,TMargin+42+Style.font.getHeight()*3+21,Style.LT);
    	g.drawString("防",LMargin+5+Style.font.stringWidth("攻")+numBlank,TMargin+42+Style.font.getHeight()*3+21,Style.LT);
    	g.drawString("速",LMargin+5+Style.font.stringWidth("攻防")+numBlank*2,TMargin+42+Style.font.getHeight()*3+21,Style.LT);
    	g.setColor(0xFF0000);
    	g.drawString(String.valueOf(lv),LMargin+30+Style.font.stringWidth("级别")+5,mr.getY()+mr.getHeight()+3,Style.LB);
    	g.drawString(String.valueOf(power),LMargin+5+Style.font.stringWidth("攻")+2,TMargin+42+Style.font.getHeight()*3+21,Style.LT);
    	g.drawString(String.valueOf(defence),LMargin+5+Style.font.stringWidth("攻防")+numBlank+2,TMargin+42+Style.font.getHeight()*3+21,Style.LT);
    	g.drawString(String.valueOf(actSpeed),LMargin+5+Style.font.stringWidth("攻防速")+numBlank*2+2,TMargin+42+Style.font.getHeight()*3+21,Style.LT);
    	
    	g.setColor(0x000000);
    	int barStart=10+Style.font.stringWidth("气血");
    	int barEnd=w-5;
    	int barCenter=(barStart+barEnd)/2;
    	int barLength=barEnd-barStart;
    	//+(w-(5*2+fontwidth*2+5))/2
    	g.drawString(life+"/"+maxLife,LMargin+barCenter,TMargin+39,Style.CT);
    	g.drawString(magic+"/"+maxMagic,LMargin+barCenter,TMargin+42+Style.font.getHeight()+4,Style.CT);
    	g.drawString(exp+"/"+nextExp,LMargin+barCenter,TMargin+42+Style.font.getHeight()*2+11,Style.CT);
    	
    
    	//HP
        g.setColor(0xFFFFFF);
        g.fillRect(LMargin+barStart,TMargin+42+Style.font.getHeight()-3,barLength,4);
        int lifeLength=0;
        if(life>0)
        {
        	lifeLength=barLength*100/(maxLife*100/life);
        }        
        g.setColor(0xFF0000);
        g.fillRect(LMargin+barStart,TMargin+42+Style.font.getHeight()-3,lifeLength,4);
        g.setColor(0xA21515);
        g.drawRect(LMargin+barStart,TMargin+42+Style.font.getHeight()-3,barLength,4);
        
        //MP        
        g.setColor(0xFFFFFF);
        g.fillRect(LMargin+barStart,TMargin+42+Style.font.getHeight()*2+7-3,barLength,4);
        int magicLength=0;
        if(magic>0)
        {
        	magicLength=barLength*100/(maxMagic*100/magic);
        } 
        g.setColor(0x0000FF);
        g.fillRect(LMargin+barStart,TMargin+42+Style.font.getHeight()*2+7-3,magicLength,4);
        g.setColor(0x12129C);
        g.drawRect(LMargin+barStart,TMargin+42+Style.font.getHeight()*2+7-3,barLength,4);
        
        //EXP        
        g.setColor(0xFFFFFF);
        g.fillRect(LMargin+barStart,TMargin+42+Style.font.getHeight()*3+14-3,barLength,4);
        int expLength=0;
        if(exp>0)
        {
        	expLength=barLength*100/(nextExp*100/exp);
        } 
        g.setColor(0xFFFF00);
        g.fillRect(LMargin+barStart,TMargin+42+Style.font.getHeight()*3+14-3,expLength,4);
        g.setColor(0x94741B);
        g.drawRect(LMargin+barStart,TMargin+42+Style.font.getHeight()*3+14-3,barLength,4);
    }
    
    MatTab matTab;
    int tabIndex=0;
    public void prevMat()
    {
        tabIndex--;
		if(tabIndex<0)
		{
            tabIndex=0;    			
		}        		
		matTab=null; 
    }
    public void nextMat()
    {
        tabIndex++;
		if(tabIndex>1)
		{
            tabIndex=1;
		}        		
		matTab=null;  
    }
    public void reAddMatTab()
    {    	
    	matTab.removeAll();
        int matType=0;
        if(tabIndex==0)
        {
            matType=Mat.TYPE_USED;
        }else
        if(tabIndex==1)
        {
            matType=Mat.TYPE_EQUIP;
        }
    	Vector matVC = GameMIDlet.mainRole.getBagMatVC(matType);
    	
    	for(int i=0; matVC!=null && i<matVC.size(); i++)
    	{
    		matTab.addElement((Mat)matVC.elementAt(i));
    	}
    	matTab.sort();
    	matTab.refreshVC();
    }
    //显示道具
    public void showItem()
    {
    	int w = width-10;
    	int h = height-10;

    	int x=width/2-w/2;
    	int y=height/2-h/2;
    	
    	g.setColor(Style.bgColor);
        g.fillRect(x,y,w,h);  //对话框背景色
        g.setColor(Style.boardColor);
    	g.drawRect(x,y,w,h); //外框
    	
    	
    	
    	int tabX=5;
    	int tabY=5;

    	int tabW=w-10;
    	int tabH=h-(Style.font.getHeight()+15);
    	
    	g.setColor(0x000000);
    	g.drawString("金钱",x+5,y+h-5-Style.font.getHeight(),Style.LT);
    	g.setColor(0xFF0000);
    	g.drawString(String.valueOf(GameMIDlet.mainRole.getMoney()),x+10+Style.font.stringWidth("金钱"),y+h-5-Style.font.getHeight(),Style.LT);
    	
    	if(matTab==null)
    	{
	    	matTab=new MatTab();
	    	matTab.setTabName(new String[]{"药品类","装备类"});
	    	matTab.setTabIndex(tabIndex);
	    	matTab.setBgColor(Style.bgColor2);
	    	matTab.setHighLightColor(Style.highLight);
	    	matTab.setPosition(x+tabX,y+tabY);
	    	matTab.setW(tabW);
	    	matTab.setH(tabH);
            int matType=0;
            if(tabIndex==0)
            {
                matType=Mat.TYPE_USED;
            }else
            if(tabIndex==1)
            {
                matType=Mat.TYPE_EQUIP;
            }
	    	Vector matVC = GameMIDlet.mainRole.getBagMatVC(matType);
	    	
	    	for(int i=0; matVC!=null && i<matVC.size(); i++)
	    	{
	    		matTab.addElement((Mat)matVC.elementAt(i));
	    	}
	    	matTab.sort();
	    	//System.out.println("数据加完");
    	}
    	matTab.paint(g);
    	
    	
    	/*
    	g.setColor(0x618E3F);
    	for(int i=0;i<=1;i++)
    	{
    		for(int j=0;j<=2;j++)
    		{
    			g.drawRect(LMargin+5+(32+5)*j,TMargin+10+Style.font.getHeight()+(32+5)*i,32,32);
    		}
    	}
    	*/
    	
    }
   
	/*
	 * //布帽 43,7
    	//饰物 78,27
    	//右手 3,33 
    	//衣服 43,52   	
    	//左手 83,71
    	//鞋 43,96
	 * */
	public static Point[] partLoc=new Point[]{
		new Point(43,7),
		new Point(78,27),		
		new Point(3,33),
		new Point(43,52),
		new Point(83,71),
		new Point(43,96)
	};
	public static String[] partName=new String[]{
		"头部",
		"饰物",
		"右手",
		"身体",
		"左手",
		"脚"
	};
	public int equipIndex=0;
	public void nextEquip()
	{
		equipIndex++;
		if(equipIndex>partLoc.length-1)
		{
			equipIndex=0;
		}
	}
	public void prevEquip()
	{
		equipIndex--;
		if(equipIndex<0)
		{
			equipIndex=partLoc.length-1;
		}
	}
	public Mat getChoosedEquip()
	{
		return GameMIDlet.mainRole.getEquipByPart(equipIndex);
	}
    public void showEquip()
    {
    	int w=125;
    	int h=125;

    	int LMargin=width/2-w/2;
    	int TMargin=height/2-h/2;
    	
    	g.setColor(0xDAE6D1);
        g.fillRect(LMargin,TMargin,w,h);  //对话框背景色
        g.setColor(0x618E3F);
    	g.drawRect(LMargin,TMargin,w,h); //外框
    	
    	Image shadow=Tools.getImage("/pic/roleshadow.png");
    	g.drawImage(shadow,LMargin+33,TMargin+5,Style.LT);
    	
    	g.setColor(0x000000);
    	g.drawString("装备",LMargin+5,TMargin+5,Style.LT);
    	
    	Mat[] equip=new Mat[6];
    	g.setFont(Style.font);
    	for(int i=0;i<equip.length;i++)
    	{
    		equip[i]=GameMIDlet.mainRole.getEquipByPart(i);
    		if(equip[i]!=null)
        	{
    	    	if(equipIndex==i)
    	    	{
    	    		g.setColor(0xFFFFFF);
    	    	}else
    	    	{
    	    		g.setColor(Style.bgColor);
    	    	}    			
    	        g.fillRect(LMargin+partLoc[i].x,TMargin+partLoc[i].y,Style.font.stringWidth(equip[i].getName())+8,Style.font.getHeight()+4);  //底色
    	        g.setColor(0x618E3F);
    	    	g.drawRect(LMargin+partLoc[i].x,TMargin+partLoc[i].y,Style.font.stringWidth(equip[i].getName())+8,Style.font.getHeight()+4); //外框
    	    	g.setColor(0x000000);	    	
    	    	g.drawString(equip[i].getName(),LMargin+partLoc[i].x+4,TMargin+partLoc[i].y+2,Style.LT);
        	}
        	else
        	{
        		if(equipIndex==i)
    	    	{
    	    		g.setColor(0xFFFFFF);
    	    	}else
    	    	{
    	    		g.setColor(Style.bgColor);
    	    	} 
                g.fillRect(LMargin+partLoc[i].x,TMargin+partLoc[i].y,34,18);  //底色
                g.setColor(0x618E3F);
            	g.drawRect(LMargin+partLoc[i].x,TMargin+partLoc[i].y,34,18); //外框
            	g.setColor(0x000000);	    	
    	    	g.drawString(partName[i],LMargin+partLoc[i].x+17,TMargin+partLoc[i].y,Style.CT);
        	}
    	}
    }
    SkillTab skillTab;
    public void showSkill()
    {
    	int w = width-10;
    	int h = height-10;

    	int x=width/2-w/2;
    	int y=height/2-h/2;
    	
    	g.setColor(Style.bgColor);
        g.fillRect(x,y,w,h);  //对话框背景色
        g.setColor(Style.boardColor);
    	g.drawRect(x,y,w,h); //外框    	
    	
    	
    	int tabX=5;
    	int tabY=5;

    	int tabW=w-10;
    	int tabH=h-10;
    	
    	if(skillTab==null)
    	{
	    	skillTab=new SkillTab();
	    	skillTab.setTabName(new String[]{"技能"});
	    	skillTab.setTabIndex(0);
	    	skillTab.setBgColor(Style.bgColor2);
	    	skillTab.setHighLightColor(Style.highLight);
	    	skillTab.setPosition(x+tabX,y+tabY);
	    	skillTab.setW(tabW);
	    	skillTab.setH(tabH);
	    	Vector skillVC = GameMIDlet.mainRole.getSkillVC();
	    	
	    	for(int i=0; skillVC!=null && i<skillVC.size(); i++)
	    	{
	    		skillTab.addElement((Skill)skillVC.elementAt(i));
	    	}	    	
    	}
    	skillTab.paint(g);    	
    	
    	
    	/*
    	g.setColor(0x618E3F);
    	for(int i=0;i<=1;i++)
    	{
    		for(int j=0;j<=2;j++)
    		{
    			g.drawRect(LMargin+5+(32+5)*j,TMargin+10+Style.font.getHeight()+(32+5)*i,32,32);
    		}
    	}
    	*/
    	
    }
}

⌨️ 快捷键说明

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