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

📄 title.java

📁 一个RPG游戏的DEMO.用到了脚本技术。图片也有封装过。
💻 JAVA
字号:
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Font;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;

class Title extends Canvas
{

	private StartApp s;
	private Restore restore;
	private boolean used[],goOn;
	private int width=getWidth(),height=getHeight(),x,y,select,alert,onMenu,pX,pY,charW,charH;
	private final int NEWGAME=1,LOADGAME=2,INPUT=3,MENU=0,WAIT=4,d=8;
	private String names[],string="请稍候";
	private int level[];
	private Image attention;
	private char alpha[],inputs[];
	private Font font;
	private Load load;
	
	public Title(StartApp s)
	{
		this.s=s;
		restore=new Restore();
		used=restore.getRecordUsed();
		names=restore.getName();
		level=restore.getLevel();
		x=12;
		y=17;
		select=0;
		alert=0;
		inputs=new char[5];
		for(int i=0;i<inputs.length;i++)
			inputs[i]=' ';
		alpha=new char[28];
		for(byte i=65;i<91;i++)
		{
			alpha[i-65]=(char)i;
		}
		alpha[26]=(char)27;
		alpha[27]=(char)2;
		attention=Resourse.readImage(Resourse.ATTENTION);
		font=Font.getFont(Font.FACE_MONOSPACE,Font.STYLE_PLAIN,Font.SIZE_MEDIUM);
		charW=10;
		charH=font.getHeight();
	}
	
	protected void paint(Graphics g) 
	{
		g.setColor(0x00000000);
		g.fillRect(0,0,width,height);
		if(onMenu==MENU)
		{
			g.setColor(0x00FFFFFF);
			g.drawRoundRect(5,10,80,55,8,8);
			g.drawString("开始新游戏",18,15,0);
			g.drawString("读取游戏",18,30,0);
			g.drawString("退出游戏",18,45,0);
			g.fillTriangle(x,y,x+6,y+5,x,y+10);
		}
		else if(onMenu==NEWGAME||onMenu==LOADGAME)
		{
			g.setColor(0x00888888);
			for(int i=0;i<3;i++)
			{
				g.drawRoundRect(40,40+25*i,85,18,6,6);
				if(used[i])
				{
					g.drawString((i+1)+". "+names[i],45,40+25*i,0);
					g.drawString("lv "+level[i],100,40+25*i,0);
				}
				else
					g.drawString("No Data",60,40+25*i,0);
			}
			g.setColor(0x00FFFFFF);
			g.drawRoundRect(40,40+25*select,85,18,6,6);
			if(used[select])
			{
				g.drawString((select+1)+". "+names[select],45,40+25*select,0);
				g.drawString("lv "+level[select],100,40+25*select,0);
			}
			else
				g.drawString("No Data",60,40+25*select,0);
			g.drawString("按A键返回",55,130,0);
		}
		else if(onMenu==INPUT)
		{
			g.setColor(0x00FFBBAA);
			g.fillRect(26+pX*(charW+d),56+pY*(charH+d),charW,charH);
			g.setColor(0x00FFFFFF);
			g.drawRoundRect(15,42,140,115,10,10);
			g.drawRoundRect(15,10,140,20,10,10);
			g.drawString("Name:",25,12,0);
			g.drawChars(inputs,0,inputs.length,80,12,0);
			int count=0;
			g.setFont(font);
			for(int i=0;i<4;i++)
			{
				for(int j=0;j<7;j++)
				{
					g.drawChar(alpha[count],28+j*(charW+d),58+i*(charH+d),0);
					count++;
				}
			}
			g.drawString("Ba",115,129,0);
			g.drawString("Ed",133,129,0);
			g.setFont(null);
			g.drawString("按A键返回",55,160,0);
		}
		else if(onMenu==WAIT)
		{
			g.setColor(0x00FFFFFF);
			g.drawString(string,30,60,0);
		}
		if(alert==NEWGAME)
		{
			g.setColor(0x00CCCCCC);
			g.fillRoundRect(38,48,100,70,16,16);
			g.setColor(0x005555FF);
			g.fillRoundRect(35,45,100,70,16,16);
			g.drawImage(attention,40,50,0);
			g.setColor(0x00000000);
			g.drawString("覆盖原记录",60,50,0);
			g.drawString("继续吗?",70,70,0);
			g.setColor(0x00FFFFFF);
			if(goOn)
				g.fillRect(90,102,8,12);
			else
				g.fillRect(105,102,8,12);
			g.setColor(0x00000000);
			g.drawString("是/否",90,100,0);
		}
		if(alert==LOADGAME)
		{
			g.setColor(0x00CCCCCC);
			g.fillRoundRect(28,48,100,60,16,16);
			g.setColor(0x005555FF);
			g.fillRoundRect(25,45,100,60,16,16);
			g.drawImage(attention,30,50,0);
			g.setColor(0x00000000);
			g.drawString("无效记录",50,50,0);
			g.drawString("按选择健返回",40,78,0);
		}
	}
	
	protected void keyPressed(int keyCode)
	{
		switch(getGameAction(keyCode))
		{
			case UP:
				if(alert==0)
				{
					if(onMenu==MENU)
						y=(y==17?17:y-15);
					else if(onMenu==NEWGAME||onMenu==LOADGAME)
						select=(select==0?0:select-1);
					else if(onMenu==INPUT)
						pY=(pY==0?0:pY-1);
				}	
				break;
			case DOWN:
				if(alert==0)
				{
					if(onMenu==MENU)
						y=(y==47?47:y+15);
					else if(onMenu==NEWGAME||onMenu==LOADGAME)
						select=(select==2?0:select+1);
					else if(onMenu==INPUT)
						pY=(pY==3?3:pY+1);
				}
				break;
			case LEFT:
					if(alert==NEWGAME&&(onMenu==NEWGAME||onMenu==LOADGAME))
						goOn=true;
					if(alert==0&&onMenu==INPUT)
						pX=(pX==0?0:pX-1);
				break;
			case RIGHT:
					if(alert==NEWGAME&&(onMenu==NEWGAME||onMenu==LOADGAME))
						goOn=false;
					if(alert==0&&onMenu==INPUT)
						pX=(pX==6?6:pX+1);
				break;
			case FIRE:
				if(alert==NEWGAME)
				{
					if(goOn)
					{
						onMenu=INPUT;
						alert=0;
					}
					else
						alert=0;
				}
				else if(alert==LOADGAME)
				{
					alert=0;
				}
				else if(alert==0)
				{
					if(onMenu==MENU)
					{
						if(y==17)
						{
							onMenu=NEWGAME;
						}
						else if(y==32)
						{
							onMenu=LOADGAME;
						}
						else if(y==47)
						{
							s.exit();
						}
					}
					else if(onMenu==NEWGAME)
					{
						if(used[select])
							alert=NEWGAME;
						else
							onMenu=INPUT;
					}
					else if(onMenu==LOADGAME)
					{
						if(!used[select])
							alert=LOADGAME;
						else
						{
							onMenu=WAIT;
							load=new Load(LOADGAME);
						}
					}
					else if(onMenu==INPUT)
					{
						for(int i=0;i<inputs.length;i++)
						{
							if(inputs[i]==' ')
							{
								if((byte)alpha[pY*7+pX]==27)
								{
									if(i==0)
										inputs[0]=' ';
									else
										inputs[i-1]=' ';
								}
								else
								{
									inputs[i]=alpha[pY*7+pX];
									i=inputs.length;
								}
							}
						}
						if(inputs[inputs.length-1]!=' '&&(byte)alpha[pY*7+pX]==27)
							inputs[inputs.length-1]=' ';
						else if((byte)alpha[pY*7+pX]==2)
						{
							onMenu=WAIT;
							load=new Load(NEWGAME);
						}
					}
				}
				break;
			default:
				if(onMenu!=MENU&alert==0)
				{
					onMenu=MENU;
					select=0;
				}
				break;
		}
		repaint();
		if(onMenu==WAIT)
			load.start();
	}
	
	class Load extends Thread
	{
		private int state;
		
		Load(int state)
		{
			this.state=state;
		}
		
		public void run()
		{
			try{
				string="请稍候 .";
				repaint();
				if(state==NEWGAME)
					restore.init(select+1,String.valueOf(inputs));
				else
					restore.load(select+1);	
				sleep(50);
				string="请稍候 . .";
				repaint();
				Game game=new Game(s,restore.getMap(),restore.getMc(),restore.getItemManager(),restore);
				sleep(50);
				string="请稍候 . . .";
				repaint();
				sleep(50);
				s.display.setCurrent(game);
			}catch(InterruptedException e){}
		}
	}
	
}

⌨️ 快捷键说明

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