📄 title.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 + -