内容来自RyiSnow视频讲解
这一节讲的是Scrolling Message, Leveling Up, Damage Calculation滚动消息,升级,伤害计算。
伤害计算
玩家与怪的战斗,玩家对怪的伤害值为攻击值减去怪的防御值。
int damage = attack - gp.monster[i].defense;
int damage = attack - gp.monster[i].defense;
if (damage < 0) {
damage = 0;
}
gp.monster[i].life -= damage;
这个地方还有几处代码需要修改,分别是玩家碰到怪或者怪碰到玩家
滚动消息
- 相关代码
public void drawMessage() {
int messageX = gp.tileSize;
int messageY = gp.tileSize * 4;
g2.setFont(arial_40);
g2.setFont(g2.getFont().deriveFont(Font.BOLD, 32F));
for (int i = 0; i < message.size(); i++) {
if (message.get(i) != null) {
g2.setColor(Color.black);
g2.drawString(message.get(i), messageX+2, messageY+2);
g2.setColor(Color.white);
g2.drawString(message.get(i), messageX, messageY);
int counter = messageCounter.get(i) + 1;
messageCounter.set(i, counter);
messageY+=50;
if (messageCounter.get(i) > 180) {
message.remove(i);
messageCounter.remove((i));
}
}
}
}
升级
玩家升级后,相应的属性会发生变化,如攻击、力量、闪避、防御、最大生命等等。
public void checkLevelUp() {
if (exp >= nextLevelExp) {
level++;
nextLevelExp = nextLevelExp*2;
maxLife += 2;
strength++;
dexterity++;
attack = getAttack();
defense = getDefense();
gp.playSE(8);
gp.gameState = gp.dialogueState;
gp.ui.currentDialogue = "You are level " + level + " now!\n"
+"You feel stronger!";
}
}
测试升级的时候,是杀死若干个怪,每个怪涨2个经验,杀死3个就升级了,1升2需要5经验值。
升级完可以按c键查看人物角色状态。
突然觉得这个像素字体太难看,后续可能得改一下。另外在多次播放音效常常出现一个bug。作者没有提过这个问题,我遇见很多次了,估计后边也得修复一下。
javax.sound.sampled.LineUnavailableException:
line with format PCM_SIGNED 48000.0 Hz, 16 bit, stereo, 4 bytes/frame,
little-endian not supported.
代码
参考第6篇文章最后的链接,可以使用git clone或直接下载获得完整项目