• 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;
    
    • 1
    • 2
    • 3
    • 4
    • 5

    这个地方还有几处代码需要修改,分别是玩家碰到怪或者怪碰到玩家

    滚动消息

    在这里插入图片描述

    • 相关代码
    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));
                }
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    升级

    玩家升级后,相应的属性会发生变化,如攻击、力量、闪避、防御、最大生命等等。

    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!";
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    测试升级的时候,是杀死若干个怪,每个怪涨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.
    
    • 1
    • 2
    • 3

    代码

    参考第6篇文章最后的链接,可以使用git clone或直接下载获得完整项目

  • 相关阅读:
    突破亚马逊智能检测,全自动化运营的新利器:亚马逊鲲鹏系统
    【C++笔试强训计划】第一天
    Mysql 详解所有的数据类型
    BUG:ImportError: attempted relative import with no known parent package的解决办法
    SQL Server入门-SSMS简单使用(2008R2版)-2
    什么是REST API
    2311rust到27版本更新
    从AOP到分布式链路追踪
    会议OA项目之我的审批
    实战项目:物流行业数据分析
  • 原文地址:https://blog.csdn.net/ximen502/article/details/138189334