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

📄 gamemain.java

📁 一个锻炼记忆力的小游戏
💻 JAVA
字号:

import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.game.GameCanvas;


public class GameMain extends GameCanvas{
 
	private static final long MILLS_PER_FRAME = 50;	// 游戏刷新时间
	public static final int LEFT_SOFT = -6;
	public static final int RIGHT_SOFT = -7;
	
	public static final int STATE_LOGO = 1;
	public static final int STATE_MENU = 2;
	public static final int STATE_PLAY = 3;
	private int iGameState  = STATE_LOGO;
//	private int iGameState  = STATE_LOGO;
	private int iAction;
	
	public final int WIDTH, HEIGHT;					// 设置游戏画布大小
	public Graphics gameGraphics;					// GameMain的Graphics(画笔)
	Logo logo;
	Menu menu;
	GamePlay gamePlay;
    GameMIDlet gameMIDlet;
    
	protected GameMain(GameMIDlet mid) {			// 构造方法
		super( false );
		setFullScreenMode( true );
		gameMIDlet = mid;
		gameGraphics = this.getGraphics();			// 获取GameMain的Graphics
		WIDTH = this.getWidth(); HEIGHT = this.getHeight();
		logo = new Logo(this);
	}
	
	private final int convertKey(int keyCode) { 
		if (keyCode >= Canvas.KEY_NUM0 && keyCode <= Canvas.KEY_NUM9 ||
				keyCode == LEFT_SOFT || keyCode == RIGHT_SOFT || 
				keyCode == Canvas.KEY_POUND || keyCode == Canvas.KEY_STAR) {
			return keyCode;
		} else {
			return getGameAction(keyCode);
		} 
	}
	public void keyReleased(int keyCode) {
		iAction = convertKey( keyCode );
		switch(iGameState){
		case STATE_LOGO:
			break;
		case STATE_MENU:
			break;
		case STATE_PLAY:
			gamePlay.keyReleased( iAction );
			break;
		}
	}
	public void keyPressed(int keyCode){			// 按键事件处理方法
		iAction = convertKey( keyCode );
		switch(iGameState){
		case STATE_LOGO:
			logo.keyPressed( iAction );
			break;
		case STATE_MENU:
			menu.keyPressed( iAction );
			break;
		case STATE_PLAY:
			gamePlay.keyPressed( iAction );
			break;
		}
	}
	/*
	 * 游戏主循环
	 */
	private boolean bRun = true;
	public final void gameLoop() {					// 游戏主循环方法
		long time_old, time_elapsed = 0;
		while(bRun){
			time_old = System.currentTimeMillis();	// currentTimeMillis()方法取得系统参考时间
			update( time_elapsed );
			render();
			time_elapsed = System.currentTimeMillis() - time_old; // 用掉的时间值
			if( MILLS_PER_FRAME > time_elapsed ){	// 休眠掉每帧update和render后用剩的时间
				try {
					Thread.sleep( MILLS_PER_FRAME - time_elapsed );
				} catch (InterruptedException e) {
				}
				time_elapsed = MILLS_PER_FRAME;		// 用掉的时间设在预定每帧消耗的时间
			}
		}
	}
	/*
	 * 游戏绘图方法
	 */
	private final void render()  {
		switch(iGameState){
		case STATE_LOGO:
			logo.render();
			break;
		case STATE_MENU:
			menu.render();
			break;
		case STATE_PLAY:
			gamePlay.render();
			break;
		}
		flushGraphics(); 
	}
	/*
	 * 游戏逻辑更新方法
	 */
	private long total_time_elapsed;	// 累计游戏循环总运行时间
	private final void update(long time_elapsed) {
		total_time_elapsed += time_elapsed;
		switch(iGameState){
		case STATE_LOGO:
			logo.update( time_elapsed );
			break;
		case STATE_MENU:
			menu.update( time_elapsed );
			break;
		case STATE_PLAY:
			gamePlay.update( time_elapsed );
			break;
		}
	}

	public void stateChange( int newState ) {
		switch(iGameState){
		case STATE_LOGO:
			if( newState == STATE_MENU ){
				logo.freeImages();
				menu = new Menu(this);
			}
			break;
		case STATE_MENU:
			if( newState == STATE_PLAY ){
				if( gamePlay == null )
					gamePlay = new GamePlay(this);
				menu.freeMenuImages();
			}
			break;
		}
		iGameState = newState;
	}

	public void exit() {
		bRun = false;
	}

}

⌨️ 快捷键说明

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