📄 game.java
字号:
dlen++;
}
if (dlen >= 1)
this.diagFinished = true;
break;
case 5:
if (pagedown) {
pagedown = false;
g.drawImage(loadImage("/back.png"), 0, 0, 20);
switch (dlen) {
case 0:
Const
.drawString(
g,
"很好,希洛,不愧是我们看重的人,这是你的奖赏,另外学院最近开发了一些新的魔法药剂以及恢复药膏,你需要补助时可以去西庭,你一定会感到意外的",
0, 0, 2 * SCREENHEIGHT / 3, SCREENWIDTH,
SCREENHEIGHT / 3, true, true,
Font.SIZE_LARGE);
g.drawImage(this.imSchoolMaster, 0, 2 * SCREENHEIGHT / 3
- imSchoolMaster.getHeight(), 20);
break;
case 1:
Const.drawString(g, "非常感谢,院长阁下,我会去看看的", 0, 0,
2 * SCREENHEIGHT / 3, SCREENWIDTH,
SCREENHEIGHT / 3, true, true, Font.SIZE_LARGE);
g.drawImage(this.lin.imgplayer, 0, 2 * SCREENHEIGHT / 3
- imPrince.getHeight(), 20);
break;
case 2:
Const
.drawString(
g,
"另外通过你的回报,我们认为谢尔德王子是个狂妄自大,毫无实力的家伙,因此我们决定支持另外一个王位继承人,",
0, 0, 2 * SCREENHEIGHT / 3, SCREENWIDTH,
SCREENHEIGHT / 3, true, true,
Font.SIZE_LARGE);
g.drawImage(this.imSchoolMaster, 0, 2 * SCREENHEIGHT / 3
- imSchoolMaster.getHeight(), 20);
break;
case 3:
Const
.drawString(
g,
"菲娜公主殿下,不久之后你就会看到她,但在此之前准备下次的大陆竞赛吧,我已经通知他们开放了百年一次的试炼之原,到南部就可以进去了",
0, 0, 2 * SCREENHEIGHT / 3, SCREENWIDTH,
SCREENHEIGHT / 3, true, true,
Font.SIZE_LARGE);
g.drawImage(this.imSchoolMaster, 0, 2 * SCREENHEIGHT / 3
- imSchoolMaster.getHeight(), 20);
break;
case 4:
Const.drawString(g, "我非常期待,阁下", 0, 0, 2 * SCREENHEIGHT / 3,
SCREENWIDTH, SCREENHEIGHT / 3, true, true,
Font.SIZE_LARGE);
g.drawImage(this.lin.imgplayer, 0, 2 * SCREENHEIGHT / 3
- imPrince.getHeight(), 20);
break;
}
dlen++;
}
if (dlen >= 5)
this.diagFinished = true;
break;
case 6:
if (pagedown) {
pagedown = false;
g.drawImage(loadImage("/back.png"), 0, 0, 20);
switch (dlen) {
case 0:
Const.drawString(g,
"枫,怎么是你?我不是说过毕业后就回去吗,现在感到大陆的局势越来越混乱了,这种地方还是太惹人注意",
0, 0, 2 * SCREENHEIGHT / 3, SCREENWIDTH,
SCREENHEIGHT / 3, true, true, Font.SIZE_LARGE);
g.drawImage(this.lin.imgplayer, 0, 2 * SCREENHEIGHT / 3
- lin.imgplayer.getHeight(), 20);
break;
case 1:
Const
.drawString(
g,
"抱歉,希洛,我一直在担心你,自从你进来这里已经一年多了,我想和你在一起,正好这里正在征找后勤人员,所以就报名了",
0, 0, 2 * SCREENHEIGHT / 3, SCREENWIDTH,
SCREENHEIGHT / 3, true, true,
Font.SIZE_LARGE);
g.drawImage(loadImage("/character/fenghead.png"), 0,
2 * SCREENHEIGHT / 3 - 50, 20);
break;
case 2:
Const
.drawString(
g,
"这个……,真拿你没办法,好吧,虽然我们是青梅竹马,但也不要违背学院的制度,让我看看学院提供了什么东西?",
0, 0, 2 * SCREENHEIGHT / 3, SCREENWIDTH,
SCREENHEIGHT / 3, true, true,
Font.SIZE_LARGE);
g.drawImage(this.lin.imgplayer, 0, 2 * SCREENHEIGHT / 3
- lin.imgplayer.getHeight(), 20);
break;
case 3:
Const.drawString(g,
"嗯!都是些不错的东西,虽然你那么说,但刚刚后勤部长说过,学院首席的优待还是有的,所有物品价格减半",
0, 0, 2 * SCREENHEIGHT / 3, SCREENWIDTH,
SCREENHEIGHT / 3, true, true, Font.SIZE_LARGE);
g.drawImage(loadImage("/character/fenghead.png"), 0,
2 * SCREENHEIGHT / 3 - 50, 20);
break;
}
dlen++;
}
if (dlen >= 4)
this.diagFinished = true;
break;
}
}
/*********************************************************************************
* 对话界面的按键相应
*********************************************************************************/
void dialogInput(int key) {
switch (key) {
case DOWN_PRESSED:
if (selected) {
for (int i = 0; i < lbselect.length; i++)
if (lbselect[i] != null && lbselect[i].getMaxItem() != 0) {
lbselect[i].moveNext();
}
break;
}
case UP_PRESSED:
if (selected) {
for (int i = 0; i < lbselect.length; i++) {
if (lbselect[i] != null && lbselect[i].getMaxItem() != 0) {
lbselect[i].movePrev();
}
}
break;
}
case LEFT_PRESSED:
break;
case RIGHT_PRESSED:
break;
case FIRE_PRESSED:
if (!selected) {
pagedown = true;
switch (k) {
case 0:
k = 1;
break;
case 1:
k = 2;
break;
case 2:
k = 3;
break;
case 3:
k = 4;
break;
case 7:
k = 8;
break;
}
break;
}
if (selected)// 处于选择对话的时候如何处理;
for (int i = 0; i < lbselect.length; i++) {
if (lbselect[i] != null && lbselect[i].getMaxItem() != 0) {
switch (lbselect[i].getIndex()) {
case 0:
if (lbselect[i].getItemString().equalsIgnoreCase(
"一:永生")) {
selected = false;
pagedown = true;
lbselect[0] = null;
k = 5;
return;
}
if (lbselect[i].getItemString().equalsIgnoreCase(
"一:失去眼睛……")) {
lin.trait = 1;
selected = false;
pagedown = true;
lbselect[1] = null;
k = 7;
return;
}
break;
case 1:
if (lbselect[i].getItemString().equalsIgnoreCase(
"二:我太累了,让我解脱吧")) {
selected = false;
pagedown = true;
lbselect[i] = null;
k = 6;
return;
}
if (lbselect[i].getItemString().equalsIgnoreCase(
"二:直觉告诉我这个……")) {
lin.trait = 2;
selected = false;
pagedown = true;
lbselect[i] = null;
k = 7;
return;
}
break;
case 2:
if (lbselect[i].getItemString().equalsIgnoreCase(
"三:选这个的话就有些 ……")) {
lin.trait = 3;
selected = false;
pagedown = true;
lbselect[i] = null;
k = 7;
return;
}
}
}
}
}
}
/*****************************************************************************
* 对话并且兼具选择; k代表开头场景的对话字符串
*
* 对话选择基本上弄完了,就是控制变量以及显示问题
*
*****************************************************************************/
void dialogSelect() {
g.setColor(0);
g.fillRect(0, 0, SCREENWIDTH, SCREENHEIGHT - SCREENHEIGHT / 3);
g.setClip(0, 0, SCREENWIDTH, SCREENHEIGHT);
switch (k) {// 根据对话进展显示不同的人物头像;
case 0:
case 2:
case 4:
g.drawImage(lin.imgplayer, 0, 2 * SCREENHEIGHT / 3
- lin.imgplayer.getHeight(), 20);
break;
}
if (pagedown && !selected && k < 9) {
if (k > 7) {
GAMESTATE = Const.GAME_RUNNING;
k = 9;
return;
}
if (k == 6) {
try {
g.drawImage(Image.createImage("/Gameover.png"), 0, 0, 20);
} catch (IOException e) {
e.printStackTrace();
}
}
String sub = Const.diagHeroStart[k];
Const.drawString(g, sub, 0, 0, 2 * SCREENHEIGHT / 3, SCREENWIDTH,
SCREENHEIGHT / 3, true, pagedown, Font.SIZE_LARGE);
pagedown = false;
try {
if (k == 6) {
flushGraphics();
Thread.sleep(4000);
exit();
mid.showManu();
}
Thread.sleep(400);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
if (k == 4 && lbselect[0] != null) {
selected = true;
lbselect[0].draw(g, SCREENWIDTH / 10, SCREENHEIGHT / 3,
4 * SCREENWIDTH / 5, 30 * lbselect[0].getMaxItem());
pagedown = false;
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
if (lbselect[1] != null && k == 5) {
selected = true;
lbselect[1].draw(g, SCREENWIDTH / 10, SCREENHEIGHT / 3,
9 * SCREENWIDTH / 10, 30 * lbselect[1].getMaxItem());
pagedown = false;
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
/**
* @param key
* 传入的游戏按键响应 进行系统界面的按键响应事件,包括存储进度,读取进度,打开人物界面等等;
*
*/
void systemInput(int key) {
switch (key) {
case UP_PRESSED:
lbSystem.movePrev();
break;
case DOWN_PRESSED:
lbSystem.moveNext();
break;
case FIRE_PRESSED:
ts1 = System.currentTimeMillis();
switch (lbSystem.getIndex()) {
case 0:// 选择保存进度的时候,进入进度保存选择框;
GAMESTATE = Const.GAME_SAVE;
break;
case 1:
GAMESTATE = Const.GAME_LOAD;
break;
case 2:
GAMESTATE = Const.GAME_SYSTEM_TOOLS;
break;
case 3:
GAMESTATE = Const.GAME_CHARCTERSTATUE;
break;
case 4:
GAMESTATE = Const.GAME_TASK;
break;
}
break;
case GAME_A_PRESSED:
ts2 = System.currentTimeMillis();
if (System.currentTimeMillis() - ts1 > 300)
GAMESTATE = Const.GAME_RUNNING;
break;
}
}
/****************************************
* 绘制系统选择框;
****************************************/
void drawSystem() {
g.drawImage(loadImage("/back.png"), 0, 0, 20);
lbSystem.draw(g, SCREENWIDTH / 5, SCREENHEIGHT / 6, SCREENWIDTH / 2,
40 * lbSystem.getMaxItem());
}
/**
* @param key
* 处理存储界面的按键响应;
*
*/
void saveInput(int key) {
switch (key) {
case UP_PRESSED:
SaveAndLoad.lbSave.movePrev();
break;
case DOWN_PRESSED:
SaveAndLoad.lbSave.moveNext();
break;
case FIRE_PRESSED:
if (System.currentTimeMillis() - ts1 > 300)
switch (SaveAndLoad.lbSave.getIndex()) {
case 0:
new SaveAndLoad(mid).save(1, this);
break;
case 1:
new SaveAndLoad(mid).save(2, this);
break;
case 2:
new SaveAndLoad(mid).save(3, this);
break;
}
break;
case GAME_A_PRESSED:
GAMESTATE = Const.GAME_SYSTEM;
break;
}
}
/**
* 绘制存储菜单
*/
void drawSave() {
SaveAndLoad.lbSave.draw(g, SCREENWIDTH / 6, SCREENHEIGHT / 6,
SCREENWIDTH / 2 + 30, 40 * lbSystem.getMaxItem());
}
/**
* @param key
* 处理读取进度界面的按键响应事件;
*
*/
void loadInput(int key) {
switch (key) {
case UP_PRESSED:
SaveAndLoad.lbLoad.movePrev();
break;
case DOWN_PRESSED:
SaveAndLoad.lbLoad.moveNext();
break;
case FIRE_PRESSED:
switch (SaveAndLoad.lbLoad.getIndex()) {
case 0:
brun = false;
new SaveAndLoad(mid).load(1, new Game(mid));
break;
case 1:
brun = false;
new SaveAndLoad(mid).load(2, new Game(mid));
break;
case 2:
brun = false;
new SaveAndLoad(mid).load(3, new Game(mid));
break;
}
break;
case GAME_A_PRESSED:
GAMESTATE = Const.GAME_SYSTEM;
break;
}
}
/**
* 绘制读取菜单;
*/
void drawLoad() {
SaveAndLoad.lbLoad.draw(g, SCREENWIDTH / 6, SCREENHEIGHT / 6,
2 * SCREENWIDTH / 3, 40 * lbSystem.getMaxItem());
}
/**
* 命令响应系統菜單包括返回菜單以及音樂控制菜單;
*
* @param key
*/
void SystemoutInput(int key) {
switch (key) {
case UP_PRESSED:
lbSystemout.movePrev();
break;
case DOWN_PRESSED:
lbSystemout.moveNext();
break;
case FIRE_PRESSED:
switch (lbSystemout.getIndex()) {
case 0:
music = true;
break;
case 1:
music = false;
break;
case 2:
exit();
mid.showManu();
}
break;
case GAME_A_PRESSED:
GAMESTATE = Const.GAME_SYSTEM;
break;
}
}
/**
* 绘制系统工具菜单,包括音乐开关,以及返回初始画面;
*/
void drawSystemout() {
lbSystemout.draw(g, SCREENWIDTH / 5, SCREENHEIGHT / 6, SCREENWIDTH / 2,
40 * lbSystem.getMaxItem());
}
/**
* @param key
* 进行主角界面的判断,需要重新实行; ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -