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

📄 gamecanvas.java

📁 RPG冒险游戏
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
								break;							
						}
						break;
					case Configration.BUYKEY:
						switch(b_Stage)
						{
							case 2:
							case 15:
								if(!is_DialogedForBuyKey && Message != null)
								{
									b_DialogIndexForBuyKey++;
									DialogForBuyKey();
								}
								else
								{
									Message = null;
									is_DialogedForBuyKey = false;
									CurrentState = Configration.NORMAL;
								}					
								break;
							case 5:
								switch(keyCode)
								{
									case Configration.KEY_UP:
									case KEY_NUM2:
										b_Selected--;
										if(b_Selected < 0)
										{
											b_Selected = 3;
										}
										break;
									case Configration.KEY_DOWN:
									case KEY_NUM8:
										b_Selected++;
										if(b_Selected > 3)
										{
											b_Selected = 0;
										}
										break;
									case Configration.KEY_OK:
									case KEY_NUM5:
										switch(b_Selected)
										{
											case 0:
												if(HeroMoney >= 30)
												{
													HeroMoney -= 30;
													YellowKey += 1;
												}
												break;
											case 1:
												if(HeroMoney >= 50)
												{
													HeroMoney -= 50;
													BlueKey += 1;
												}												
												break;
											case 2:
												if(HeroMoney >= 100)
												{
													HeroMoney -= 100;
													RedKey += 1;
												}												
												break;
											case 3:
												CurrentState = Configration.NORMAL;
												b_Selected = 0;
												break;
										}
										break;
								}								
								break;
							case 12:
								switch(keyCode)
								{
									case Configration.KEY_UP:
									case KEY_NUM2:
										b_Selected--;
										if(b_Selected < 0)
										{
											b_Selected = 3;
										}
										break;
									case Configration.KEY_DOWN:
									case KEY_NUM8:
										b_Selected++;
										if(b_Selected > 3)
										{
											b_Selected = 0;
										}
										break;
									case Configration.KEY_OK:
									case KEY_NUM5:
										switch(b_Selected)
										{
											case 0:
												if(YellowKey >= 1)
												{
													YellowKey -= 1;
													HeroMoney += 10;
												}
												break;
											case 1:
												if(BlueKey >= 1)
												{
													BlueKey -= 1;
													HeroMoney += 30;
												}												
												break;
											case 2:
												if(RedKey >= 1)
												{
													RedKey -= 1;
													HeroMoney += 70;
												}												
												break;
											case 3:
												CurrentState = Configration.NORMAL;
												b_Selected = 0;
												break;
										}
										break;
								}								
								break;
						}
						break;
					case Configration.BEELZEBUB:
						switch(b_Stage)
						{
							case 16:
								if(!is_DialogedForBeelzeBub && Message != null)
								{
									b_DialogIndexForBeelzeBub++;
									DialogForBeelzeBub();
								}
								else
								{
									Message = null;
									is_DialogedForBeelzeBub = false;
									b_DialogIndexForBeelzeBub = 0;
									CurrentState = Configration.NORMAL;
								}
								break;
							case 19:
								if(!is_DialogedForBeelzeBub && Message != null)
								{
									b_DialogIndexForBeelzeBub++;
									DialogForBeelzeBub();
								}
								else
								{
									Message = null;
									if(Fight(Configration.Mn[29]) && !BeelzeBubIsDead)
									{
										setValue();
										BeelzeBubIsDead = true;
										is_DialogedForBeelzeBub = false;
										b_DialogIndexForBeelzeBub = 0;
										DialogForBeelzeBub();
									}									
									else
									{
										CurrentState = Configration.NORMAL;
										BeelzeBubIsDead = false;
									}
								}
								break;								
						}
						break;
					case Configration.PRINCESS:
						if(!is_DialogedForPrincess && Message != null)
						{
							b_DialogIndexForPrincess++;
							DialogForPrincess();
						}
						else
						{
							Message = null;
							CurrentState = Configration.NORMAL;
						}
						break;
					case Configration.JACK:
						if(!is_DialogedForJack && Message != null)
						{
							b_DialogIndexForJack++;
							DialogForJack();
						}
						else
						{
							Message = null;
							CurrentState = Configration.NORMAL;
						}
						break;
					case Configration.ANGEL:
						if(!is_DialogedForAngle && Message != null)
						{
							b_DialogIndexForAngle++;
							DialogForAngle();
						}
						else
						{
							Message = null;
							CurrentState = Configration.NORMAL;
						}
						break;
					case Configration.ABOUT:
						CurrentState = Configration.NORMAL;
						break;
					case Configration.LUOPAN:
						switch(keyCode)
						{
							case KEY_NUM1:
								b_Selected = 0;
								CurrentState = Configration.NORMAL;
								break;
							case Configration.KEY_UP:
							case KEY_NUM2:
								b_Selected -= 4;
								if(b_Selected <= 0)
								{
									b_Selected += 20;
								}
								break;
							case Configration.KEY_DOWN:
							case KEY_NUM8:
								b_Selected += 4;
								if(b_Selected > 20)
								{
									b_Selected -= 20;
								}
								break;
							case Configration.KEY_LEFT:
							case KEY_NUM4:
								b_Selected--;
								if(b_Selected <= 0)
								{
									b_Selected = 20;
								}
								break;
							case Configration.KEY_RIGHT:
							case KEY_NUM6:
								b_Selected++;
								if(b_Selected > 20)
								{
									b_Selected = 1;
								}
								break;
							case Configration.KEY_OK:
							case KEY_NUM5:
								if(b_Selected <= maxStage && b_Selected != b_Stage)
								{
									SaveMap();
									if(b_Stage > b_Selected)
									{
										b_x = b_end[b_Selected * 2];
										b_y = b_end[b_Selected * 2 + 1];										
									}
									else
									{
										b_x = b_star[b_Selected * 2];
										b_y = b_star[b_Selected * 2 + 1];	
									}
									b_Stage = b_Selected;
									initStage();				
									CurrentState = Configration.STAGECHANGED;
									i_num = 1;									
									b_Selected = 0;
								}
								break;
						}
						break;
				}
				break;
			case Configration.SS_END:
				FreeImage();
				SS_NOW = Configration.SS_MENU;
				LoadImage();
				break;
			case Configration.SS_ABOUT:
				FreeImage();
				SS_NOW = Configration.SS_MENU;
				LoadImage();
				break;
		}
	}
	
	public void paint(Graphics g)
	{
		switch(SS_NOW)
		{
			case Configration.SS_LOGO:
				drawLogo(g);
				break;
			case Configration.SS_TITLE:
				drawTitle(g);
				break;
			case Configration.SS_MENU:
				drawMenu(g);
				break;
			case Configration.SS_INTRO:
				drawIntro(g);
				break;
			case Configration.SS_GAMING:
				drawGaming(g);
				break;
			case Configration.SS_END:
				drawEnd(g);
				break;
			case Configration.SS_ABOUT:
				drawAbout(g);
				break;
		}
	}
	
	private void drawMenu(Graphics g)
	{
		g.setColor(0x000000);
		g.fillRect(0, 0, i_lcdWidth, i_lcdHeight);
		g.drawImage(img_Title, i_lcdCenterX, i_lcdCenterY, Configration.G_BH);
		
		for(byte i = 0; i < Configration.menu.length; i++)
		{
			if(i == b_Selected)
			{
				g.drawImage(img_jtr, i_lcdCenterX - 40, i_lcdCenterY + (i + 1) * 20 - 5,
						Configration.G_BH);
				g.drawImage(img_jtl, i_lcdCenterX + 40, i_lcdCenterY + (i + 1) * 20 - 5,
						Configration.G_BH);
				g.setColor(0xD733E6);
				g.setFont(Font.getFont(Font.FACE_MONOSPACE, Font.STYLE_BOLD, Font.SIZE_MEDIUM));
			}
			else
			{
				g.setColor(0xFFFFFF);
				g.setFont(Font.getFont(Font.FACE_MONOSPACE, Font.STYLE_PLAIN, Font.SIZE_MEDIUM));
			}
			g.drawString(Configration.menu[i], i_lcdCenterX, i_lcdCenterY + (i + 1) * 20,
					Configration.G_BH);
		}
	}
	
	private void drawTitle(Graphics g)
	{
		g.setColor(0x000000);
		g.fillRect(0, 0, i_lcdWidth, i_lcdHeight);
		g.drawImage(img_Title, i_lcdCenterX, i_lcdCenterY, Configration.G_BH);
		
		if(i_num % 6 < 3)
		{
			g.drawImage(img_AnyKey, i_lcdCenterX, i_lcdCenterY + 30, Configration.G_BH);
		}
	}
	
	private void ExitGame()//结束游戏
	{
		is_Run = false;
		GM.destroyApp(true);
	}
	
//	=====================战斗处理=========================	
	private boolean Fight(Monster m)
	{
		if(m.MonsterDc >= HeroAc)
		{
			return false;
		}
		else  
		{
			if(m.MonsterAc <= HeroDc)
			{
				HeroExp += m.MonsterExp;
				HeroMoney += m.MonsterMoney;
				Msg = "战斗胜利!获得经验" + m.MonsterExp + "点,获得" + m.MonsterMoney + "个金币";
				i_num = 1;
				is_Move = false;
				return true;
			}
			else
			{
				int j = HeroLp / (m.MonsterAc - HeroDc);
				int n = m.MonsterLp / (HeroAc - m.MonsterDc);
				if(n >= j)
				{
					return false;
				}
				else
				{
					if(m.MonsterAc - HeroDc > 0)
					{
						HeroLp -= n * (m.MonsterAc - HeroDc);
					}
					HeroExp += m.MonsterExp;
					HeroMoney += m.MonsterMoney;
					Msg = "战斗胜利!获得经验" + m.MonsterExp + "点,获得" + m.MonsterMoney + "个金币";
					i_num = 1;
					is_Move = false;
					return true;
				}
			}
		}
	}
	
	private void showInfo(String info, Graphics g)
	{
		g.setColor(0x000000);
		g.fillRect(0, 0, i_lcdWidth, i_lcdHeight);
		
		g.setClip(0, 30, i_lcdWidth, i_lcdHeight - 60);
		Font f = Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN, Font.SIZE_MEDIUM);
		byte w = (byte)f.charWidth('汉');
		byte width = (byte)(i_lcdWidth / w );
		byte height = (byte)(info.length() / width);
		if(info.length() % width != 0)
		{
			height++;
		}
		int index = -1;
		byte h = 20;
		IntroHeight = height * h;
		g.setColor(0xFFFFFF);
		for(byte i = 0; i < height; i++)
		{
			for(byte j = 0; j < width; j++)
			{
				index++;
				if(index < info.length())	
					g.drawString(info.substring(index, index +1),
							3 + j * w, i * h + offestY, Configration.G_TL);
			}
		}
		if(i_num % 6 > 3)
		{
			g.setClip(i_lcdWidth - 100, i_lcdHeight - 30, 100, 30);
			g.drawImage(img_AnyKey, i_lcdWidth - 100, i_lcdHeight - 25, Configration.G_TL);
		}
	}
	
	private void showMonInfo(Graphics g)
	{
		g.setColor(0xFF0000);
		g.setStrokeStyle(Graphics.DOTTED);
		g.drawRect(i_lcdCenterX - 16, i_lcdCenterY -16, 32, 32);
				
		int UserLp = 0;
		byte f = mapArray[b_Dy * 11 + b_Dx];
		
		if(f >= -35  && f <= -5)
		{
			byte index = (byte)(-f - 5);
			
			if(f == -15)
			{
				UserLp += HeroLp / 4;			
			}
			else if(f == -21)
			{
				UserLp += HeroLp / 3;
				if(b_Stage == 21)
				{
					index = 31;
				}
			}
			else if(f == -34 && b_Stage == 21)
			{
				index = 35;			
			}
			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;
			}
			
			Monster m = Configration.Mn[index];
			if(m.MonsterDc >= HeroAc)
			{
				UserLp = -1;
			}
			else  
			{
				if(m.MonsterAc <= HeroDc)
				{
					UserLp += 0;
				}
				else
				{
					int n = m.MonsterLp / (HeroAc - m.MonsterDc);
					UserLp += n * (m.MonsterAc - HeroDc);
				}
			}
			
			int x = i_lcdCenterX - 52;
			int y = i_lcdCenterY - 72;
			
			g.setClip(x, y, 104, 144);
			g.setStrokeStyle(Graphics.SOLID);
			g.setColor(0x00FFFF);
			g.drawRect(x, y, 103, 143);
			g.drawString(m.Name, i_lcdCenterX, y + 2, Configration.G_TH);
			y += 20;
			g.drawLine(x, y, x + 103, y);
			y += 2;
			x += 3;
			g.drawString("生命值:" + m.MonsterLp, x, y, Configration.G_TL);
			y += 20;
			g.drawString("攻击力:" + m.MonsterAc, x, y, Configration.G_TL);
			y += 20;
			g.drawString("防御力:" + m.MonsterDc, x, y, Configration.G_TL);
			y += 20;
			g.drawString("经验值:" + m.MonsterExp, x, y, Configration.G_TL);
			y += 20;
			g.drawString("金钱:" + m.MonsterMoney, x, y, Configration.G_TL);
			y += 20;
			if(UserLp < 0)
			{
				g.drawString("耗血:??????", x, y, Configration.G_TL);
			}
			else
			{
				g.drawString("耗血:" + UserLp, x, y, Configration.G_TL);
			}		
		}
	}
	

⌨️ 快捷键说明

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