内容来自RyiSnow视频讲解
这一节讲的是Equip & Use Items装备与使用物品。
前言
实现捡起物品、切换武器装备、使用物品。
修复问题
当光标在物品栏(背包)中移动到没有物品的格子中的时候,使装备介绍子窗口不可见,反之可见。如下图所示,在UI类中,将绘制子窗口方法移动到if判断中即可。
捡起物品
捡起地图上的物品,放入背包中。
public class Player {
......
public void pickUpObject(int i) {
if (i != 999) {
String text;
if (inventory.size() < maxInventorySize) {
inventory.add(gp.obj[i]);
gp.playSE(1);
text = "Got a " + gp.obj[i].name + "!";
} else {
text = "You can not carry any more!";
}
gp.ui.addMessage(text);
gp.obj[i] = null;
}
}
......
}
为当前装备增加高亮效果
其实就是在绘制装备前,绘制了一个格子大小的背景。
切换当前的装备
这里增加了一个斧子,一个盾牌,这样就有了2件武器、2个盾牌,用于切换装备测试。
从图上可以看出,切换武器后,攻击值、防御值都会发生变化,当前的武器或盾牌也会变化。
增加挥舞斧子动作
新增了8个图片,实现4个方向挥舞斧子动画。
使用物品
增加了一个红色药水,使用后可恢复5点生命值。
public class OBJ_Potion_Red extends Entity {
int value = 5;
......
@Override
public void use(Entity entity) {
gp.gameState = gp.dialogueState;
gp.ui.currentDialogue = "You drink the " + name + "!\n"
+ "Your life has been recovered by " + value + ".";
entity.life += value;
if (gp.player.life > gp.player.maxLife) {
gp.player.life = gp.player.maxLife;
}
gp.playSE(2);
}
}
下图中,玩家血量只剩下一个心,饮用红色药水后,增加了2个心的血量。
总结
到现在为止实现了捡起物品、切换武器装备、使用物品。
自己将背包窗口修改了一下,增加了网格线,去掉了圆角。效果还有待改进。
代码
参考第6篇文章最后gitee仓库链接,可以使用git clone命令clone一下或直接下载获得完整项目