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

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

?? gamecanvas.java

?? RPG冒險游戲
?? JAVA
?? 第 1 頁 / 共 5 頁
字號:
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;

import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.Font;
import javax.microedition.rms.RecordStore;
import CustomlUtil.Configration;
import CustomlUtil.Monster;
import CustomlUtil.TiledLayer;
import CustomlUtil.ImageSet;

public class GameCanvas extends Canvas implements Runnable
{
	//--------------定義線程--------------------------
	private Thread th = null; 
	private GameMid GM = null;
	private int i_Speed = 0;
	private boolean is_Run = false;
	private int i_num;
	
	//-------------定義屏幕寬高-----------------------
	private int i_lcdWidth = 0;
	private int i_lcdHeight = 0;
	
	//-------------定義屏幕中心坐標--------------------
	private int i_lcdCenterX = 0;
	private int i_lcdCenterY = 0;
	
	//-------------定義地圖-----------------------
	//-------共計22層,每層為11×11的大小---------------
	private TiledLayer map;	//游戲地圖
	private byte mapArray[] = new byte[121];
	byte b_star[] = {5,9,5,9,0,1,1,10,10,9,0,9,9,9,5,10,0,1,6,3,4,
			6,1,10,9,10,1,10,5,9,3,0,5,0,5,8,1,10,9,10,5,4,5,5,};//每層地圖的入口
	byte b_end[] = {5,1,1,0,0,9,10,9,0,9,9,9,4,9,1,0,7,4,6,7,0,9,9,
			10,1,10,4,10,5,9,7,0,5,6,1,10,9,10,5,4,5,6,5,6};//每層地圖的出口
	
	//---------定義變量表示游戲狀態--------------------
	private byte SS_NOW = 0;
	private byte CurrentState = 0;   //當前游戲中的狀態
    
	//---------定義英雄的相關信息---------------------
	private byte HeroLv = 0; //英雄等級
	private int HeroLp = 0;//英雄生命值
	private int HeroAc = 0;//英雄攻擊力
	private int HeroDc = 0;//英雄防御力
	private int HeroExp = 0;//經驗值
	private int HeroMoney = 0; //錢幣
	private byte RedKey = 0;//紅鑰匙的數量
	private byte YellowKey = 0;//黃鑰匙的數量
	private byte BlueKey = 0;//藍鑰匙的數量
	private byte Steps[] = {0,1,2,1}; //英雄在地圖上前進的幀序列
	private byte stepIndex = 0;//英雄當前幀的序號
	private byte b_x,b_y;  //英雄在地圖數組中的位置
	private byte Direction; //英雄的朝向;
	private boolean is_Move = true; //定義英雄是否可以移動
	private byte b_Dx,b_Dy; 
	//----------定義菜單選項--------------------------
	private byte b_Selected  = 0;
	//-------------游戲中用的圖片---------------------
	private Image img_Logo;   //LOGO
	private Image img_Title;  //TITLE
	private Image img_AnyKey; //PressAnyKey
	private Image img_jtl;  //向左箭頭
	private Image img_jtr; //向右箭頭
    private Image img_Hero; //英雄圖片
    private Image img_Map;  //地圖圖片
    //-------------定義當前關卡-----------------
    private byte b_Stage = 0;
    private byte maxStage = 0;  //到過的最高樓層;
    
    //------------定義游戲Intro界面Y軸偏移量-------
    private int offestY = 0;
    private int IntroHeight = 0;
    
    //----------定義游戲存儲對象---------
    private RecordStore rs;
    private boolean is_Loaded = false;//判斷游戲是否加載完畢
	
    
    //----------定義計時器--------------
    private long StartTime = 0;
    private long UsedTime = 0;
    
    //定義一些變量用于控制游戲情節進展
    private String Message,Msg;
    private boolean hasLuoPan = false; //是否得到了風之羅盤
    private boolean hasBaoDian = false; //是否得到怪物寶典
    private boolean is_DialogedForAngle = false; //是否與天使對過話
	private byte b_DialogIndexForAngle = 0;
	private boolean hasLatinCross = false; //是否拿到了十字架
	
	private boolean is_DialogedForJack = false;//是否與JACK對過話;
	private byte b_DialogIndexForJack = 0;
	private boolean hasPickax = false; //是否拿到了鎬
	
	private boolean is_DialogedForLevelUp = false; //是否與老頭NPC對話
	private boolean is_DialogedForLevelUp15 = false;
	private byte b_DialogIndexForLevelUp = 0;
	private boolean hasExp = false;
	
	private boolean is_DialogedForBuyKey = false; //是否與商人NPC對話
	private boolean is_DialogedForBuyKey15 = false;
	private byte b_DialogIndexForBuyKey = 0;
	private boolean hasMoney = false;
	
	private boolean is_DialogedForPrincess = false;//是否與公主對過話;
	private byte b_DialogIndexForPrincess  = 0;
	
	private boolean is_DialogedForBeelzeBub = false;//是否與魔王對過話;
	private byte b_DialogIndexForBeelzeBub = 0;
	private boolean BeelzeBubIsDead = false; //是否已經殺死了魔王
	
	public GameCanvas(GameMid GM)
	{
		SS_NOW = Configration.SS_LOGO;
		LoadImage();		
		
		i_lcdWidth = this.getWidth();
		i_lcdHeight = this.getHeight();
		offestY = i_lcdHeight - 30;
		i_lcdCenterX = i_lcdWidth / 2;
		i_lcdCenterY = i_lcdHeight / 2;
	
		this.GM = GM;
		i_num = 1;
		is_Run = true;
		i_Speed = 100;
		th = new Thread(this);
		th.start();
	}
//	=====================游戲規則===========================	
	private boolean CanMove()
	{
		switch(getFront())
		{
			case -1://老頭NPC
				if(b_Stage == 2 || b_Stage == 15)
				{
					DialogForLevelUp();
				}
				CurrentState = Configration.LEVELUP;		
				break;
			case -2://財主NPC
				if(b_Stage == 2 || b_Stage == 15)
				{
					DialogForBuyKey();
				}
				CurrentState = Configration.BUYKEY;
				break;
			case -3://商店NPC
				CurrentState = Configration.SHOPING;
				break;
			case -4://天使NPC
				CurrentState = Configration.ANGEL;
				DialogForAngle();
				break;
			case -36:
				CurrentState = Configration.PRINCESS;
				DialogForPrincess();
				break;
			case -37:
				CurrentState = Configration.JACK;
				DialogForJack();
				break;
			case 77:
				hasBaoDian = true;
				setValue();
				Msg = "得到怪物寶典,可以通過數字鍵3查看當前怪物的屬性!";
				break;
			case 78:
				hasLuoPan = true;
				setValue();
				Msg = "得到風之羅盤,可以通過數字鍵1快速到達指定的樓層!";
				break;
			case 79:
				RedKey++;
				BlueKey++;
				YellowKey++;
				Msg = "所有鑰匙加1";
				i_num = 1;
				setValue();
				break;
			case 81:
				hasPickax = true;
				b_DialogIndexForJack = 0;
				is_DialogedForJack = false;
				setValue();
				Msg = "獲得嵌著紅寶石的榔頭";
				i_num = 1;					
				break;
			case 82:
				HeroMoney += 300;
				Msg = "金幣增加300";
				i_num = 1;
				setValue();			
				break;
			case 83:
				if(YellowKey > 0)
				{
					YellowKey--;
					setValue();					
				}
				break;
			case 84:
				if(BlueKey > 0)
				{
					BlueKey--;
					setValue();
				}
				break;
			case 85:
				if(RedKey > 0)
				{
					RedKey--;
					setValue();

					if(b_Stage == 16)
					{
						CurrentState = Configration.BEELZEBUB;
						DialogForBeelzeBub();						
					}
				}
				break;
			case 87:
				YellowKey++;
				setValue();
				Msg = "獲得一把黃鑰匙";
				i_num = 1;
				break;
			case 88:
				BlueKey++;
				setValue();
				Msg = "獲得一把藍鑰匙";
				i_num = 1;
				break;
			case 89:
				RedKey++;
				setValue();
				Msg = "獲得一把紅鑰匙";
				i_num = 1;
				break;
			case 90:
				HeroDc += 3;
				setValue();
				Msg = "提升3點防御力";
				i_num = 1;
				break;
			case 91:
				HeroAc += 3;
				setValue();
				Msg = "提升3點攻擊力";
				i_num = 1;
				break;
			case 92:
				HeroLp += 200;
				setValue();
				Msg = "生命值提升200點";
				i_num = 1;
				break;
			case 93:
				HeroLp += 500;
				setValue();
				Msg = "生命值提升500點";
				i_num = 1;
				break;
			case 94:
				if(maxStage < b_Stage)
				{
					maxStage = b_Stage;
				}
				SaveMap();
				b_Stage++;
				b_x = b_star[b_Stage * 2];
				b_y = b_star[b_Stage * 2 + 1];
				initStage();
				CurrentState = Configration.STAGECHANGED;
				i_num = 1;
				break;
			case 95:
				SaveMap();
				b_Stage--;
				b_x = b_end[b_Stage * 2];
				b_y = b_end[b_Stage * 2 + 1];
				initStage();				
				CurrentState = Configration.STAGECHANGED;
				i_num = 1;
				break;
			case 96://鐵門
				setValue();
				break;
			case 103:
				HeroAc += 10;
				setValue();
				Msg = "攻擊提升10點";
				i_num = 1;
				break;
			case 104:
				HeroAc += 40;
				setValue();
				Msg = "攻擊提升40點";
				i_num = 1;
				break;
			case 107:
				HeroAc += 80;
				setValue();
				Msg = "攻擊提升80點";
				i_num = 1;
				break;
			case 108:
				HeroDc += 10;
				setValue();
				Msg = "防御提升10點";
				i_num = 1;
				break;
			case 109:
				HeroDc += 85;
				setValue();
				Msg = "防御提升85點";
				i_num = 1;
				break;
			case 112:
				HeroDc += 100;
				setValue();
				Msg = "防御提升100點";
				i_num = 1;	
				break;
			case 113:
				HeroLvUp(1);
				setValue();
				Msg = "獲得小飛羽等級提升1";
				i_num = 1;	
				break;
			case 115:
				HeroLvUp(3);
				setValue();
				Msg = "獲得大飛羽等級提升3";
				i_num = 1;	
				break;
			case 116:
				hasLatinCross = true;
				b_DialogIndexForAngle = 0;
				is_DialogedForAngle = false;
				setValue();
				Msg = "獲得光明十字架";
				i_num = 1;				
				break;
			case 117:
				HeroLp *= 2;
				setValue();
				Msg = "獲得超級血瓶生命值翻倍";
				i_num = 1;
				break;
			case 120:
				return true;
			default:
				byte f = getFront();
				byte index = (byte)(-f - 5);
				
				if(f > -36 && f < -4)
				{
					if(f == -15)
					{
						int i = HeroLp / 4;
						HeroLp -= i;
						if(Fight(Configration.Mn[index]))
						{
							setValue();
						}
						else
						{
							HeroLp += i;
						}
					}
					else if(f == -21)
					{
						int i = HeroLp / 3;
						HeroLp -= i;
						if(b_Stage == 21)
						{
							index = 31;
						}
						if(Fight(Configration.Mn[index]))
						{
							setValue();
						}
						else
						{
							HeroLp += i;
						}
					}
					else if(f == -34)
					{
						switch(b_Stage)
						{
							case 19:
								CurrentState = Configration.BEELZEBUB;
								DialogForBeelzeBub();
								break;
							case 21:
								if(Fight(Configration.Mn[35]))
								{
									setValue();
									Msg = "冥靈魔王:啊......怎么可能,我怎么可能會被你打敗呢!不,不要這樣.........";
									BeelzeBubIsDead = true;
								}
								break;
						}				
					}
					else
					{
						if(f == -22 && b_Stage == 17)
						{
							index = 32;
						}
						else if(f == -25 && b_Stage == 20)
						{
							index = 33;
						}
						else if(f == -35 && b_Stage == 19)
						{
							index = 34;
						}
						
						if(Fight(Configration.Mn[index]))
						{
							setValue();
						}
					}
				}
				break; 
		}
		return false;
	}

	private void CloseStore()	//關閉數據存儲記錄
	{
		try
		{
			rs.closeRecordStore();
		}
		catch (Exception e)
		{
			e.printStackTrace();
		}
	}
	
	private void OpenStore()	//打開數據存儲記錄
	{
		try
		{
			rs = RecordStore.openRecordStore("Game1.Save",false);
		} 
		catch (Exception e)
		{
			try 
			{
				rs = RecordStore.openRecordStore("Game1.Save",true);
				byte temp[] = ImageSet.LoadMap("/Map/Map.Lib", 2662);
				rs.addRecord(temp, 0, temp.length);
				
				ByteArrayOutputStream baos = new ByteArrayOutputStream();
				DataOutputStream os = new DataOutputStream(baos);
				os.writeByte(1);
				os.writeInt(1000);
				os.writeInt(10);
				os.writeInt(10);
				os.writeInt(0);
				os.writeInt(0);
				os.writeByte(0);
				os.writeByte(0);
				os.writeByte(0);
				os.writeByte(5);
				os.writeByte(9);
				os.writeByte(0);
				os.writeLong(0);
				os.writeBoolean(false);
				os.writeBoolean(false);
				os.writeBoolean(false);
				os.writeByte(0);
				os.writeBoolean(false);
				os.writeBoolean(false);
				os.writeByte(0);
				os.writeBoolean(false);
				os.writeBoolean(false);
				os.writeBoolean(false);
				os.writeByte(0);
				os.writeBoolean(false);
				os.writeBoolean(false);
				os.writeBoolean(false);
				os.writeByte(0);
				os.writeBoolean(false);
				os.writeBoolean(false);
				os.writeByte(0);
				os.writeBoolean(false);
				os.writeByte(0);
				os.writeBoolean(false);
				os.close();
				byte data[] = baos.toByteArray();
				rs.addRecord(data, 0, data.length);
				
				rs.addRecord(temp, 0, temp.length);
			} 
			catch (Exception e1)
			{
				e1.printStackTrace();
			}
		}
	}
	
	private void DialogForAngle() //處理與天使的對話
	{
		if(!hasLatinCross)
		{	
			if(b_DialogIndexForAngle >= Configration.DialogForAngle1.length - 1)
			{
				b_DialogIndexForAngle =(byte)(Configration.DialogForAngle1.length - 1);
				is_Move = true;
				if(!is_DialogedForAngle)
				{
					is_DialogedForAngle = true;
					YellowKey++;
					RedKey++;
					BlueKey++;
				}
			}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产日韩精品一区二区浪潮av| 91香蕉国产在线观看软件| ㊣最新国产の精品bt伙计久久| 欧美性猛片xxxx免费看久爱| 精品亚洲porn| 亚洲精品videosex极品| 久久久久久亚洲综合| 欧美熟乱第一页| 精品一区二区三区免费视频| 一区二区日韩电影| 精品sm捆绑视频| 日韩欧美在线影院| 欧美久久久久久久久| 国产成人av一区二区三区在线观看| 五月天欧美精品| 亚洲视频一二三区| 26uuu欧美| 国产欧美1区2区3区| 91精品在线一区二区| 色噜噜狠狠色综合中国| 成人性生交大片免费看中文网站| 捆绑变态av一区二区三区| 亚洲国产日韩在线一区模特 | 国产剧情一区二区| 日本aⅴ精品一区二区三区| 国产精品久久综合| 一区二区三区成人在线视频| 亚洲成av人片在线观看无码| 日韩激情视频网站| 国内精品视频666| 粉嫩久久99精品久久久久久夜| 国模少妇一区二区三区| 精品一区二区久久| 国产福利精品一区| 99视频有精品| 97国产精品videossex| 色综合av在线| 欧美丰满少妇xxxxx高潮对白| 91成人在线免费观看| 欧美精品一卡二卡| 欧美日韩中字一区| 884aa四虎影成人精品一区| 精品电影一区二区三区 | 色婷婷狠狠综合| 日韩午夜激情免费电影| 国产欧美日韩视频在线观看| 亚洲精品乱码久久久久久| 亚洲黄色av一区| 久久99国产精品尤物| 国产麻豆视频一区| 欧美剧情片在线观看| 国产精品国产三级国产a| 裸体一区二区三区| 成人av网站在线| 日韩女同互慰一区二区| 亚洲天堂精品视频| 亚洲午夜在线视频| 欧美日韩视频第一区| 综合激情成人伊人| 精品综合久久久久久8888| 91在线你懂得| 久久精品免视看| 青娱乐精品在线视频| 99这里只有久久精品视频| 日韩欧美一区中文| 久久久亚洲高清| 国产成人综合网站| 中文字幕国产精品一区二区| 国产91丝袜在线播放九色| 国产三级欧美三级| 欧美日韩国产在线播放网站| 亚洲精品免费在线播放| 91久久精品一区二区| 中文字幕一区二区三区在线不卡| 国产美女精品一区二区三区| 日韩欧美一区二区久久婷婷| 日本不卡的三区四区五区| 日韩一区二区免费在线电影| 青青草原综合久久大伊人精品| 日韩欧美一区二区免费| 日韩电影在线免费观看| 日韩手机在线导航| 国产精品一区专区| 国产精品久久久久久久第一福利 | 国产一区二区免费视频| 日韩亚洲国产中文字幕欧美| 国内精品伊人久久久久av一坑 | 综合欧美一区二区三区| 99久精品国产| 亚洲欧美一区二区不卡| 色综合久久天天综合网| 亚洲综合免费观看高清完整版在线| 色婷婷久久综合| 一区二区三区欧美视频| 日韩欧美中文字幕公布| 国产精品1024| 国产精品乱码人人做人人爱| 国产激情精品久久久第一区二区 | 久久精品在线免费观看| 99国产精品国产精品久久| 亚洲一区二区三区美女| 久久久蜜臀国产一区二区| 成人精品视频一区| 亚洲欧美一区二区三区久本道91| 欧美三级在线播放| 床上的激情91.| 午夜a成v人精品| 亚洲男人的天堂网| 久久久精品黄色| 色婷婷国产精品综合在线观看| 日韩成人免费在线| 亚洲视频小说图片| 中文字幕色av一区二区三区| 欧美精品一区视频| 欧美日韩三级一区二区| 国产高清无密码一区二区三区| 午夜免费欧美电影| 亚洲国产精品高清| 欧美一级专区免费大片| 日韩午夜在线观看视频| 日韩欧美资源站| 91精品在线一区二区| 欧美日本国产视频| 欧美在线综合视频| 成人午夜电影网站| 久久爱www久久做| 亚洲欧美色综合| 亚洲一区二区三区在线播放| 亚洲激情成人在线| 亚洲黄色录像片| 国产精品国产三级国产aⅴ原创| 欧美浪妇xxxx高跟鞋交| 精品视频在线免费| 91精品中文字幕一区二区三区| 欧美日韩一区二区在线观看 | 亚洲影视在线播放| 日韩电影免费在线看| 日本欧美在线观看| 日本三级亚洲精品| 国产一区在线精品| 国产精品一二二区| av一区二区三区黑人| 国产69精品久久777的优势| 亚洲一区二区三区四区在线| 韩国欧美国产一区| 日韩欧美国产综合在线一区二区三区 | 偷拍日韩校园综合在线| 大尺度一区二区| av不卡一区二区三区| 91原创在线视频| 欧美美女直播网站| 欧美一区二区播放| 日韩精品一区二区三区视频播放| 精品国产三级电影在线观看| 久久久综合九色合综国产精品| 国产欧美日韩另类一区| 国产精品久久毛片av大全日韩| 国产精品伦理一区二区| 日韩精品五月天| 国产麻豆成人传媒免费观看| 99久久精品国产精品久久| 欧美三级中文字幕在线观看| 精品99一区二区| 中文字幕乱码久久午夜不卡| 免费xxxx性欧美18vr| 91小视频免费看| 精品国产乱码久久久久久牛牛| 一区在线中文字幕| 亚洲视频香蕉人妖| 国产·精品毛片| 欧美成人精品1314www| 国产精品久久久久久久午夜片| 亚洲成人免费影院| 成人午夜看片网址| 欧美一区二区三区白人 | 国产清纯美女被跳蛋高潮一区二区久久w| 中文字幕永久在线不卡| 美女尤物国产一区| 91国内精品野花午夜精品| 国产精品高清亚洲| 免费成人在线视频观看| 在线观看中文字幕不卡| 欧美极品另类videosde| 国产原创一区二区三区| 日韩亚洲欧美高清| 成人免费在线播放视频| 国产成人免费视频精品含羞草妖精| 久久久久久一二三区| 91麻豆国产香蕉久久精品| 日本va欧美va欧美va精品| 精品伦理精品一区| fc2成人免费人成在线观看播放 | 一级精品视频在线观看宜春院| 欧美精品亚洲一区二区在线播放| 国产一区欧美日韩| 欧美激情一区二区三区全黄| 日韩欧美国产三级电影视频| 99国产精品久| 成人一区二区在线观看| 久久99国产精品久久|