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

📄 gamecanvas.java

📁 RPG冒险游戏
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
			
			Message = Configration.DialogForAngle1[b_DialogIndexForAngle];
		}
		else
		{
			if(b_DialogIndexForAngle >= Configration.DialogForAngle2.length - 1)
			{
				b_DialogIndexForAngle =(byte)(Configration.DialogForAngle2.length - 1);
				is_Move = true;
				if(!is_DialogedForAngle)
				{
					is_DialogedForAngle = true;
					HeroLvUp(5);
				}
			}
			
			Message = Configration.DialogForAngle2[b_DialogIndexForAngle];
		}
	}
	
	
	private void DialogForJack() //处理与JACK的对话
	{
		if(!hasPickax)
		{	
			if(b_DialogIndexForJack >= Configration.DialogForJack1.length - 1)
			{
				b_DialogIndexForJack =(byte)(Configration.DialogForJack1.length - 1);
				is_Move = true;
				if(!is_DialogedForJack)
				{
					is_DialogedForJack = true;
					OpenStore();
					try 
					{
						byte buffer[] = rs.getRecord(3);
						buffer[309] = 120;
						rs.setRecord(3, buffer, 0, buffer.length);
					}
					catch(Exception e)
					{
						e.printStackTrace();
					}
					CloseStore();
				}
			}
			
			Message = Configration.DialogForJack1[b_DialogIndexForJack];
		}
		else
		{
			if(b_DialogIndexForJack >= Configration.DialogForJack2.length - 1)
			{
				b_DialogIndexForJack =(byte)(Configration.DialogForJack2.length - 1);
				is_Move = true;
				if(!is_DialogedForJack)
				{
					is_DialogedForJack = true;
					OpenStore();
					try 
					{
						byte buffer[] = rs.getRecord(3);
						setValue();
						buffer[2271] = 120;
						buffer[2282] = 120;
						rs.setRecord(3, buffer, 0, buffer.length);
					}
					catch(Exception e)
					{
						e.printStackTrace();
					}
					CloseStore();
				}
			}
			
			Message = Configration.DialogForJack2[b_DialogIndexForJack];
		}
	}
	
	
	private void DialogForLevelUp() //处理与蓝衣老头的对话
	{
		if(!hasExp)
		{
			if(b_Stage == 2)
			{
				if(b_DialogIndexForLevelUp >= Configration.DialogForLevelUp1.length - 1)
				{
					b_DialogIndexForLevelUp =(byte)(Configration.DialogForLevelUp1.length - 1);
					is_Move = true;
					if(!is_DialogedForLevelUp)
					{
						is_DialogedForLevelUp = true;
						HeroAc += 30;
						setValue();						
					}
				}
				
				Message = Configration.DialogForLevelUp1[b_DialogIndexForLevelUp];
				
				if(b_DialogIndexForLevelUp >= Configration.DialogForLevelUp1.length - 1)
				{
					b_DialogIndexForLevelUp = 0;
				}
			}
			else
			{
				if(b_DialogIndexForLevelUp >= Configration.DialogForLevelUp2.length - 1)
				{
					b_DialogIndexForLevelUp =(byte)(Configration.DialogForLevelUp2.length - 1);
					is_Move = true;
					if(!is_DialogedForLevelUp)
					{
						is_DialogedForLevelUp = true;
						is_DialogedForLevelUp15 = true;						
					}
				}
				
				Message = Configration.DialogForLevelUp2[b_DialogIndexForLevelUp];
				
				if(b_DialogIndexForLevelUp >= Configration.DialogForLevelUp2.length - 1)
				{
					b_DialogIndexForLevelUp = 0;
				}
			}
		}
		else
		{
			if(b_DialogIndexForLevelUp >= Configration.DialogForLevelUp3.length - 1)
			{
				b_DialogIndexForLevelUp =(byte)(Configration.DialogForLevelUp3.length - 1);
				is_Move = true;
				if(!is_DialogedForLevelUp)
				{
					is_DialogedForLevelUp = true;
					HeroExp -= 500;
					HeroAc += 120;
					setValue();
				}
			}
			
			Message = Configration.DialogForLevelUp3[b_DialogIndexForLevelUp];
		}
	}
	
	
	private void DialogForBuyKey() //处理与红衣商人的对话
	{
		if(!hasMoney)
		{
			if(b_Stage == 2)
			{
				if(b_DialogIndexForBuyKey >= Configration.DialogForBuyKey1.length - 1)
				{
					b_DialogIndexForBuyKey =(byte)(Configration.DialogForBuyKey1.length - 1);
					is_Move = true;
					if(!is_DialogedForBuyKey)
					{
						is_DialogedForBuyKey = true;
						HeroDc += 30;
						setValue();						
					}
				}
				
				Message = Configration.DialogForBuyKey1[b_DialogIndexForBuyKey];
				
				if(b_DialogIndexForBuyKey >= Configration.DialogForBuyKey1.length - 1)
				{
					b_DialogIndexForBuyKey = 0;
				}
			}
			else
			{
				if(b_DialogIndexForBuyKey >= Configration.DialogForBuyKey2.length - 1)
				{
					b_DialogIndexForBuyKey =(byte)(Configration.DialogForBuyKey2.length - 1);
					is_Move = true;
					if(!is_DialogedForBuyKey)
					{
						is_DialogedForBuyKey = true;
						is_DialogedForBuyKey15 = true;						
					}
				}
				
				Message = Configration.DialogForBuyKey2[b_DialogIndexForBuyKey];
				
				if(b_DialogIndexForBuyKey >= Configration.DialogForBuyKey2.length - 1)
				{
					b_DialogIndexForBuyKey = 0;
				}
			}
		}
		else
		{
			if(b_DialogIndexForBuyKey >= Configration.DialogForBuyKey3.length - 1)
			{
				b_DialogIndexForBuyKey =(byte)(Configration.DialogForBuyKey3.length - 1);
				is_Move = true;
				if(!is_DialogedForBuyKey)
				{
					is_DialogedForBuyKey = true;
					HeroMoney -= 800;
					HeroDc += 120;
					setValue();
				}
			}
			
			Message = Configration.DialogForBuyKey3[b_DialogIndexForBuyKey];
		}
	}
	
	
	private void DialogForBeelzeBub()
	{
		switch(b_Stage)
		{
			case 16:
				if(b_DialogIndexForBeelzeBub >= Configration.DialogForBeelzeBub1.length - 1)
				{
					b_DialogIndexForBeelzeBub =(byte)(Configration.DialogForBeelzeBub1.length - 1);
					is_Move = true;
					if(!is_DialogedForBeelzeBub)
					{
						is_DialogedForBeelzeBub = true;
					}
				}
				
				Message = Configration.DialogForBeelzeBub1[b_DialogIndexForBeelzeBub];
				break;
			case 19:
				if(!BeelzeBubIsDead)
				{
					if(b_DialogIndexForBeelzeBub >= Configration.DialogForBeelzeBub2.length - 1)
					{
						b_DialogIndexForBeelzeBub =(byte)(Configration.DialogForBeelzeBub2.length - 1);
						is_Move = true;
						if(!is_DialogedForBeelzeBub)
						{
							is_DialogedForBeelzeBub = true;							
						}
					}
					
					Message = Configration.DialogForBeelzeBub2[b_DialogIndexForBeelzeBub];
				}
				else
				{
					if(b_DialogIndexForBeelzeBub >= Configration.DialogForBeelzeBub3.length - 1)
					{
						b_DialogIndexForBeelzeBub =(byte)(Configration.DialogForBeelzeBub3.length - 1);
						is_Move = true;
						if(!is_DialogedForBeelzeBub)
						{
							is_DialogedForBeelzeBub = true;							
						}
					}
					
					Message = Configration.DialogForBeelzeBub3[b_DialogIndexForBeelzeBub];
				}
				
		}		
	}
	
	private void SaveGame()		//保存游戏进度
	{
		OpenStore();
		try 
		{
			byte buffer[] = rs.getRecord(3);
			
			rs.setRecord(1, buffer, 0, buffer.length);
			
			ByteArrayOutputStream baos = new ByteArrayOutputStream();
			DataOutputStream os = new DataOutputStream(baos);
			os.writeByte(HeroLv);
			os.writeInt(HeroLp);
			os.writeInt(HeroAc);
			os.writeInt(HeroDc);
			os.writeInt(HeroExp);
			os.writeInt(HeroMoney);
			os.writeByte(RedKey);
			os.writeByte(YellowKey);
			os.writeByte(BlueKey);
			os.writeByte(b_Stage);
			os.writeByte(maxStage);
			os.writeByte(b_x);
			os.writeByte(b_y);
			os.writeLong(UsedTime);
			os.writeBoolean(hasLuoPan);
			os.writeBoolean(hasBaoDian);
			os.writeBoolean(is_DialogedForAngle);
			os.writeByte(b_DialogIndexForAngle);
			os.writeBoolean(hasLatinCross);
			os.writeBoolean(is_DialogedForJack);
			os.writeByte(b_DialogIndexForJack);
			os.writeBoolean(hasPickax);
			os.writeBoolean(is_DialogedForLevelUp);
			os.writeBoolean(is_DialogedForLevelUp15);
			os.writeByte(b_DialogIndexForLevelUp);
			os.writeBoolean(hasExp);
			os.writeBoolean(is_DialogedForBuyKey);
			os.writeBoolean(is_DialogedForBuyKey15);
			os.writeByte(b_DialogIndexForBuyKey);
			os.writeBoolean(hasMoney);
			os.writeBoolean(is_DialogedForPrincess);
			os.writeByte(b_DialogIndexForPrincess);
			os.writeBoolean(is_DialogedForBeelzeBub);
			os.writeByte(b_DialogIndexForBeelzeBub);
			os.writeBoolean(BeelzeBubIsDead);
			os.close();
			byte data[] = baos.toByteArray();
			rs.setRecord(2, data, 0, data.length);
		}
		catch (Exception e) 
		{
			e.printStackTrace();
		}
		CloseStore();
	}
	
	private void drawAbout(Graphics g)
	{
		g.setClip(0, 0, i_lcdWidth, i_lcdHeight);
		g.setColor(0x000000);
		g.fillRect(0, 0, i_lcdWidth, i_lcdHeight);
		g.setColor(0xFFFFFF);
		g.drawRect(1, 1, i_lcdWidth - 3, i_lcdHeight - 3);
		showAbout(g);
	}
	
	private void LoadGame()		//读取游戏进度
	{
		OpenStore();
		try 
		{
			byte buffer[] = rs.getRecord(1);
			rs.setRecord(3, buffer, 0, buffer.length);
			
			byte data[] = rs.getRecord(2);
			DataInputStream is = new DataInputStream(new ByteArrayInputStream(data));
			HeroLv = is.readByte();
			HeroLp = is.readInt();
			HeroAc = is.readInt();
			HeroDc = is.readInt();
			HeroExp = is.readInt();
			HeroMoney = is.readInt();
			RedKey = is.readByte();
			YellowKey = is.readByte();
			BlueKey = is.readByte();
			b_Stage = is.readByte();
			maxStage = is.readByte();
			b_x = is.readByte();
			b_y = is.readByte();
			UsedTime = is.readLong();
			hasLuoPan = is.readBoolean();
			hasBaoDian = is.readBoolean();
			is_DialogedForAngle = is.readBoolean();
			b_DialogIndexForAngle = is.readByte();
			hasLatinCross = is.readBoolean();
			is_DialogedForJack = is.readBoolean();
			b_DialogIndexForJack = is.readByte();
			hasPickax = is.readBoolean();
			is_DialogedForLevelUp = is.readBoolean();
			is_DialogedForLevelUp15 = is.readBoolean();
			b_DialogIndexForLevelUp = is.readByte();
			hasExp = is.readBoolean();
			is_DialogedForBuyKey = is.readBoolean(); 
			is_DialogedForBuyKey15 = is.readBoolean();
			b_DialogIndexForBuyKey = is.readByte();
			hasMoney = is.readBoolean();
			is_DialogedForPrincess = is.readBoolean();
			b_DialogIndexForPrincess = is.readByte();
			is_DialogedForBeelzeBub = is.readBoolean();
			b_DialogIndexForBeelzeBub = is.readByte();
			BeelzeBubIsDead = is.readBoolean();
			is.close();
		}
		catch (Exception e) 
		{
			e.printStackTrace();
		}	
		StartTime = System.currentTimeMillis() - UsedTime;
		CloseStore();
	}
	
	private void initGame()		//开始新游戏时初始化
	{
		if(map == null)
		{
			map = new TiledLayer(11, 11, img_Map, (byte)32, (byte)32);
		}
		else
		{
			map.setStaticTileSet(11, 11, img_Map, (byte)32, (byte)32);
		}
		map.VisibleWidth = i_lcdWidth;
		map.VisibleHeight = i_lcdHeight;
		for(byte i = 1; i < 39; i++)
		{
			map.createAnimatedTile(i * 2 - 1);
		}
		
		OpenStore();		
		try 
		{
			byte buffer[] = ImageSet.LoadMap("/Map/Map.Lib", 2662);
			rs.setRecord(3, buffer, 0, buffer.length);
		}
		catch (Exception e) 
		{
			e.printStackTrace();
		}
		CloseStore();
		
		b_Stage = 0;
		maxStage = 0;
		
		b_x = b_star[b_Stage * 2];
		b_y = b_star[b_Stage * 2 + 1];
		HeroLv = 1;
		HeroLp = 1000;
		HeroAc = 10;
		HeroDc = 10;
		HeroExp = 0;//经验值
		HeroMoney = 0; //钱币
		RedKey = 0;//红钥匙的数量
		YellowKey = 0;//黄钥匙的数量
		BlueKey = 0;
		is_Move = true;
		StartTime = System.currentTimeMillis();
		
		hasLuoPan = false;
		hasBaoDian = false;
		
		is_DialogedForAngle = false;
		b_DialogIndexForAngle = 0;
		hasLatinCross = false;
		
		is_DialogedForJack = false;//是否与JACK对过话;
		b_DialogIndexForJack = 0;
		hasPickax = false; 
		
		is_DialogedForLevelUp = false; //是否与老头NPC对话
		is_DialogedForLevelUp15 = false;
		b_DialogIndexForLevelUp = 0;
		hasExp = false;
		
		is_DialogedForBuyKey = false; //是否与商人NPC对话
		is_DialogedForBuyKey15 = false;
		b_DialogIndexForBuyKey = 0;
		hasMoney = false;
		
		is_DialogedForPrincess = false;//是否与公主对过话;
		b_DialogIndexForPrincess = 0;
		
		is_DialogedForBeelzeBub = false;//是否与魔王对过话;
		b_DialogIndexForBeelzeBub = 0;
		BeelzeBubIsDead = false; //是否已经杀死了魔王
	}
	
	private void SaveMap()		//保存地图数据
	{
		OpenStore();
		try 
		{
			byte buffer[] = rs.getRecord(3);
			System.arraycopy(mapArray, 0, buffer, b_Stage * mapArray.length, mapArray.length);
			rs.setRecord(3, buffer, 0, buffer.length);		
		}
		catch (Exception e) 
		{
			e.printStackTrace();
		}
		CloseStore();
	}	
		
	private void LoadMap()		//读取地图数据
	{
		OpenStore();
		try 
		{
			byte buffer[] = rs.getRecord(3);
			System.arraycopy(buffer, b_Stage * mapArray.length, mapArray, 0, mapArray.length);
		}
		catch (Exception e) 
		{
			e.printStackTrace();
		}
		CloseStore();
	}
	
	private void initStage()//初使化关卡地图
	{
		LoadMap();
		for(int i = 0; i < 121; i++)
		{
			map.setCell(i % 11, i / 11, mapArray[i]);
		}
		map.setPosition(-b_x * 32 + i_lcdCenterX - 16, -b_y * 32 + i_lcdCenterY - 15);
		
		is_Loaded = true;
	}
	
	private void LoadImage()  //图片加载
	{
		switch(SS_NOW)
		{
			case Configration.SS_LOGO:
				if(img_Logo == null)
				{
					img_Logo = ImageSet.readImage("/img/Picture.Lib", 0);
				}
				break;
			case Configration.SS_TITLE:
				if(img_Title == null)
				{
					img_Title = ImageSet.readImage("/img/Picture.Lib", 31736);
				}
				
				if(img_AnyKey == null)
				{
					img_AnyKey = ImageSet.readImage("/img/Picture.Lib", 1680);
				}
				break;
			case Configration.SS_MENU:
				if(img_Title == null)
				{
					img_Title = ImageSet.readImage("/img/Picture.Lib", 31736);
				}
				if(img_jtl == null)
				{

⌨️ 快捷键说明

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