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

📄 gamecanvas.java

📁 手机版大航海时代
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
						g.drawString(gutTemp[i], 17, 55 + i * strHeight,
								Graphics.BASELINE | Graphics.LEFT);
					}
				}
			}
			break;
		// 正常航行界面
		case 0:
			// 游戏菜单界面
		case 5:

			// 清屏
			clearCanvas(g);

			// 绘制主地图
			switch (mapIndex) {
			case 0:
				for (int w = my; w < my + 15; w++) {
					for (int h = mx; h < mx + 13; h++) {
						x1 = ((h - mx) * 16)
								- (((mainMapArray[w][h] - 1) % 8) * 16);
						y1 = ((w - my) * 16)
								- (((mainMapArray[w][h] - 1) / 8) * 16);
						g.setClip((h - mx) * 16 - dx, (w - my) * 16 - dy, 16,
								16);
						// 绘制图片
						g.drawImage(map_0, x1 - dx, y1 - dy, Graphics.TOP
								| Graphics.LEFT);
					}
				}

				// 绘制玩家船只
				g.setClip(0, 0, width, height);
				g.drawImage(player, x, y, Graphics.TOP | Graphics.LEFT);
				break;
			case 1: // 绘制隐藏地图1
				drawMap(g, map_1, 1);
				break;
			case 2: // 绘制隐藏地图2
				drawMap(g, map_2, 2);
				break;
			case 3: // 绘制隐藏地图3
				drawMap(g, map_3, 3);
				break;
			case 4: // 绘制隐藏地图4
				drawMap(g, map_4, 4);
				break;
			case 5: // 绘制隐藏地图5
				drawMap(g, map_5, 5);
				break;
			// case 6: // 绘制隐藏地图6
			// drawMap(g, map_6, 6);
			// break;
			}

			// 游戏菜单
			if (scene == 5) {
				g.drawImage(runningMenu, (width - runningMenu.getWidth()) / 2,
						(height - runningMenu.getHeight()) / 2, Graphics.TOP
								| Graphics.LEFT);
				g.drawImage(imageChoose, runningMenuX, runningMenuY
						+ runningMenuSelect * 20, Graphics.TOP | Graphics.LEFT);
			}
			g.drawImage(runs, 0, 0, 20);
			break;
		// 对战界面
		case 1:
			drawAction(g);
			break;
		// 进入港口界面
		case 2:
			clearCanvas(g);
			g.drawImage(gutBack, 0, 0, 20);
			g.drawString(scene2Str[0] + portName[getPortIndex()], 20, 20, 20);
			g.drawImage(imageChoose, width / 2, choosey * 25 + 30,
					Graphics.VCENTER | Graphics.HCENTER);
			g.drawString(scene2Str[1], width / 2, 1 * 25 + 37,
					Graphics.BASELINE | Graphics.HCENTER);
			g.drawString(scene2Str[2], width / 2, 2 * 25 + 37,
					Graphics.BASELINE | Graphics.HCENTER);
			g.drawString(scene2Str[3], width / 2, 3 * 25 + 37,
					Graphics.BASELINE | Graphics.HCENTER);
			g.drawString(scene2Str[4], width / 2, 4 * 25 + 37,
					Graphics.BASELINE | Graphics.HCENTER);
			g.drawString(scene2Str[5], width / 2, 5 * 25 + 37,
					Graphics.BASELINE | Graphics.HCENTER);

			g.drawImage(FontLift, 0, height, Graphics.LEFT | Graphics.BOTTOM);
			g
					.drawImage(FontIn, width, height, Graphics.RIGHT
							| Graphics.BOTTOM);

			g.drawString(String.valueOf(month) + scene2Str[6], 130, 22, 20);
			g.drawString(String.valueOf(date) + scene2Str[7], 150, 22, 20);
			break;
		// NPC对话界面
		case 3:

			// 清屏
			clearCanvas(g);
			g.drawImage(speak, 0, 0, Graphics.TOP | Graphics.LEFT);

			gutTemp = splitString(mainDalog);

			for (int i = 0; i < gutTemp.length; i++) {
				if (i == 0) {
					g.drawString(gutTemp[i], 17 + strWidth * 2, 27 + i
							* strHeight, Graphics.BASELINE | Graphics.LEFT);
				} else {
					g.drawString(gutTemp[i], 17, 27 + i * strHeight,
							Graphics.BASELINE | Graphics.LEFT);
				}
			}
			break;
		// 跑商任务界面
		case 4:
			// 清屏
			clearCanvas(g);
			g.drawImage(gutBack, 0, 0, Graphics.TOP | Graphics.LEFT);

			// 绘制港口及人物头像
			g.setClip(headX, headY, 25, 25);
			g.drawImage(npcHead, headX - (portIndex - 1) * 25, headY,
					Graphics.TOP | Graphics.LEFT);
			g.setClip(0, 0, width, height);
			g.drawString(portName[portIndex] + " 跑商任务", headX + 30, headY + 5,
					Graphics.TOP | Graphics.LEFT);
			// 绘制任务
			g.drawString(scene4Str[0], width / 2, 65, Graphics.BASELINE
					| Graphics.HCENTER);
			g.drawString(scene4Str[1], width / 2, 65 + 16, Graphics.BASELINE
					| Graphics.HCENTER);
			g.drawString(scene4Str[2], width / 2, 65 + 32, Graphics.BASELINE
					| Graphics.HCENTER);
			g.drawString(scene4Str[3], width / 2, 65 + 48, Graphics.BASELINE
					| Graphics.HCENTER);
			g.drawString(scene4Str[4], width / 2, 65 + 64, Graphics.BASELINE
					| Graphics.HCENTER);
			g.drawString(scene4Str[5], width / 2, 65 + 80, Graphics.BASELINE
					| Graphics.HCENTER);
			g.drawString(scene4Str[6], width / 2, 65 + 96, Graphics.BASELINE
					| Graphics.HCENTER);

			// 绘制选框
			g.drawImage(imageChoose, width / 2, 58 + runShangSelect * 16,
					Graphics.HCENTER | Graphics.VCENTER);
			break;
		// 查看船体属性界面
		case 6:
			clearCanvas(g);
			g.drawImage(property, 0, 0, 20);
			g.drawString(String.valueOf(power[9]), 79, 44, Graphics.TOP
					| Graphics.RIGHT);
			g.drawString(String.valueOf(power[6]), 151, 44, Graphics.TOP
					| Graphics.RIGHT);
			g.drawString(String.valueOf(ammo[0]), 79, 68, Graphics.TOP
					| Graphics.RIGHT);
			g.drawString(String.valueOf(ammo[1]), 152, 68, Graphics.TOP
					| Graphics.RIGHT);
			g.drawString(String.valueOf(ammo[2]), 152, 92, Graphics.TOP
					| Graphics.RIGHT);
			g.drawString(String.valueOf(ammo[3]), 79, 92, Graphics.TOP
					| Graphics.RIGHT);
			g.drawString(String.valueOf(power[2]), 65, 119, Graphics.TOP
					| Graphics.RIGHT);
			g.drawString(String.valueOf(power[7]), 110, 119, Graphics.TOP
					| Graphics.RIGHT);
			g.drawString(String.valueOf(power[3]), 156, 119, Graphics.TOP
					| Graphics.RIGHT);
			g.drawString(String.valueOf(power[4]), 64, 148, Graphics.TOP
					| Graphics.RIGHT);
			g.drawString(String.valueOf(power[8]), 110, 148, Graphics.TOP
					| Graphics.RIGHT);
			g.drawString(String.valueOf(power[5]), 156, 148, Graphics.TOP
					| Graphics.RIGHT);
			g.drawImage(FontLift, 0, height, Graphics.LEFT | Graphics.BOTTOM);
			break;
		// 保存游戏界面
		case 7:
			// 修理界面
		case 10:
			// 修理提示界面
		case 12:
			int tempWidth = yes.getWidth();
			int tempHeight = yes.getHeight();

			// 部分清屏
			clearSome(g);

			// 绘制提示框图片
			g.drawImage(cueImage, 1, cy, Graphics.TOP | Graphics.LEFT);
			// 保存界面信息(需要选项“是/否”)
			if (scene == 7) {
				g.drawString(scene7Str, width / 2, cy + 18, Graphics.BASELINE
						| Graphics.HCENTER);
				// 绘制选框及文字
				g.drawImage(yes, width / 2 - tempWidth - 2, height - 8
						- tempHeight, Graphics.TOP | Graphics.LEFT);
				g.drawImage(no, width / 2 + 2, height - 8 - tempHeight,
						Graphics.TOP | Graphics.LEFT);
				g
						.drawRect(width / 2 - tempWidth + sx * (tempWidth + 4)
								- 2, height - 12 - tempHeight, tempWidth + 4,
								tempHeight + 4);
			}
			// 绘制修理信息(需要选项“是/否”)
			if (scene == 10) {
				// 绘制提示框信息(当前修理费用)
				g.drawString(scene10Str + String.valueOf(repairCharge) + "金币",
						width / 2, cy + 22, Graphics.BASELINE
								| Graphics.HCENTER);

				// 绘制选框及文字
				g.drawImage(yes, width / 2 - tempWidth - 2, height - 8
						- tempHeight, Graphics.TOP | Graphics.LEFT);
				g.drawImage(no, width / 2 + 2, height - 8 - tempHeight,
						Graphics.TOP | Graphics.LEFT);
				g.drawRect(width / 2 - tempWidth + repairLabel
						* (tempWidth + 4) - 2, height - 12 - tempHeight,
						tempWidth + 4, tempHeight + 4);
			}

			// 修理提示界面
			if (scene == 12) {
				if (canRepair) {
					g.drawString(scene12Str[0], width / 2, cy + 30,
							Graphics.BASELINE | Graphics.HCENTER);
				} else {
					g.drawString(scene12Str[1], width / 2, cy + 30,
							Graphics.BASELINE | Graphics.HCENTER);
				}
			}
			break;
		// 查看当前任务界面(主线任务 跑商任务)
		case 8:
			// 是否绘制任务界面
			if (draw) {
				// 背景
				g.drawImage(gutBack, 0, 0, Graphics.TOP | Graphics.LEFT);
				// 如果玩家当前有任务则绘制
				if (runShangTask[0] == 1) {
					g.drawString(scene8Str[0], x3, y3, Graphics.BASELINE
							| Graphics.LEFT);
					g.drawString(taskCue[runShangTask[1]], 17 + strWidth * 2,
							y3 + 5 + strHeight, Graphics.BASELINE
									| Graphics.LEFT);
				} else { // 当前没有任务时绘制
					g.drawString(scene8Str[1], x3, y3, Graphics.BASELINE
							| Graphics.LEFT);
				}
				if (mainTask[1] == 1) { // 如果当前任务处于触发状态
					g.drawString(scene8Str[2], x3, height / 2 + 10,
							Graphics.BASELINE | Graphics.LEFT);
					if (mainTaskCueTemp == null) {
						mainTaskCueTemp = splitString(mainTaskCue[mainTask[0] - 1]);
					}
					for (int i = 0; i < mainTaskCueTemp.length; i++) {
						if (i == 0) {
							g
									.drawString(mainTaskCueTemp[i], x3
											+ strWidth * 2, height / 2
											+ strHeight + i * strHeight + 15,
											Graphics.BASELINE | Graphics.LEFT);
						} else {
							g.drawString(mainTaskCueTemp[i], 17, height / 2
									+ strHeight + i * strHeight + 15,
									Graphics.BASELINE | Graphics.LEFT);
						}
					}
				} else {
					g.drawString(scene8Str[3], 17, height / 2 + 10,
							Graphics.BASELINE | Graphics.LEFT);
				}
				draw = false;
			}
			break;
		// 交易界面
		case 9:
			clearCanvas(g);
			g.drawImage(buy, 0, 0, 20);

			// 绘制属性
			g.drawString(String.valueOf(power[6]), 80, 52, Graphics.TOP
					| Graphics.RIGHT);
			g.drawString(String.valueOf(power[7]), 80, 83, Graphics.TOP
					| Graphics.RIGHT);
			g.drawString(String.valueOf(power[5]), 80, 115, Graphics.TOP
					| Graphics.RIGHT);
			changeColor(g, buychoosey, 0);
			g.drawString(String.valueOf(power[0]), 148, 53, Graphics.TOP
					| Graphics.RIGHT);
			changeColor(g, buychoosey, 1);

			g.drawString(String.valueOf(power[2]), 148, 84, Graphics.TOP
					| Graphics.RIGHT);
			changeColor(g, buychoosey, 2);

			g.drawString(String.valueOf(power[3]), 148, 116, Graphics.TOP
					| Graphics.RIGHT);
			changeColor(g, buychoosey, 3);

			g.drawString(String.valueOf(power[1]), 148, 147, Graphics.TOP
					| Graphics.RIGHT);

			changeColor(g, buychoosey, 4);

			g.drawString(String.valueOf(power[4]), 148, 177, Graphics.TOP
					| Graphics.RIGHT);

			changeColor(g, buychoosex, 0);

			g.drawString(String.valueOf(ammo[0]), 26, 178, Graphics.TOP
					| Graphics.RIGHT);

			changeColor(g, buychoosex, 1);

			g.drawString(String.valueOf(ammo[1]), 50, 178, Graphics.TOP
					| Graphics.RIGHT);

			changeColor(g, buychoosex, 2);

			g.drawString(String.valueOf(ammo[2]), 74, 178, Graphics.TOP
					| Graphics.RIGHT);

			changeColor(g, buychoosex, 3);

			g.drawString(String.valueOf(ammo[3]), 97, 178, Graphics.TOP
					| Graphics.RIGHT);
			g.drawImage(FontLift, 10, height - 5, Graphics.LEFT
					| Graphics.BOTTOM);
			g.drawImage(FontIn, width - 10, height - 5, Graphics.RIGHT
					| Graphics.BOTTOM);
			break;
		// 升级提示界面
		case 11:

			// 部分清屏
			// 部分清屏
			clearSome(g);

			// 绘制提示框
			g.drawImage(cueImage, 1, cy, Graphics.TOP | Graphics.LEFT);
			g.drawString(dm, width / 2, cy + 30, Graphics.BASELINE
					| Graphics.HCENTER);
			break;
		// 跑商任务详细信息显示界面
		case 13:
			g.drawImage(cueImage, 1, cy, Graphics.TOP | Graphics.LEFT);
			switch (rs) {
			case 0: // 接受任务成功
				if (runShangCueTemp == null) {
					runShangCueTemp = splitString(task[runShangTask[1]]);
				}
				for (int i = 0; i < runShangCueTemp.length; i++) {
					if (i == 0) {
						g.drawString(runShangCueTemp[i], x3 + strWidth * 2,
								cy + 22, Graphics.BASELINE | Graphics.LEFT);
					} else {
						g.drawString(runShangCueTemp[i], x3, cy + 22 + i
								* strHeight, Graphics.BASELINE | Graphics.LEFT);
					}
				}
				break;
			case 1: // 接受任务失败
				g.drawString(scene13Str[0], width / 2, cy + 30,
						Graphics.BASELINE | Graphics.HCENTER);
				break;
			case 2: // 取消任务成功
				g.drawString(scene13Str[1], width / 2, cy + 22,
						Graphics.BASELINE | Graphics.HCENTER);
				g.drawString(scene13Str[2], width / 2, cy + 40,
						Graphics.BASELINE | Graphics.HCENTER);
				break;
			case 3: // 取消任务失败
				g.drawString(scene13Str[3], width / 2, cy + 22,
						Graphics.BASELINE | Graphics.HCENTER);
				break;
			}
			break;
		// 跑商任务完成提示信息界面
		case 14:
			g.drawImage(gutBack, 0, 0, Graphics.TOP | Graphics.LEFT);

			// 绘制港口及人物头像
			g.setClip(headX, headY, 25, 25);
			g.drawImage(npcHead, headX - (portIndex - 1) * 25, headY,
					Graphics.TOP | Graphics.LEFT);
			g.setClip(0, 0, width, height);
			g.drawString(portName[portIndex], headX + 30, headY + 5,
					Graphics.TOP | Graphics.LEFT);
			g.drawString(scene14Str[0], width / 2, height / 3,
					Graphics.BASELINE | Graphics.HCENTER);
			g.drawString(scene14Str[1] + runShangMoney, width / 2,
					height / 3 + 20, Graphics.BASELINE | Graphics.HCENTER);
			g.drawString(scene14Str[2] + runShangCredit, width / 2,
					height / 3 + 40, Graphics.BASELINE | Graphics.HCENTER);
			break;
		// 弹药不足提示界面
		case 15:
			// 部分清屏
			// 部分清屏
			clearSome(g);

			// 绘制提示框
			g.drawImage(cueImage, 1, cy, Graphics.TOP | Graphics.LEFT);
			g.drawString(scene15Str, width / 2, cy + 30, Graphics.BASELINE
					| Graphics.HCENTER);
			break;
		// 逃跑提示界面
		case 16:
			if (flee) {
				// 部分清屏
				clearSome(g);

				// 绘制提示框
				g.drawImage(cueImage, 1, cy, Graphics.TOP | Graphics.LEFT);
				g.drawString(scene16Str[0], width / 2, cy + 30,
						Graphics.BASELINE | Graphics.HCENTER);
				g.drawString(scene16Str[1], width / 2, cy + 50,
						Graphics.BASELINE | Graphics.HCENTER);
			} else {
				// 部分清屏
				clearSome(g);
				// 绘制提示框
				g.drawImage(cueImage, 1, cy, Graphics.TOP | Graphics.LEFT);
				g.drawString(scene16Str[2], width / 2, cy + 30,
						Graphics.BASELINE | Graphics.HCENTER);
				g.drawString(scene16Str[3], width / 2, cy + 50,
						Graphics.BASELINE | Graphics.HCENTER);
			}
			break;
		// 战斗结束界面
		case 17:
			if (draw) {
				if (actionResult == 1) {
					g.drawIm

⌨️ 快捷键说明

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