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

📄 gamescreen.java

📁 最近弄的一个跨栏小游戏
💻 JAVA
字号:
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;


public class GameScreen extends Canvas implements Runnable{

	static final int LOGOSPLASH  = 0;    //LOGO闪屏
	static final int MUSICSELECT = 1;    //音乐开关选择界面
	static final int MAINMENU    = 2;    //主菜单
	static final int GAMELOADING = 3;    //游戏加载
	static final int NEWGAME     = 4;    //新游戏
	static final int TRAINING    = 5;    //训练
	static final int SETTING     = 6;    //设置
	static final int HIGHTSCORE  = 7;    //高分榜
	static final int GAMEHELP    = 8;    //帮助
	static final int GAMEABOUT   = 9;    //关于
	static final int QUIT        = 10;    //退出
	static int screenW;
	static int screenH;
	
	public GameScreen(GameMIDlet midlet){
		this.midlet = midlet;
		setFullScreenMode(true);
		screenW = 176;
		screenH = 208;
		bufferImage = Image.createImage(screenW,screenH);
		bg = bufferImage.getGraphics();
		gameState = LOGOSPLASH;
		//gameState = MAINMENU;
		buildUpObject();
		initGame();
		start();
	}
	
	//创建对象
	private void buildUpObject() {
		switch(gameState){
		case LOGOSPLASH:
			glogo = new GameLogo(this);
			break;
		case MAINMENU:
			gmenu = new GameMenu(this);
			break;
		case NEWGAME:
			gstart = new GameStart(this);
			break;
		case TRAINING:
			break;
		case SETTING:
			gset = new GameSetting(this);
			break;
		case GAMEHELP:
			ghelp = new GameHelp(this);
			break;
		case HIGHTSCORE:
			grecord = new GameRecord(this);
			break;
		case GAMEABOUT:
			gabout = new GameAbout(this);
			break;
		}
	}

	//启动线程
	private void start() {
		gameRun = true;
		Thread t = new Thread(this);
		t.start();
	}

	//初始化
	protected void initGame(){
		switch(gameState){
		case LOGOSPLASH:
			glogo.init();
			break;
		case MUSICSELECT:
			break;
		case GAMELOADING:
			break;
		case MAINMENU:
			gmenu.init();
			break;
		case NEWGAME:
			gstart.init();
			break;
		case TRAINING:
			break;
		case SETTING:
			gset.init();
			break;
		case HIGHTSCORE:
			grecord.init();
			break;
		case GAMEHELP:
			ghelp.init();
			break;
		case GAMEABOUT:
			gabout.init();
			break;
		case QUIT:
			break;
		}
	}
	
	protected void paint(Graphics g) {
		// 清屏
		g.setColor(0xffffff);
		g.fillRect(0, 0, screenW, screenH);
		// 绘制离屏屏幕
		drawBufferScreen();
		// 绘制离屏屏幕到主屏幕
		g.drawImage(bufferImage, 0, 0, Graphics.TOP | Graphics.LEFT);
	}

	private void drawBufferScreen() {
		// 清屏
		bg.setColor(0xffffff);
		bg.fillRect(0, 0, screenW, screenH);
		switch(gameState){
		case LOGOSPLASH:
			glogo.paint(bg);
			break;
		case MUSICSELECT:
			break;
		case GAMELOADING:
			
			break;
		case MAINMENU:
			gmenu.paint(bg);
			break;
		case NEWGAME:
			gstart.paint(bg);
			break;
		case TRAINING:
			break;
		case SETTING:
			gset.paint(bg);
			break;
		case HIGHTSCORE:
			grecord.paint(bg);
			break;
		case GAMEHELP:
			ghelp.paint(bg);
			break;
		case GAMEABOUT:
			gabout.paint(bg);
			break;
		case QUIT:
			break;
		}
	}
	
	private void destroy() {
		midlet.destroyApp(true);
		midlet.notifyDestroyed();
	}

	public void run() {
		while(gameRun){
			long lastTime = System.currentTimeMillis();    //记录初始时间
			switch(gameState){
			case LOGOSPLASH:
				glogo.run();
				break;
			case MUSICSELECT:
				break;
			case GAMELOADING:
				break;
			case MAINMENU:
				gmenu.run();
				break;
			case NEWGAME:
				gstart.run();
				break;
			case TRAINING:
				break;
			case SETTING:
				gset.run();
				break;
			case HIGHTSCORE:
				//grecord.run();
				break;
			case GAMEHELP:
				ghelp.run();
				break;
			case GAMEABOUT:
				gabout.run();
				break;
			case QUIT:
                destroy(); 
				break;
			}
			repaint();
			
			try {
				long currTime = System.currentTimeMillis();    //获取当前时间
				long takenTime = currTime - lastTime;          //计算时间间隔
				if(takenTime<deltaTime){                       //休眠 
					Thread.sleep(deltaTime-takenTime);
				}
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
	}
	
	protected void keyPressed(int keyCode){
		
		switch(gameState){
		case LOGOSPLASH:
			glogo.keyPress(keyCode);
			break;
		case MUSICSELECT:
			break;
		case GAMELOADING:
			break;
		case MAINMENU:
			gmenu.keyPress(keyCode);
			break;
		case NEWGAME:
			gstart.keyPress(keyCode);
			break;
		case TRAINING:
			break;
		case SETTING:
			gset.keyPress(keyCode);
			break;
		case HIGHTSCORE:
			grecord.keyPress(keyCode);
			break;
		case GAMEHELP:
			ghelp.keyPress(keyCode);
			break;
		case GAMEABOUT:
			gabout.keyPress(keyCode);
			break;
		case QUIT:
			break;
		}
	}
	
	// 获取MIDlet
	public GameMIDlet getMIDlet(){
		return midlet;
	}

	// 设置游戏状态
	public void setGameState(int currState){
		releaseRes();
		gameState = currState;
		buildUpObject();
		initGame();
	}
	
	// 资源释放
	private void releaseRes() {
		switch(gameState){
		case LOGOSPLASH:
			glogo.releaseRes();
			break;
		case MUSICSELECT:
			
			break;
		case GAMELOADING:
			break;
		case MAINMENU:
			gmenu.releaseRes();
			break;
		case NEWGAME:
			gstart.releaseRes();
			break;
		case TRAINING:
			break;
		case SETTING:
			break;
		case HIGHTSCORE:
			break;
		case GAMEHELP:
			break;
		case GAMEABOUT:
			break;
		case QUIT:
			break;
		}
		wait(3);
	}
	
	// 暂停
	public void wait(int millis){
		try {
			Thread.sleep(millis);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
	}
	
	// 获取当前游戏状态
	public int getGameState(){
		return gameState;
	}
	
	public GamePlayer[] getPlayer(){
		return gplayer;
	}
	
	private GameMIDlet midlet;
	private static boolean gameRun = false;
	private static int gameState;
	private final int deltaTime = 80;
	private static Image bufferImage = null;
	private static Graphics bg = null;
	private static GameLogo glogo = null;
	private static GameMenu gmenu = null;
	private static GameStart gstart = null;
	private static GameSetting gset = null;
	private static GameRecord grecord = null;
	private static GameHelp ghelp = null;
	private static GameAbout gabout = null;
	private static GamePlayer gplayer[] = null;
    
}

⌨️ 快捷键说明

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