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

📄 mainmenu.java

📁 这是一个魔塔游戏的源代码
💻 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 + -