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

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

?? gameinnerthread.java

?? 這是一款j2me的rpg 游戲
?? JAVA
字號:
/*
 * Created on 2005-7-20
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
package org.gamecollege.j2me.rpg;


import java.util.Enumeration;
import java.util.Random;
import java.util.Vector;

import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.game.Sprite;
import javax.microedition.media.MediaException;
import javax.microedition.media.Player;
import javax.microedition.media.PlayerListener;

/**
 * @author Jagie
 * 
 * TODO To change the template for this generated type comment go to Window -
 * Preferences - Java - Code Style - Code Templates
 */
public class GameInnerThread implements Runnable, PlayerListener {
	/*
	 * 當音樂播放完畢時,則又重新開始
	 * 
	 * @see javax.microedition.media.PlayerListener#playerUpdate(javax.microedition.media.Player,
	 *      java.lang.String, java.lang.Object)
	 */
	public void playerUpdate(Player p, String event, Object arg2) {
		if (event.equals(PlayerListener.END_OF_MEDIA)) {
			try {
				p.start();
			} catch (MediaException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}

	MyGameCanvas canvas;

	boolean isRunning;

	Random ran = new Random();

	Vector allAvaliableRanEnemy;

	Vector allAvaliableSkill;

	private Sprite[] randFightBgs;



	private Thread me;

	public GameInnerThread(MyGameCanvas canvas) {
		this.canvas = canvas;

	}

	public void init() {

		if (canvas.curLevel == null) {
			return;
		}

		allAvaliableRanEnemy = new Vector();
		Enumeration e = canvas.curLevel.npcs.elements();

		while (e.hasMoreElements()) {
			NPC npc = (NPC) e.nextElement();
			if (npc.type == 5) {
				allAvaliableRanEnemy.addElement(npc);

			}
		}

		allAvaliableSkill = new Vector();
		e = canvas.curLevel.skills.elements();

		while (e.hasMoreElements()) {
			Skill skill = (Skill) e.nextElement();

			allAvaliableSkill.addElement(skill);

		}
		
		ResourceLoader.player.addPlayerListener(this);

		
	}

	public void start() {
		isRunning = true;
		init();
		playMidi();
		me = new Thread(this);
		me.start();
	}

	public void stop() {
		isRunning = false;
		try {
			ResourceLoader.player.stop();
		} catch (MediaException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	public Sprite getRandomFightBg() {
		return randFightBgs[Math.abs(ran.nextInt()) % randFightBgs.length];
	}

	private void loadFightBgs() {
		Vector v = canvas.curLevel.curMap.randFightBgImages;
		randFightBgs = new Sprite[v.size()];
		for (int i = 0; i < randFightBgs.length; i++) {
			randFightBgs[i] = new Sprite((Image) v.elementAt(i));
		}
	}

	public void run() {

		while (isRunning && me == Thread.currentThread()) {

			Map map = canvas.curLevel.curMap;

			switch (canvas.getGameStatus()) {
			//當游戲處于主角行走狀態時,所要做的事情就是產生隨機敵人
			case MyGameCanvas.STATUS_WALKING:
				if (map.isFightMap && canvas.ranEnemy == null) {
					if (randFightBgs == null) {
						loadFightBgs();
					} else if (canvas.myPlayer.moveTimes > 20) {
						int r = Math.abs(ran.nextInt())
								% allAvaliableRanEnemy.size();
						NPC src = (NPC) allAvaliableRanEnemy.elementAt(r);
						canvas.ranEnemy = cloneNpc(src);
						setNpcAttackState(canvas.ranEnemy, 0);
						//隨機敵人的Hp為主角
						canvas.ranEnemy.hp = canvas.myPlayer.hp;
						canvas.handleRanEnemy();
						canvas.myPlayer.moveTimes = 0;
					}
				}

				break;
				//當游戲處于戰斗狀態,所要做的事情就是改變英雄和敵人的動畫幀
			case MyGameCanvas.STATUS_FIGHTING:

				synchronized (this) {
					//NPC在攻擊
					if (canvas.myPlayer.attackStatus == -1) {
						canvas.myPlayer.setAttackStatusSprite(-1);
						int sleepTime = 2000;
						int state = canvas.ranEnemy.npcAttackState;
						if (state == 1 || state == 2) {
							sleepTime = 0;
						}

						try {
							Thread.sleep(sleepTime);
						} catch (InterruptedException e1) {
							// TODO Auto-generated catch block
							e1.printStackTrace();
						}

						state = state + 1 > 2 ? 0 : state + 1;

						setNpcAttackState(canvas.ranEnemy, state);
					} else {
						//主角在攻擊
						setNpcAttackState(canvas.ranEnemy, 0);
						int sleepTime = 100;
						int nextStatus = 0;
						switch (canvas.myPlayer.attackStatus) {
						case 0:
							nextStatus = 1;

							break;
						case 1:
							nextStatus = 2;
							break;
						case 2:
							demageNPC();
							nextStatus = -1;
							break;
						case 1979:
							sleepTime=50;
							nextStatus = 1980;
							
							break;
						case 1980:
							sleepTime=50;
							demageNPC();
							//消耗體力和魔法
							canvas.myPlayer.hp-=canvas.myPlayer.fireSkill.hpCost;
							canvas.myPlayer.mp-=canvas.myPlayer.fireSkill.mpCost;
							nextStatus = -1;
							
							break;

						}

						try {
							Thread.sleep(sleepTime);
						} catch (InterruptedException e1) {
							// TODO Auto-generated catch block
							e1.printStackTrace();
						}

						canvas.myPlayer.setAttackStatusSprite(nextStatus);
					}

					break;
				}

			}

			try {
				Thread.sleep(50);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}

		}
	}

	private void demageNPC() {
		//		傷害NPC
		int de = (canvas.myPlayer.getRealAttackPoint() - canvas.ranEnemy.defendPoint);
		canvas.ranEnemy.hp -= de;
		if (canvas.ranEnemy.hp <= 0) {
			//得經驗公式
			canvas.myPlayer.exp += (canvas.myPlayer.nextExp - canvas.myPlayer.levelInitExp) / 3;

			//得金錢
			canvas.myPlayer.money += Math.abs(ran.nextInt())
					% (canvas.beforeFightMoney / 3);

			//得技能
			Vector av = getAvailableSkills();
			if (av.size() > 0 && ran.nextInt() % 2 == 0) {
				canvas.ranSkill = (Skill) av.elementAt(Math.abs(ran.nextInt())
						% av.size());
			}
			//canvas.ranSkill=(Skill)this.allAvaliableSkill.elementAt(0);

			canvas.handleFightOver();

		}
	}

	private Vector getAvailableSkills() {
		Vector v = new Vector();
		for (int i = allAvaliableSkill.size() - 1; i >= 0; i--) {
			Skill sk = (Skill) allAvaliableSkill.elementAt(i);
			if (!canvas.myPlayer.skillVec.contains(sk)) {
				if (sk.requiredLevel == canvas.myPlayer.rank) {
					v.addElement(sk);
				}

			}
		}

		return v;
	}

	private void setNpcAttackState(NPC npc, int nextState) {

		npc.npcAttackState = nextState;
		switch (nextState) {
		//最初狀態
		case 0:
			npc.sprite.setPosition(100, 90);
			npc.sprite.setFrame(canvas.ranEnemy.startFrameIndex);
			break;
		//攻擊1狀態
		case 1:
			npc.sprite.setPosition(97, 102);

			npc.sprite.setFrame(canvas.ranEnemy.startFrameIndex + 1);
			break;
		//攻擊2狀態
		case 2:
			npc.sprite.setPosition(95, 102);
			npc.sprite.setFrame(canvas.ranEnemy.startFrameIndex + 2);
			//傷害值
			int de = npc.attackPoint - canvas.myPlayer.getRealDefendPoint();
			if (de < 0) {
				de = 5;
			}

			
			canvas.myPlayer.hp -= de;
			if (canvas.myPlayer.hp <= 0) {
				canvas.handleGameOver();
			}
			break;

		}
	}

	public static NPC cloneNpc(NPC npc) {
		NPC newNpc = new NPC();
		newNpc.endFrameIndex = npc.endFrameIndex;
		newNpc.ID = npc.ID;
		newNpc.jacketVec = npc.jacketVec;
		newNpc.medicVec = npc.medicVec;
		newNpc.name = npc.name;
		newNpc.skillVec = npc.skillVec;
		newNpc.sprite = npc.sprite;
		newNpc.startFrameIndex = npc.startFrameIndex;
		newNpc.talkContents = npc.talkContents;
		newNpc.type = npc.type;
		newNpc.attackPoint = npc.attackPoint;
		newNpc.defendPoint = npc.defendPoint;
		newNpc.weaponVec = npc.weaponVec;
		newNpc.colNo = npc.colNo;
		newNpc.rowNo = npc.rowNo;
		return newNpc;
	}



	/**
	 *  播放背景音樂
	 */
	private void playMidi() { 
		if (ResourceLoader.player != null) {
			try {
				ResourceLoader.player.realize();
				ResourceLoader.player.start();
			} catch (MediaException e) {
				// TODO 自動生成 catch 塊
				e.printStackTrace();
			}
		}
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产免费观看久久| 久久99久久精品欧美| 五月婷婷激情综合| 国产成人自拍高清视频在线免费播放| 91亚洲午夜精品久久久久久| 久久综合视频网| 亚洲成人精品一区二区| 不卡视频一二三| 久久夜色精品国产欧美乱极品| 亚洲第一会所有码转帖| 成人国产视频在线观看| 26uuu国产一区二区三区| 视频一区二区不卡| 91精品办公室少妇高潮对白| 中文字幕av不卡| 国产一区二区三区不卡在线观看| 91黄色激情网站| 亚洲乱码国产乱码精品精小说 | 国模一区二区三区白浆| 欧美日韩国产123区| 亚洲国产综合色| 欧洲激情一区二区| 亚洲视频精选在线| 97久久人人超碰| 亚洲视频图片小说| 91在线观看视频| 亚洲三级在线看| 91老司机福利 在线| 亚洲欧美日韩国产另类专区| av电影在线观看完整版一区二区| 国产日韩精品一区二区三区| 国产一区啦啦啦在线观看| 26uuu精品一区二区三区四区在线| 美女视频网站黄色亚洲| 精品久久久久av影院| 久久国产成人午夜av影院| 欧美不卡在线视频| 国产一区二区网址| 中文字幕欧美日本乱码一线二线| 成人性视频免费网站| 亚洲男女一区二区三区| 欧美午夜寂寞影院| 日韩高清在线不卡| 久久久精品中文字幕麻豆发布| 国产九色sp调教91| 国产精品成人一区二区三区夜夜夜| 成人av在线网站| 亚洲夂夂婷婷色拍ww47| 欧美一区二区国产| 国产精品资源网站| 《视频一区视频二区| 欧美日韩日日骚| 韩日精品视频一区| 国产精品高清亚洲| 欧美老肥妇做.爰bbww| 国产乱码精品一区二区三| 国产精品的网站| 欧美日韩成人高清| 国产精品18久久久久| 亚洲免费三区一区二区| 欧美裸体bbwbbwbbw| 黄一区二区三区| 亚洲激情在线激情| 日韩欧美国产综合| 91丝袜呻吟高潮美腿白嫩在线观看| 亚洲线精品一区二区三区八戒| 精品国产欧美一区二区| 日本韩国精品一区二区在线观看| 日本最新不卡在线| 亚洲欧美乱综合| 久久久久久免费网| 欧美群妇大交群中文字幕| 国产成人精品免费| 日本sm残虐另类| 亚洲精品久久久蜜桃| 久久精品在这里| 欧美放荡的少妇| av在线不卡免费看| 国产在线精品一区二区不卡了| 夜夜嗨av一区二区三区四季av| 久久综合色播五月| 欧美日韩国产免费| 一本久久a久久精品亚洲| 狠狠色丁香久久婷婷综合_中| 亚洲人成电影网站色mp4| 久久综合色婷婷| 91精品国产综合久久小美女| 97超碰欧美中文字幕| 国产在线一区二区| 日韩成人dvd| 亚洲一二三区在线观看| 国产精品超碰97尤物18| 久久青草国产手机看片福利盒子 | 色综合久久久网| 国产乱子轮精品视频| 日韩激情在线观看| 午夜精品久久久久久久99樱桃| 欧美极品xxx| 久久久91精品国产一区二区精品 | 中文字幕欧美一| 26uuu成人网一区二区三区| 91精品免费在线观看| 欧美日韩免费视频| 欧美在线高清视频| 在线观看www91| 91久久精品一区二区三| 色丁香久综合在线久综合在线观看| 成人国产精品免费| 成年人午夜久久久| 91尤物视频在线观看| 91女神在线视频| 91视频xxxx| 色94色欧美sute亚洲线路二| 99综合影院在线| 91尤物视频在线观看| 91麻豆精品在线观看| 在线视频国内自拍亚洲视频| 日本久久电影网| 97久久超碰国产精品| 免费观看成人鲁鲁鲁鲁鲁视频| 一级精品视频在线观看宜春院| 国产精品女同一区二区三区| 国产午夜精品一区二区三区视频 | 欧美日韩精品一区视频| 欧美视频一区二区三区| 欧美日韩高清一区二区三区| 在线综合+亚洲+欧美中文字幕| 欧美伦理电影网| 2017欧美狠狠色| 中文字幕综合网| 亚洲韩国一区二区三区| 免费观看日韩电影| 国产精品996| 91久久线看在观草草青青| 欧美日韩五月天| 日韩精品一区二区三区中文不卡| 久久综合av免费| 最新国产成人在线观看| 亚洲成a人在线观看| 激情文学综合丁香| hitomi一区二区三区精品| 在线精品视频一区二区三四 | 国产欧美一区二区三区在线看蜜臀| 欧美国产亚洲另类动漫| 亚洲制服丝袜av| 经典三级一区二区| 99国产精品久久久久久久久久久 | 性欧美疯狂xxxxbbbb| 韩国在线一区二区| 色综合视频一区二区三区高清| 欧美夫妻性生活| 中文字幕一区二区三区精华液| 图片区日韩欧美亚洲| 风间由美一区二区三区在线观看| 欧洲av在线精品| 精品999在线播放| 一区二区欧美在线观看| 极品销魂美女一区二区三区| 91丝袜高跟美女视频| 欧美xxxx老人做受| 亚洲乱码国产乱码精品精小说| 久久99国产精品麻豆| 在线影院国内精品| 中文字幕欧美国产| 日本欧美久久久久免费播放网| 成人免费高清视频| 911国产精品| 亚洲蜜臀av乱码久久精品| 国产麻豆精品在线| 在线不卡免费欧美| 亚洲欧美日韩人成在线播放| 国产精品99久久久久久久vr | 国产精品美女久久福利网站| 性做久久久久久久久| 色综合一个色综合亚洲| 中文字幕第一区第二区| 奇米一区二区三区| 欧美日韩免费一区二区三区| 亚洲视频在线一区二区| 国产传媒欧美日韩成人| 欧美tk—视频vk| 香蕉久久夜色精品国产使用方法 | 国产区在线观看成人精品| 蜜桃在线一区二区三区| 欧美男人的天堂一二区| 一区二区国产视频| 97aⅴ精品视频一二三区| 国产视频一区二区三区在线观看 | 日日夜夜免费精品视频| 在线观看视频一区二区欧美日韩| 一区免费观看视频| 不卡的看片网站| 国产精品福利电影一区二区三区四区| 国产综合成人久久大片91| 日韩亚洲欧美在线观看| 免费欧美在线视频| 日韩亚洲欧美一区二区三区| 久久精品国产网站| 久久综合久久鬼色| 国产精品综合视频|