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

📄 sfcanvas.java

📁 一个RPG的JAVA游戏
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
							isFirst = true;
							myid = rs.addRecord(heroSprite.chgTorms(isFirst), 0, heroSprite.chgTorms(isFirst).length);
							isFirst = false;
							GAME_STATE = 1;
						}
						catch (Exception exception6)
						{
							System.out.println("这里的问题挖?" + exception6);
						}
						break;
					}
					if (isData2)
					{
						myid = 2;
						GAME_STATE = 1;
						break;
					}
					try
					{
						rs = RecordStore.openRecordStore(dataname, true);
						doHeroInit();
						isFirst = true;
						myid = rs.addRecord(heroSprite.chgTorms(isFirst), 0, heroSprite.chgTorms(isFirst).length);
						isFirst = false;
						System.out.println("           " + myid + "   " + heroData);
						GAME_STATE = 1;
					}
					catch (Exception exception7) { }
					break;
				}
				flushGraphics();
				break;

			case 1: // '\001'
				heroSprite.nextexp = ((heroSprite.prevexp + 50 * (heroSprite.lv + 1) * (heroSprite.lv - 4) * (heroSprite.lv - 4)) - 40 * (heroSprite.lv - 3) * (heroSprite.lv - 3)) + 150;
				keyState = getKeyStates();
				mapTiled.drawMap(mapdir, setX, setY);
				try
				{
					Thread.sleep(50L);
				}
				catch (InterruptedException interruptedexception3)
				{
					interruptedexception3.printStackTrace();
				}
				g.setColor(255, 255, 255);
				g.fillRect(0, 0, getWidth(), getHeight());
				g.drawImage(bloodImage, 0, 0, 20);
				heroSprite.doMove(keyState);
				setX = (heroSprite.x - getWidth() / 2) + 20;
				setY = (heroSprite.y - getHeight() / 2) + 20;
				if (mapdir == 1)
				{
					ASprite aasprite[] = {
						monsterSprite, monsterSprite1, monsterSprite2, monsterSprite3, monsterSprite4, monsterSprite5, monsterSprite6, monsterSprite7, monsterSprite8, monsterSprite9, 
						monsterSprite10, heroSprite
					};
					chgMonsterOrder(aasprite);
					MonsterSprite amonstersprite[] = {
						monsterSprite, monsterSprite1, monsterSprite2, monsterSprite3, monsterSprite4, monsterSprite5, monsterSprite6, monsterSprite7, monsterSprite8, monsterSprite9, 
						monsterSprite10
					};
					for (int l = 0; l < amonstersprite.length; l++)
						doMonster(amonstersprite[l], heroSprite, rs, myid);

					if ((heroSprite.x - getWidth() / 2) + 20 <= 0)
						setX = 0;
					if ((heroSprite.x - getWidth() / 2) + 20 >= 625 - getWidth())
						setX = 625 - getWidth();
					if ((heroSprite.y - getHeight() / 2) + 20 <= 0)
						setY = 0;
					if ((heroSprite.y - getHeight() / 2) + 20 >= 625 - getHeight())
						setY = 625 - getHeight();
					layManager.setViewWindow(setX, setY, getWidth(), getHeight());
					layManager.paint(g, 0, 0);
					for (int i1 = 0; i1 < amonstersprite.length; i1++)
						monsterBlood(amonstersprite[i1]);

					if (marktime < 5)
						marktime++;
					else
						marktime = 0;
					g.setColor(255);
					g.fillTriangle(35 - marktime - setX, 45 - marktime - setY, 45 - marktime - setX, 35 - marktime - setY, 35 - marktime - setX, 35 - marktime - setY);
					for (int j1 = 0; j1 < aasprite.length; j1++)
					{
						aasprite[j1].setPosition(aasprite[j1].dx - setX, aasprite[j1].dy - setY);
						if (aasprite[j1].dx < getWidth() + setX && aasprite[j1].dx > setX && aasprite[j1].dy < getHeight() + setY && aasprite[j1].dy > setY)
							aasprite[j1].paint(g);
					}

					if (heroSprite.x < 20 && heroSprite.y < 20)
					{
						gotoMap(0);
						mapdir = 0;
						heroSprite.x = 130;
						heroSprite.y = 390;
					}
					if (!heroSprite.isAlive)
					{
						gotoMap(0);
						mapdir = 0;
						heroSprite.x = 180;
						heroSprite.y = 180;
						heroSprite.hp = heroSprite.maxhp;
						heroSprite.isAlive = true;
					}
				} else
				{
					ASprite aasprite1[] = {
						npcSprite, npcSprite1, heroSprite
					};
					chgMonsterOrder(aasprite1);
					if (heroSprite.lv <= 6)
					{
						heroSprite.prevexp = (heroSprite.lv * heroSprite.lv * 60 - (heroSprite.lv - 1) * (heroSprite.lv - 1) * 60) + 150;
						heroSprite.nextexp = ((heroSprite.prevexp + (heroSprite.lv - 1) * (heroSprite.lv - 1) * 60) - (heroSprite.lv - 2) * (heroSprite.lv - 2) * 60) + 150;
					} else
					{
						heroSprite.prevexp = (heroSprite.lv * (heroSprite.lv - 5) * (heroSprite.lv - 5) - 40 * (heroSprite.lv - 4) * (heroSprite.lv - 4)) + 150;
						heroSprite.nextexp = ((heroSprite.prevexp + 50 * (heroSprite.lv + 1) * (heroSprite.lv - 4) * (heroSprite.lv - 4)) - 40 * (heroSprite.lv - 3) * (heroSprite.lv - 3)) + 150;
					}
					if ((heroSprite.x - getWidth() / 2) + 20 <= 0)
						setX = 0;
					if ((heroSprite.x - getWidth() / 2) + 20 >= 465 - getWidth())
						setX = 465 - getWidth();
					if ((heroSprite.y - getHeight() / 2) + 20 <= 0)
						setY = 0;
					if ((heroSprite.y - getHeight() / 2) + 20 >= 465 - getHeight())
						setY = 465 - getHeight();
					layManager.setViewWindow(setX, setY, getWidth(), getHeight());
					layManager.paint(g, 0, 0);
					if (npcSprite.isTalkable(heroSprite.x, heroSprite.y))
					{
						g.setColor(0xffffff);
						g.fillRoundRect((npcSprite.dx + 30) - setX, npcSprite.dy - setY, 20, 10, 3, 3);
						g.setColor(0);
						g.drawString("......", (npcSprite.dx + 32) - setX, npcSprite.dy - setY - 5, 20);
						if (keyState == 256 && !isOpenshop)
						{
							isOpenshop = true;
							heroSprite.isPause = true;
						}
					} else
					{
						isOpenshop = false;
					}
					if (npcSprite1.isTalkable(heroSprite.x, heroSprite.y))
					{
						g.setColor(0xffffff);
						g.fillRoundRect(npcSprite1.dx - setX, npcSprite1.dy - setY - 20, 20, 10, 3, 3);
						g.setColor(0);
						g.drawString("......", npcSprite1.dx - setX, npcSprite1.dy - setY - 25, 20);
						if (keyState == 256)
							if (!isOpenmisn)
							{
								isOpenmisn = true;
								heroSprite.isPause = true;
							} else
							{
								isOpenmisn = false;
								heroSprite.isPause = false;
							}
					} else
					{
						isOpenmisn = false;
					}
					if (marktime < 5)
						marktime++;
					else
						marktime = 0;
					g.setColor(0xffcc00);
					g.fillTriangle(134 - setX, (430 + marktime) - setY, 144 - setX, (440 + marktime) - setY, 154 - setX, (430 + marktime) - setY);
					g.drawImage(houseImagebottom, 3 - setX, 145 - setY, 20);
					for (int j = 0; j < 3; j++)
					{
						aasprite1[j].setPosition(aasprite1[j].dx - setX, aasprite1[j].dy - setY);
						if (aasprite1[j].dx < getWidth() + setX && aasprite1[j].dx > setX && aasprite1[j].dy < getHeight() + setY && aasprite1[j].dy > setY)
							aasprite1[j].paint(g);
					}

					g.drawImage(houseImagetop, 3 - setX, 60 - setY, 20);
					if (heroSprite.x < 174 && heroSprite.x > 94 && heroSprite.y > 400)
					{
						gotoMap(1);
						mapdir = 1;
						heroSprite.x = 30;
						heroSprite.y = 30;
					}
				}
				g.setColor(0x350bec);
				switch (mapdir)
				{
				case 0: // '\0'
					g.drawString("引导之地", getWidth(), getHeight(), 40);
					break;

				case 1: // '\001'
					g.drawString("新月之尖", getWidth(), getHeight(), 40);
					break;
				}
				if (isOpenItem)
				{
					g.drawImage(gearImage, 20, 10, 20);
					g.setColor(0xffffff);
					g.drawString(heroSprite.hp + "/" + heroSprite.maxhp, 130, 20, 24);
					g.drawString(heroSprite.exp + "/" + heroSprite.nextexp, 130, 35, 24);
					g.drawString(heroSprite.at + "/" + heroSprite.df, 130, 50, 24);
					g.drawString("等级" + heroSprite.itemlv, 130, 65, 24);
					if (keyState == 4)
						if (!isDelpress)
						{
							if (itempage > 1)
								itempage--;
						} else
						if (!isChkdel)
							isChkdel = true;
					if (keyState == 32 && itempage < 4)
						if (!isDelpress)
						{
							if (itempage < 4)
								itempage++;
						} else
						if (isChkdel)
							isChkdel = false;
					g.drawString(heroSprite.gold + "G", 130, 95, 24);
					drawItem(heroSprite.itemcode, itempage);
					g.setColor(0x60a51234);
					switch (itemcho)
					{
					case 1: // '\001'
						g.drawRect(40, 105, 80, 15);
						break;

					case 2: // '\002'
						g.drawRect(40, 120, 80, 15);
						break;

					case 3: // '\003'
						g.drawRect(40, 135, 80, 15);
						break;
					}
				}
				if (isOpenshop)
				{
					g.drawImage(shopImage, 20, 10, 20);
					switch (nowShopcho)
					{
					case 0: // '\0'
						g.setColor(0xffffff);
						g.drawRect(37, 30, 17, 17);
						g.setColor(0x8a56e8);
						g.drawString("药瓶,补充", 90, 93, 20);
						g.drawString("HP至满,价格" + itemprice[0] + "G", 40, 107, 20);
						break;

					case 1: // '\001'
						g.setColor(0xffffff);
						g.drawRect(56, 30, 17, 17);
						g.setColor(0x8a56e8);
						g.drawString("布衣,攻防", 90, 93, 20);
						g.drawString(heroSprite.itemat[1] + "/" + heroSprite.itemdf[1] + ",价格" + itemprice[1] + "G", 40, 107, 20);
						break;

					case 2: // '\002'
						g.setColor(0xffffff);
						g.drawRect(75, 30, 17, 17);
						g.setColor(0x8a56e8);
						g.drawString("稠衣,攻防", 90, 93, 20);
						g.drawString(heroSprite.itemat[2] + "/" + heroSprite.itemdf[2] + ",价格" + itemprice[2] + "G", 40, 107, 20);
						break;

					case 3: // '\003'
						g.setColor(0xffffff);
						g.drawRect(98, 30, 17, 17);
						g.setColor(0x8a56e8);
						g.drawString("铁甲,攻防", 90, 93, 20);
						g.drawString(heroSprite.itemat[3] + "/" + heroSprite.itemdf[3] + ",价格" + itemprice[3] + "G", 40, 107, 20);
						break;

					case 4: // '\004'
						g.setColor(0xffffff);
						g.drawRect(117, 30, 17, 17);
						g.setColor(0x8a56e8);
						g.drawString("铜衣,攻防", 90, 93, 20);
						g.drawString(heroSprite.itemat[4] + "/" + heroSprite.itemdf[4] + ",价格" + itemprice[4] + "G", 40, 107, 20);
						break;
					}
					switch (keyState)
					{
					default:
						break;

					case 32: // ' '
						if (nowShopcho < 4)
							nowShopcho++;
						break;

					case 4: // '\004'
						if (nowShopcho > 0)
							nowShopcho--;
						break;

					case 2: // '\002'
						if (buynum < heroSprite.numEmpty && heroSprite.gold >= itemprice[nowShopcho] * (buynum + 1))
							buynum++;
						break;

					case 64: // '@'
						if (buynum > 0)
							buynum--;
						break;

					case 256: 
						if (buynum == 0)
							break;
label0:
						for (int i = 0; i <= buynum; i++)
						{
							int k = 0;
							do
							{
								if (k >= 12)
									continue label0;
								if (heroSprite.itemcode[k] == '0')
								{
									buynum--;
									heroSprite.gold = heroSprite.gold - itemprice[nowShopcho];
									heroSprite.itemcode[k] = chgToitemcode(nowShopcho);
									continue label0;
								}
								k++;
							} while (true);
						}

						buynum = 0;
						try
						{
							rs.setRecord(myid, heroSprite.chgTorms(false), 0, heroSprite.chgTorms(false).length);
						}
						catch (Exception exception8)
						{
							System.out.println(exception8);
						}
						break;
					}
					g.setColor(0xffffff);
					g.drawString(String.valueOf(buynum), 111, 50, 20);
					g.setColor(0x8a56e8);
					g.drawString(String.valueOf(heroSprite.numEmpty), 110, 128, 20);
				}
				if (heroSprite.hp > heroSprite.maxhp)
					heroSprite.hp = heroSprite.maxhp;
				if (isOpenmisn)
				{
					g.drawImage(missionImage, 20, 15, 20);
					g.setColor(0xffff99);
					g.drawString("您的任务", 70, 35, 20);
					g.setColor(0xffffff);
					g.drawString("勇士,兽族人在我", 44, 60, 20);
					g.drawString("国边境大肆杀戮,", 44, 75, 20);
					g.drawString("举国上下一片恐慌,", 44, 90, 20);
					g.drawString("为了我们国家的存", 44, 105, 20);
					g.drawString("亡,向这群暴虐的", 44, 120, 20);
					g.drawString("野兽开战吧!", 44, 135, 20);
				}
				g.setColor(0x8a56e8);
				g.drawString(heroSprite.x + "," + heroSprite.y, getWidth(), 0, 24);
				g.drawImage(hplImage, -51 + (84 * heroSprite.hp) / heroSprite.maxhp, 0, 20);
				g.drawImage(hpImage, 0, 0, 20);
				g.drawRoundRect(0, getHeight() - 6, 40, 5, 3, 3);
				g.fillRoundRect(0, getHeight() - 5, ((heroSprite.exp - heroSprite.prevexp) * 40) / (heroSprite.nextexp - heroSprite.prevexp), 3, 3, 3);
				g.drawString("Lv" + heroSprite.lv, 45, getHeight() - 15, 20);
				flushGraphics();
				break;
			}
		while (true);
	}

	public ASprite[] chgMonsterOrder(ASprite aasprite[])
	{
		for (int i = 0; i < aasprite.length - 1; i++)
		{
			for (int j = 0; j < aasprite.length - 1; j++)
				if (aasprite[j].dy > aasprite[j + 1].dy)
				{
					tempMonster = aasprite[j];
					aasprite[j] = aasprite[j + 1];
					aasprite[j + 1] = tempMonster;
				}

		}

		return aasprite;
	}

	public char chgToitemcode(int i)
	{
		switch (i)
		{
		case 0: // '\0'
			return '5';

		case 1: // '\001'
			return '1';

		case 2: // '\002'
			return '2';

		case 3: // '\003'
			return '3';

		case 4: // '\004'
			return '4';
		}
		return '6';
	}

}

⌨️ 快捷键说明

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