亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? mygamecanvas.java

?? 這是一款j2me的rpg 游戲
?? JAVA
?? 第 1 頁 / 共 3 頁
字號:
package org.gamecollege.j2me.rpg;

import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;
import javax.microedition.midlet.*;

import java.util.*;

/**
 * @author Jagie
 * 
 * TODO To change the template for this generated type comment go to Window -
 * Preferences - Java - Code Style - Code Templates
 */
public class MyGameCanvas extends GameCanvas implements CommandListener,
		Runnable {

	/**
	 * 游戲MIDlet
	 */
	MIDlet midlet;

	/**
	 * 游戲運行開關
	 */
	boolean isRunning;

	/**
	 * 消息隊列
	 */
	Vector messageQueue;

	public static final int GAME_LOOP_INTERVAL = 100;

	MyRPGGameMIDlet myRPGGameMIDlet;

	public static final int STATUS_SHOWFLASH = 0;//顯示flash

	public static final int STATUS_POPMENU_CONFIRM = 1;//確認買賣

	public static final int STATUS_BUYING = 11;//購買道具

	public static final int STATUS_WALKING = 2;//主角行走

	public static final int STATUS_FIGHTING = 3;////戰斗

	public static final int STATUS_MAIN_MENU = 4;//主菜單

	public static final int STATUS_HELP = 5;//幫助

	public static final int STATUS_ABOUT = 6;//關于

	public static final int STATUS_PLAYER_INFO = 8;//主角屬性

	public static final int STATUS_MISSION_INFO = 9;//任務列表

	public static final int STATUS_GAME_OVER = 10;//游戲結束

	public static final int STATUS_LOADING_LEVEL = 12;//裝載關卡

	public static final int STATUS_SALING = 13;//賣東西

	public static final int STATUS_FIGHT_OVER = 14;//戰斗結束

	public static final int STATUS_MISSION_OVER = 15;//任務結束

	private int gameStatus = STATUS_SHOWFLASH;

	//屏幕寬度,高度
	int width, height;

	//主角
	Player myPlayer;

	LayerManager lm;

	//當前關卡號
	int curLevelNo;

	//1:買賣武器護具,2:藥品買賣
	int saleType;

	//當前菜單項索引
	int curMenuIndex;

	//當前關卡
	Level curLevel;

	//可出售的武器集合
	Vector weaponVec = new Vector();

	//可出售的護具集合
	Vector jacketVec = new Vector();

	//可出售的藥品集合
	Vector medicVec = new Vector();

	//購買武器護具時,區別到底是武器還是護具
	boolean isArm;

	LayerManager fightLayerManager;

	GameInnerThread engine;

	String curMessage;

	Thread gameThread;

	long lastPopMsgTime;

	int beforeFightHp;

	int beforeFightExp;

	int beforeFightMp;

	int beforeFightMoney;

	int beforeFightHp_npc;

	//是否在戰斗時查看技能
	boolean popSkill;

	long lastFightOverTime;

	long lastGameOverTime;

	//在戰斗中隨機出現的敵人
	NPC ranEnemy;

	//戰斗結束后獲得的技能
	Skill ranSkill;

	Sprite fightBackGround;

	int curMenuIndex2;

	int killTigerCount;

	GameStore gs;

	boolean hasStored;

	/*
	 * (non-Javadoc)
	 * 
	 * @see org.gamecollege.j2me.rpg.RPGGameCanvas#drawMessage(javax.microedition.lcdui.Graphics)
	 */

	public void commandAction(Command com, Displayable disp) {
		if (com == List.SELECT_COMMAND) {

			gs.deleteRecord();
			myPlayer = new Player(ResourceLoader.StringResource[0]);
			List list = (List) disp;
			curLevelNo = list.getSelectedIndex();
			curLevel = new Level();
			LevelLoader.instance.loadLevel(curLevel);

			Display.getDisplay(myRPGGameMIDlet).setCurrent(this);
		} else if (com.getCommandType() == Command.BACK) {
			this.setGameStatus(STATUS_MAIN_MENU);
			Display.getDisplay(myRPGGameMIDlet).setCurrent(this);
		}
	}

	public void showLevels() {
		List list = new List(ResourceLoader.StringResource[25], Choice.IMPLICIT);
		list.append(ResourceLoader.StringResource[24], null);
		list.addCommand(new Command(ResourceLoader.StringResource[34],
				Command.BACK, 1));
		list.setCommandListener(this);

		Display.getDisplay(myRPGGameMIDlet).setCurrent(list);
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see org.gamecollege.j2me.rpg.RPGGameCanvas#stopGame()
	 */
	public void stopGame() {
		System.gc();
		// TODO Auto-generated method stub
		engine.stop();
		//this.isRunning=false;

	}

	protected void drawMessage() {
		Graphics g = this.getGraphics();
		if (curMessage != null) {
			g.setColor(255, 255, 128);

			g.drawImage(ResourceLoader.menu[17], width / 2, height - 20,
					Graphics.HCENTER | Graphics.TOP);
			g.setFont(Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN,
					Font.SIZE_SMALL));

			g.drawString(curMessage, width / 2, height - 18, Graphics.HCENTER
					| Graphics.TOP);

		}

	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see org.gamecollege.j2me.rpg.RPGGameCanvas#input()
	 */
	protected void input() {

		int keyStates = getKeyStates();

		switch (getGameStatus()) {
		//主菜單狀態
		case STATUS_MAIN_MENU:
			if (gs.canLoad()) {
				handleMenuKeyBrowse(keyStates, 4);
			} else {
				handleMenuKeyBrowse(keyStates, 3);
			}

			if ((keyStates & FIRE_PRESSED) != 0) {

				if (hasStored) {

					switch (curMenuIndex) {
					case 0:
						showLevels();
						break;
					case 1:
						loadGame();
						break;
					case 2:
						setGameStatus(STATUS_ABOUT);
						break;
					case 3:
						setGameStatus(STATUS_HELP);
						break;
					case 4:
						MyRPGGameMIDlet.midlet.notifyDestroyed();
						break;
					}
				} else {
					switch (curMenuIndex) {
					case 0:
						showLevels();
						break;
					case 1:
						setGameStatus(STATUS_ABOUT);
						break;
					case 2:
						setGameStatus(STATUS_HELP);
						break;
					case 3:
						MyRPGGameMIDlet.midlet.notifyDestroyed();
						break;
					}
				}
			}
			break;
			//幫助界面
		case STATUS_HELP:
			//關于界面
		case STATUS_ABOUT:
			if (keyStates != 0) {
				setGameStatus(STATUS_MAIN_MENU);
			}
			break;
			//行走界面
		case STATUS_WALKING:
			//按著左鍵
			if ((keyStates & LEFT_PRESSED) != 0) {
				myPlayer.move(Player.LEFT);
			}
			//按著右鍵
			else if ((keyStates & RIGHT_PRESSED) != 0) {
				myPlayer.move(Player.RIGHT);
			}
			//按著上鍵
			else if ((keyStates & UP_PRESSED) != 0) {
				myPlayer.move(Player.UP);
			}
			//按著下鍵
			else if ((keyStates & DOWN_PRESSED) != 0) {
				myPlayer.move(Player.DOWN);
			} else {
				//未按方向鍵
				myPlayer.move(Player.STILL);
			}
			break;
			//確認界面
		case STATUS_POPMENU_CONFIRM:
			handleMenuKeyBrowse(keyStates, 2);
			if ((keyStates & FIRE_PRESSED) != 0) {
				switch (curMenuIndex) {
				case 0:

					setGameStatus(STATUS_BUYING);
					break;
				case 1:

					setGameStatus(STATUS_SALING);

					break;
				case 2:
					setGameStatus(STATUS_WALKING);
					break;

				}

			}
			break;
			//購買物品界面
		case STATUS_BUYING:
			int maxMenuIndex = 0;
			Property pro = null;
			switch (this.saleType) {
			//武器護具
			case 1:
				//注意多了一個[退出]菜單
				if (this.isArm) {
					maxMenuIndex = this.weaponVec.size();
					if (curMenuIndex < weaponVec.size()) {
						pro = (Property) weaponVec.elementAt(curMenuIndex);
					}
				} else {
					maxMenuIndex = this.jacketVec.size();
					if (curMenuIndex < jacketVec.size()) {
						pro = (Property) jacketVec.elementAt(curMenuIndex);
					}
				}
				break;
			//藥品
			case 2:
				if (curMenuIndex < medicVec.size()) {
					pro = (Property) medicVec.elementAt(curMenuIndex);
				}
				maxMenuIndex = this.medicVec.size();
				break;
			}
			handleMenuKeyBrowse(keyStates, maxMenuIndex);
			if ((keyStates & LEFT_PRESSED) != 0
					|| (keyStates & RIGHT_PRESSED) != 0) {
				isArm = !isArm;
			} else if ((keyStates & FIRE_PRESSED) != 0) {
				if (pro != null) {
					if (pro.price <= myPlayer.money) {
						myPlayer.addSth(pro);
						myPlayer.money -= pro.price;
					}
				} else {
					setGameStatus(STATUS_POPMENU_CONFIRM);
				}
			}
			break;
			//出售物品界面
		case STATUS_SALING:
			Vector ps = null;
			if (this.saleType == 1) {
				if (isArm) {
					ps = myPlayer.weaponVec;
				} else {
					ps = myPlayer.jacketVec;
				}

			} else {
				ps = myPlayer.medicVec;
			}
			maxMenuIndex = ps.size();
			handleMenuKeyBrowse(keyStates, maxMenuIndex);
			if ((keyStates & LEFT_PRESSED) != 0
					|| (keyStates & RIGHT_PRESSED) != 0) {
				isArm = !isArm;
			} else if ((keyStates & FIRE_PRESSED) != 0) {
				if (curMenuIndex < ps.size()) {
					pro = (Property) ps.elementAt(curMenuIndex);
					myPlayer.removeSth(pro);
					//賣東西,只能得到80%的收益
					myPlayer.money += pro.price * 8 / 10;
				} else {
					setGameStatus(STATUS_POPMENU_CONFIRM);
				}

			}
			break;
			//戰斗界面
		case STATUS_FIGHTING:
			if ((keyStates & LEFT_PRESSED) != 0) {
				popSkill = false;
				curMenuIndex2 = 0;
				curMenuIndex = curMenuIndex - 1 >= 0 ? curMenuIndex - 1 : 2;

			} else if ((keyStates & RIGHT_PRESSED) != 0) {
				popSkill = false;
				curMenuIndex2 = 0;
				curMenuIndex = curMenuIndex + 1 > 2 ? 0 : curMenuIndex + 1;
			} else if ((keyStates & FIRE_PRESSED) != 0) {
				if (!popSkill) {
					switch (curMenuIndex) {
					case 0:
						if (myPlayer.attackStatus == -1) {
							myPlayer.attackStatus = 0;
						}

						break;
					case 1:
						//顯示技能列表
						this.popSkill = true;
						break;

					case 2:
						//退出戰斗
						synchronized (engine) {
							this.setGameStatus(STATUS_WALKING);
							this.ranEnemy = null;
							myPlayer.attackStatus = -1;
						}
						break;
					}
				} else {
					popSkill = false;
					if (myPlayer.skillVec.size() > 0) {
						fireSkill(curMenuIndex2);
					}

				}

			} else {
				this.handleMenuKeyBrowse2(keyStates,
						myPlayer.skillVec.size() - 1);
			}
			break;
			//主角屬性界面
		case STATUS_PLAYER_INFO:
			Vector v = this.weaponVec;
			switch (curMenuIndex) {
			case 1:
				v = myPlayer.weaponVec;
				break;
			case 2:
				v = myPlayer.medicVec;
				break;
			case 3:
				v = myPlayer.jacketVec;
				break;
			case 4:
				v = myPlayer.skillVec;
				break;

			}
			if ((keyStates & LEFT_PRESSED) != 0) {
				curMenuIndex = curMenuIndex - 1 >= 0 ? curMenuIndex - 1 : 4;
			} else if ((keyStates & RIGHT_PRESSED) != 0) {
				curMenuIndex = curMenuIndex + 1 > 4 ? 0 : curMenuIndex + 1;
			} else if ((keyStates & FIRE_PRESSED) != 0) {
				if (curMenuIndex == 0) {
					this.setGameStatus(STATUS_WALKING);
				} else {
					if (curMenuIndex2 < v.size() && curMenuIndex != 4) {
						RPGObject ro = (RPGObject) v.elementAt(curMenuIndex2);
						myPlayer.useObject(ro);
					} else {
						this.setGameStatus(STATUS_WALKING);
					}
				}
			} else {

				handleMenuKeyBrowse2(keyStates, v.size());
			}
			break;
		}

	}

	private void fireSkill(int index) {
		Skill sk = (Skill) myPlayer.skillVec.elementAt(index);
		if (sk.requiredLevel <= myPlayer.rank && sk.hpCost <= myPlayer.hp
				&& sk.mpCost <= myPlayer.mp) {
			myPlayer.fireSkill = sk;
			myPlayer.setAttackStatusSprite(1979);
		}

	}

	public void handleGameOver() {
		ranSkill = null;
		this.ranEnemy = null;
		myPlayer.attackStatus = -1;
		myPlayer.hp = 10;
		saveGame();
		engine.stop();
		lastGameOverTime = System.currentTimeMillis();
		this.setGameStatus(STATUS_GAME_OVER);
	}

	/**
	 * 菜單上下遍歷的通用方法
	 * @param keyStates 按鍵狀態
	 * @param maxMenuIndex 最大的菜單索引
	 */
	private void handleMenuKeyBrowse(int keyStates, int maxMenuIndex) {

		if ((keyStates & DOWN_PRESSED) != 0) {
			curMenuIndex = curMenuIndex + 1 > maxMenuIndex ? 0
					: curMenuIndex + 1;
		}

		if ((keyStates & UP_PRESSED) != 0) {
			curMenuIndex = curMenuIndex - 1 < 0 ? maxMenuIndex
					: curMenuIndex - 1;
		}
	}

	private void handleMenuKeyBrowse2(int keyStates, int maxMenuIndex) {

		if ((keyStates & DOWN_PRESSED) != 0) {
			curMenuIndex2 = curMenuIndex2 + 1 > maxMenuIndex ? 0
					: curMenuIndex2 + 1;
		}

		if ((keyStates & UP_PRESSED) != 0) {
			curMenuIndex2 = curMenuIndex2 - 1 < 0 ? maxMenuIndex
					: curMenuIndex2 - 1;
		}
	}

	public void startGame() {
		this.isRunning = true;
		Thread t = new Thread(this);
		this.gameThread = t;
		
		t.start();

	}

	public void handleRanEnemy() {
		if (this.ranEnemy != null) {
			this.constructsFightMap();
			this.setGameStatus(STATUS_FIGHTING);
			//System.out.println("handleRanEnemy over");
			//engine.ranEnemy = null;
		}
	}

	public void handleFightOver() {
		if (ranEnemy.ID == 3) {
			this.killTigerCount++;
		}
		gameStatus = STATUS_FIGHT_OVER;
		lastFightOverTime = System.currentTimeMillis();
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see org.gamecollege.j2me.rpg.RPGGameCanvas#render(javax.microedition.lcdui.Graphics)
	 */
	protected void render() {
		Graphics g = this.getGraphics();
		g.setColor(255, 255, 255);
		g.fillRect(0, 0, width, height);
		g.setColor(0, 0, 0);

		switch (getGameStatus()) {

		case STATUS_WALKING:

			lm.paint(g, 0, 0);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
www.成人在线| 国产米奇在线777精品观看| 欧美mv和日韩mv国产网站| 日韩成人一区二区| 6080国产精品一区二区| 老汉av免费一区二区三区| 欧美tickling网站挠脚心| 国内精品视频666| 欧美国产日韩一二三区| 色婷婷av一区二区三区大白胸| 亚洲啪啪综合av一区二区三区| 在线免费av一区| 日本不卡一区二区| 久久综合色综合88| 成人免费毛片aaaaa**| 亚洲免费三区一区二区| 欧美疯狂性受xxxxx喷水图片| 久久97超碰色| 日韩一区在线看| 欧美年轻男男videosbes| 激情丁香综合五月| 成人免费一区二区三区视频| 欧美揉bbbbb揉bbbbb| 精品一区二区三区在线播放视频 | 2019国产精品| 99久久综合色| 蜜臀a∨国产成人精品| 国产精品久久久久天堂| 欧美日韩不卡在线| 国产91在线|亚洲| 午夜伊人狠狠久久| 中文字幕欧美激情| 欧美一级片在线看| 94-欧美-setu| 国产原创一区二区三区| 亚洲福中文字幕伊人影院| 久久久精品黄色| 欧美老肥妇做.爰bbww| 成人性生交大片| 美国精品在线观看| 亚洲美女免费在线| 国产精品免费视频一区| 日韩欧美一区二区在线视频| 色综合夜色一区| 国产成a人亚洲精品| 日本免费在线视频不卡一不卡二 | 91视视频在线观看入口直接观看www | 亚洲一区二区三区在线| 26uuu欧美日本| 欧美日本一道本| 99re这里只有精品首页| 国产一区二区三区免费播放| 一区二区三区在线播放| 国产欧美日韩精品一区| 日韩欧美一级精品久久| 欧美乱熟臀69xxxxxx| 91麻豆免费看| 波多野结衣中文字幕一区 | 成人精品亚洲人成在线| 免费观看30秒视频久久| 亚洲va在线va天堂| 亚洲卡通欧美制服中文| 国产精品免费久久| 久久精品亚洲精品国产欧美kt∨| 日韩欧美中文字幕精品| 日韩一区二区精品葵司在线| 777色狠狠一区二区三区| 欧美写真视频网站| 欧美亚洲动漫另类| 色视频欧美一区二区三区| 99精品久久99久久久久| 国产成人丝袜美腿| 国产91精品入口| 国产成人综合亚洲网站| 成人中文字幕合集| 成人av电影在线| 97超碰欧美中文字幕| 91玉足脚交白嫩脚丫在线播放| 成人性视频免费网站| 国产成人精品亚洲午夜麻豆| 国产成人高清在线| av电影在线观看一区| 91麻豆视频网站| 欧美日本在线一区| 51久久夜色精品国产麻豆| 欧美一区二区成人| 日韩欧美一区中文| 国产亚洲精品久| 久久久久97国产精华液好用吗| 国产无人区一区二区三区| 国产女人水真多18毛片18精品视频| 国产精品视频麻豆| 亚洲丝袜精品丝袜在线| 亚洲自拍与偷拍| 日本大胆欧美人术艺术动态| 激情久久五月天| 99久久精品国产毛片| 精品视频一区二区不卡| 日韩欧美自拍偷拍| 国产精品二三区| 亚洲国产中文字幕在线视频综合 | 色综合激情久久| 欧美日韩一区不卡| 久久久亚洲精品石原莉奈| 国产精品久99| 亚洲18女电影在线观看| 国产一区二区伦理| 91视频在线观看免费| 亚洲精品欧美在线| 美女视频一区在线观看| 成人一级片在线观看| 欧洲精品视频在线观看| 26uuu亚洲婷婷狠狠天堂| 亚洲精选一二三| 日本午夜一区二区| 成人高清在线视频| 欧美一区二区三区男人的天堂| 久久久精品免费免费| 亚洲高清中文字幕| 国产成人小视频| 在线成人免费视频| 中文字幕第一区第二区| 三级欧美韩日大片在线看| 成人性视频免费网站| 69精品人人人人| 国产精品久线在线观看| 日韩av电影免费观看高清完整版| 成人综合在线观看| 日韩一区二区电影| 亚洲男同性恋视频| 国产盗摄视频一区二区三区| 欧美精品电影在线播放| 最新国产成人在线观看| 国产一区二区三区精品欧美日韩一区二区三区| av中文字幕不卡| 久久久一区二区三区捆绑**| 五月婷婷综合网| 色综合久久久久| 国产欧美精品一区aⅴ影院| 麻豆精品新av中文字幕| 欧美片网站yy| 亚洲男人的天堂一区二区| 粉嫩一区二区三区在线看| 日韩色在线观看| 亚洲第一精品在线| 日本精品视频一区二区| 国产精品污污网站在线观看 | 亚洲国产一区二区在线播放| 大胆欧美人体老妇| 久久夜色精品一区| 另类小说色综合网站| 69成人精品免费视频| 亚洲va国产va欧美va观看| 91视频在线看| 一色屋精品亚洲香蕉网站| 国产成人免费xxxxxxxx| www国产成人免费观看视频 深夜成人网| 亚洲图片欧美色图| 色天使色偷偷av一区二区| 亚洲欧美偷拍另类a∨色屁股| 粉嫩高潮美女一区二区三区| 国产校园另类小说区| 国产精品中文有码| 欧美国产激情一区二区三区蜜月| 精品中文字幕一区二区| 精品国产亚洲一区二区三区在线观看 | 五月天视频一区| 欧美精品粉嫩高潮一区二区| 婷婷开心久久网| 555www色欧美视频| 人人超碰91尤物精品国产| 日韩一区二区免费在线观看| 免费高清视频精品| 日韩欧美视频一区| 国产一区二区三区四区在线观看| 精品久久久三级丝袜| 国产精品综合网| 中文字幕乱码亚洲精品一区| 99re这里只有精品6| 亚洲综合久久久| 777色狠狠一区二区三区| 另类小说图片综合网| 国产丝袜美腿一区二区三区| 成人avav影音| 亚洲成年人网站在线观看| 69久久99精品久久久久婷婷 | 午夜久久电影网| 日韩视频免费直播| 狠狠色丁香久久婷婷综合丁香| 久久精品欧美日韩| 99久久婷婷国产综合精品电影| 一区二区三区中文字幕精品精品| 欧美日韩精品一区二区三区| 九九精品视频在线看| 国产精品久久午夜夜伦鲁鲁| 欧美午夜片在线观看| 久久99精品一区二区三区三区| 国产亚洲成av人在线观看导航| 91色.com| 久久成人免费网站|