📄 gamecanvas.java
字号:
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 + -