Java Swing游戏开发学习24

内容来自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或直接下载获得完整项目

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值