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

📄 maincanvas.java

📁 J2ME游戏菜单界面,仿真三国无双4 ,原创 有源程序
💻 JAVA
字号:
package res;

import java.io.IOException;

import javax.microedition.lcdui.*;

import com.nokia.mid.ui.FullCanvas;

public class MainCanvas extends FullCanvas implements Runnable {

	int gameState;// 游戏状态

	boolean isRunning;

	boolean isCurrentDisplay;

	boolean isKeyPressed;

	boolean isThreadStarting;

	int keyCode;

	Thread thread;

	int x, y;

	static Image Background, Bicon, Character, Faction;

	boolean bFalgMove;

	int rgbDate[];

	int BackgroundNumber, CharacterXNumber, CharacterYNumber, BiconNumberCol,
			FactionNumber;

	int ColorCounter;

	ModelMidlet midlet;

	static final int SCREEN_WIDTH = 176;// 屏幕宽度

	static final int SCREEN_HEIGHT = 208;// 屏幕高度

	public MainCanvas(ModelMidlet midlet) {
		this.midlet = midlet;
		thread = new Thread(this);
		startThread();
	}

	public void startThread() {
		isRunning = true;
		thread.start();
		isThreadStarting = true;
		gameState = GS_INIT;
	}

	public void paint(Graphics g) {
		switch (gameState) {
		case GS_LOGO:
			drawLogo(g);
			break;
		case GS_INIT:
			drawInit(g);
			break;
		case GS_MAIN:
			drawMain(g);
			break;
		case GS_PLAY:
			drawPlay(g);
			break;
		case GS_HELP:
			drawHelp(g);
			break;
		case GS_ABOUT:
			drawAbout(g);
			break;
		}
	}

	public void run() {
		while (isRunning) {
			if (isCurrentDisplay) {
				switch (gameState) {
				case GS_LOGO:
					procLogo();
					break;
				case GS_INIT:
					procInit();
					break;
				case GS_MAIN:
					procMain();
					break;
				case GS_PLAY:
					procPlay();
					break;
				case GS_HELP:
					procHelp();
					break;
				case GS_EXIT:
					procExit();
					break;
				}
				repaint();
				sleep(SLEEP_TIME);
			} else {
				sleep(LONG_SLEEP_TIME);
			}
		}
	}

	public void keyPressed(int keyCode) {
		isKeyPressed = true;
		this.keyCode = getKeyCode(keyCode);
	}

	public void keyReleased(int keyCode) {
		isKeyPressed = false;
	}

	public int getKeyCode(int keyCode) {
		int key = getGameAction(keyCode);
		switch (key) {
		case UP:
			return KB_UP;
		case DOWN:
			return KB_DOWN;
		case LEFT:
			return KB_LEFT;
		case RIGHT:
			return KB_RIGHT;
		default:
			break;
		}
		switch (keyCode) {
		case KEY_NUM0:
			return KB_0;
		case KEY_NUM1:
			return KB_1;
		case KEY_NUM2:
			return KB_2;
		case KEY_NUM3:
			return KB_3;
		case KEY_NUM4:
			return KB_4;
		case KEY_NUM5:
			return KB_5;
		case KEY_NUM6:
			return KB_6;
		case KEY_NUM7:
			return KB_7;
		case KEY_NUM8:
			return KB_8;
		case KEY_NUM9:
			return KB_9;
		case KEY_STAR:
			return KB_STAR;
		case KEY_POUND:
			return KB_POUND;
		case KEY_LEFTSOFT:
			return KB_COMMAND_LEFT;
		case KEY_RIGHTSOFT:
			return KB_COMMAND_RIGHT;
		case KEY_UP:
			return KB_UP;
		case KEY_DOWN:
			return KB_DOWN;
		case KEY_LEFT:
			return KB_LEFT;
		case KEY_RIGHT:
			return KB_RIGHT;
		case KEY_CENTER:
			return KB_CENTER;
		default:
			break;
		}
		return KB_NONE;
	}

	public void sleep(int time) {
		try {
			Thread.sleep(time);
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	/**
	 * 游戏退出处理方法
	 */

	public void procExit() {
		// TODO Auto-generated method stub
		isRunning = false;
		midlet.quitApp();
	}

	public void procHelp() {
		// TODO Auto-generated method stub

	}

	public void procPlay() {
		// TODO Auto-generated method stub
		KeyOption();
	}

	public void procMain() {
		// TODO Auto-generated method stub

	}

	/**
	 * 游戏初始化处理方法
	 */

	public void procInit() {
		// TODO Auto-generated method stub
		rgbDate = new int[SCREEN_WIDTH * SCREEN_HEIGHT];
		for (int i = 0; i < rgbDate.length; i++) {
			rgbDate[i] = 0x7f000000;
		}
		x = 0;
		y = 78;
		LoadplayImage();
		gameState = GS_PLAY;
	}

	public void procLogo() {
		// TODO Auto-generated method stub

	}

	/**
	 * 游戏功能选项菜单键控处理方法
	 */

	public void KeyOption() {
		switch (keyCode) {
		case KB_UP:
			if (y >= 105) {
				y -= 27;
			} else {
				y = 132;
			}
			if (CharacterYNumber > 0) {
				CharacterYNumber--;
			} else {
				CharacterYNumber = 2;
			}
			break;
		case KB_DOWN:
			if (y <= 105) {
				y += 27;
			} else {
				y = 78;
			}
			if (CharacterYNumber < 2) {
				CharacterYNumber++;
			} else {
				CharacterYNumber = 0;
			}
			break;
		case KB_LEFT:
			bFalgtempY();
			break;

		case KB_RIGHT:
			bFalgtempY();
			break;

		case KB_COMMAND_RIGHT:
			gameState = GS_EXIT;
			break;
		}
		keyCode = KB_NONE;
	}

	/**
	 * 状态判断
	 */

	public void bFalgtempY() {
		switch (y) {
		case 78:
			if (bFalgMove == false) {
				CharacterXNumber = 0;
				bFalgMove = true;
				FactionNumber = 0;
				BackgroundNumber = 0;
				BiconNumberCol = 0;
				CharacterXNumber = 0;
			} else {
				CharacterXNumber = 1;
				bFalgMove = false;
				FactionNumber = 1;
				BackgroundNumber = 1;
				BiconNumberCol = 1;
				CharacterXNumber = 1;
			}
			break;
		case 105:
			if (bFalgMove == false) {
				CharacterXNumber = 0;
				bFalgMove = true;
				FactionNumber = 0;
				BackgroundNumber = 0;
				BiconNumberCol = 0;
				CharacterXNumber = 0;
			} else {
				CharacterXNumber = 1;
				bFalgMove = false;
				FactionNumber = 1;
				BackgroundNumber = 1;
				BiconNumberCol = 1;
				CharacterXNumber = 1;
			}
			break;
		case 132:
			if (bFalgMove == false) {
				CharacterXNumber = 0;
				bFalgMove = true;
				FactionNumber = 0;
				BackgroundNumber = 0;
				BiconNumberCol = 0;
				CharacterXNumber = 0;
			} else {
				CharacterXNumber = 1;
				bFalgMove = false;
				FactionNumber = 1;
				BackgroundNumber = 1;
				BiconNumberCol = 1;
				CharacterXNumber = 1;
			}
			break;
		}
	}

	public void drawAbout(Graphics g) {
		// TODO Auto-generated method stub

	}

	public void drawHelp(Graphics g) {
		// TODO Auto-generated method stub

	}

	/**
	 * 游戏菜单画笔
	 */

	public void drawPlay(Graphics g) {
		// TODO Auto-generated method stub
		clearScreen(g, 0, 0, 0);
		drawBackground(g);
		drawBicon(g);
		bFalgMovePhoto(g);
		drawCharacter(g);
		drawFaction(g);
		drawGameover(g);
	}

	/**
	 * 游戏菜单选择画笔
	 */

	public void bFalgMovePhoto(Graphics g) {
		switch (y) {
		case 78:
			g.drawRGB(rgbDate, 0, 80, x, 105, 80, 27, true);
			g.drawRect(x, 105, 80, 27);
			g.drawRGB(rgbDate, 0, 80, x, 132, 80, 27, true);
			g.drawRect(x, 132, 80, 27);
			break;
		case 105:
			g.drawRGB(rgbDate, 0, 80, x, 78, 80, 27, true);
			g.drawRect(x, 78, 80, 27);
			g.drawRGB(rgbDate, 0, 80, x, 132, 80, 27, true);
			g.drawRect(x, 132, 80, 27);
			break;
		case 132:
			g.drawRGB(rgbDate, 0, 80, x, 78, 80, 27, true);
			g.drawRect(x, 78, 80, 27);
			g.drawRGB(rgbDate, 0, 80, x, 105, 80, 27, true);
			g.drawRect(x, 105, 80, 27);
			break;
		}
	}

	public void drawGameover(Graphics g) {
		g.setFont(Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN,
				Font.SIZE_SMALL));
		g.setColor(ColorCounter, ColorCounter, ColorCounter);
		g.drawString(" 返 回 ", 132, 194, 0);
		if (ColorCounter <= 240) {
			ColorCounter += 15;
		} else {
			ColorCounter = 0;
		}
	}

	public void drawMain(Graphics g) {
		// TODO Auto-generated method stub

	}

	public void drawInit(Graphics g) {
		// TODO Auto-generated method stub

	}

	public void drawLogo(Graphics g) {
		// TODO Auto-generated method stub

	}

	public static void Brush(Graphics g, Image photo, int x, int y, int width,
			int height, int col, int row) {
		g.setClip(x, y, width, height);
		g.drawImage(photo, x - row * width, y - col * height, Graphics.TOP
				| Graphics.LEFT);
		clearClip(g);
	}

	/**
	 * 游戏菜单背景画笔
	 */

	public void drawBackground(Graphics g) {
		Brush(g, Background, 0, 0, 176, 192, 0, BackgroundNumber);
	}

	/**
	 * 游戏菜单人物属性画笔
	 */

	public void drawCharacter(Graphics g) {
		Brush(g, Character, 0, 0, 176, 192, CharacterXNumber, CharacterYNumber);
	}

	/**
	 * 游戏菜单按钮画笔
	 */

	public void drawBicon(Graphics g) {
		Brush(g, Bicon, 0, 78, 80, 81, BiconNumberCol, 0);
	}

	/**
	 * 游戏菜单类别画笔
	 */

	public void drawFaction(Graphics g) {
		Brush(g, Faction, 23, 36, 40, 20, FactionNumber, 0);
	}

	public static void clearClip(Graphics g) {
		g.setClip(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
	}

	public static void clearScreen(Graphics g, int R, int G, int B) {
		g.setColor(R, G, B);
		g.fillRect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
	}

	static void LoadplayImage() {
		try {
			Background = Image.createImage("/src/background.png");
			Bicon = Image.createImage("/src/Bicon.png");
			Character = Image.createImage("/src/character.png");
			Faction = Image.createImage("/src/faction.png");
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	// 游戏状态定义
	public static final int GS_LOGO = 0XFF01;

	public static final int GS_INIT = 0XFF02;

	public static final int GS_MAIN = 0XFF03;

	public static final int GS_PLAY = 0XFF04;

	public static final int GS_HELP = 0XFF05;

	public static final int GS_ABOUT = 0XFF06;

	public static final int GS_EXIT = 0XFF07;

	public static final int GS_SCORE = 0XFF08;

	// 睡眠时间定义
	public static final int SLEEP_TIME = 60;

	public static final int LONG_SLEEP_TIME = 200;

	// 按键值定义
	public static final int KB_NONE = 0X0;

	public static final int KB_0 = 0XFFFF00;

	public static final int KB_1 = 0XFFFF01;

	public static final int KB_2 = 0XFFFF02;

	public static final int KB_3 = 0XFFFF03;

	public static final int KB_4 = 0XFFFF04;

	public static final int KB_5 = 0XFFFF05;

	public static final int KB_6 = 0XFFFF06;

	public static final int KB_7 = 0XFFFF07;

	public static final int KB_8 = 0XFFFF08;

	public static final int KB_9 = 0XFFFF09;

	public static final int KB_STAR = 0XFFFF10;

	public static final int KB_POUND = 0XFFFF11;

	public static final int KB_LEFT = 0XFFFF12;

	public static final int KB_UP = 0XFFFF13;

	public static final int KB_RIGHT = 0XFFFF14;

	public static final int KB_DOWN = 0XFFFF15;

	public static final int KB_SELECT = 0XFFFF16;

	public static final int KB_CENTER = KB_SELECT;

	public static final int KB_COMMAND_LEFT = 0XFFFF17;

	public static final int KB_COMMAND_RIGHT = 0XFFFF18;

	// 根据不同类型的手机而不同
	public static final int KEY_UP = -1;

	public static final int KEY_DOWN = -2;

	public static final int KEY_LEFT = -3;

	public static final int KEY_RIGHT = -4;

	public static final int KEY_CENTER = -5;

	public static final int KEY_LEFTSOFT = -6;

	public static final int KEY_RIGHTSOFT = -7;
}

⌨️ 快捷键说明

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