📄 mainmenu.java
字号:
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;
public class MainMenu extends GameCanvas
implements Runnable
{
private static final String rmsName = "MagicTowerRMS";
private Display display;
private MagicTower main;
private String[] menu = {" 新 游 戏","读取上次游戏"," 帮 助",
" 关 于"," 退 出"};
private int itemNum = menu.length;
private int curItem;
private boolean isFirstPlay = false;
private boolean isSelecting;
public int borderX,borderY;
private GameScreen gameScreen;
private RMSUtil rms;
private Image borderImage = GameScreen.getImage(GameScreen.IMAGE_BORDER2);
private int split = 25;
//hold the position and size of item
private int x,// = gameScreen.borderX,
y,// = gameScreen.borderY,
w,h;
public MainMenu(Display display,MagicTower main)
{
super(true);
this.display = display;
this.main = main;
setFullScreenMode(true);
rms =new RMSUtil(rmsName);
//isFirstPlay = rms.isFirstPlay();
borderX = (getWidth() - 128 ) / 2;
borderY = (getHeight() - 160) / 2;
}
private void next()
{
if((curItem+1)<itemNum)curItem ++;
else curItem = 0;
if((curItem == 1)&&(isFirstPlay)){
curItem ++;
}
}
private void pre()
{
if((curItem - 1) >= 0) curItem --;
else curItem = itemNum - 1;
if((curItem == 1)&&(isFirstPlay)){
curItem --;
}
}
private void render(Graphics g)
{
g.setColor(0,0,0);
g.fillRect(0,0,getWidth(),getHeight());
g.drawImage(borderImage,borderX,borderY,
Graphics.TOP | Graphics.LEFT);
g.setFont(GameScreen.LARGE_FONT);
drawItem(g);
y = curItem * h + split * (curItem + 1)+borderY ;
g.setColor(255,200,0);
g.drawString(menu[curItem],borderX + 20,y,
Graphics.TOP | Graphics.LEFT);
flushGraphics();
}
private void drawItem(Graphics g)
{
g.setColor(0x985415);
for(int i = 0;i < itemNum; i ++)
{
y = i * h + split * (i + 1) + borderY ;
g.drawString(menu[i],borderX + 20,y,Graphics.TOP | Graphics.LEFT);
}
}
private void tick()
{
int keyState = getKeyStates();
if ((keyState & this.DOWN_PRESSED) != 0){
next();
}else if((keyState & UP_PRESSED) != 0){
pre();
}else if ((keyState & this.FIRE_PRESSED) != 0){
dealItem();
}
}
private void dealItem()
{
switch(curItem){
case 0:gameScreen = new GameScreen(display,this,rms,true);
display.setCurrent(gameScreen);
gameScreen.start();
break;
case 1:gameScreen = new GameScreen(display,this,rms,false);
display.setCurrent(gameScreen);
gameScreen.start();
break;
case 2:HelpScreen help = new HelpScreen(display,this);
display.setCurrent(help);
help.start();
break;
case 3:AboutScreen about = new AboutScreen(display,this);
display.setCurrent(about);
about.start();
break;
case 4:main.exit();
break;
}
}
public void start()
{
isSelecting = true;
isFirstPlay = rms.isFirstPlay();
Thread t = new Thread(this);
t.start();
}
private void stop()
{
isSelecting = false;
//display.setCurrent(null);
}
public void run()
{
Graphics g = getGraphics();
long startTime = 0;
long timeTake = 0;
while(isSelecting == true)
{
startTime = System.currentTimeMillis();
tick();
render(g);
timeTake = System.currentTimeMillis() - startTime;
if (timeTake < GameScreen.MILLIS_PER_TICK)
{
try
{
Thread.sleep(GameScreen.MILLIS_PER_TICK - timeTake);
} catch(InterruptedException e){System.out.println(e);}
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -