
在前两篇文章中我们学习了变量的基础概念和定义语法。但理论学再多不如动手写一个真实案例。今天我们就用一个有趣的实战案例——街头霸王对战伤害计算来彻底搞懂变量的核心知识点什么时候需要用变量变量名该怎么起如何区分同一角色的不同属性变量值是怎么被修改的学完这篇文章你将能独立完成一个完整的变量应用案例并掌握变量在实际开发中的正确使用姿势。一、案例需求街头霸王对战伤害计算场景设定假设我们在开发一个街头霸王风格的对战游戏。对战双方已经选好人物我方角色叉子攻击力220防御力85初始血量1012.5技能加成1.2对方角色默认人物攻击力240防御力80初始血量1223.3技能加成1.3两种攻击模式普通攻击伤害 我方攻击力 - 对方防御力技能攻击伤害 我方攻击力 × 我方技能加成 - 对方防御力需要完成的任务计算普通攻击造成的伤害以及攻击后对方的剩余血量再计算一次技能攻击造成的伤害以及攻击后对方的最终剩余血量二、第一步确定哪些数据需要用变量很多初学者会问为什么不能直接写死数据非要定义变量核心原则只有会频繁发生改变的数据才需要用变量存储。在本案例中以下四类数据都会随游戏版本迭代而调整攻击力游戏平衡性调整时可能削弱或增强防御力同样会随版本变化血量初始血量可能调整技能加成技能强度也可能被修改这些数据都需要用变量存储。三、第二步定义变量注意命名规范变量命名规范这是一个非常重要的知识点变量名必须见名知意与业务逻辑语义绑定。❌错误示范int a 220; // 过几天再看谁知道a是什么 double b 1.2; // b是什么完全看不懂✅正确示范int attack 220; // 一看就知道是攻击力 double skill 1.2; // 一看就知道是技能加成以后你再看这段代码的时候你不需要去研究了你一下就能知道attack这个变量它表示的就是攻击力。数据类型选择根据数据的类型选择对应的Java数据类型整数如攻击力220、防御力85 →int类型小数如血量1012.5、技能加成1.2 →double类型定义我方变量// 我方叉子数据 int attack1 220; // 我方攻击力 int defense1 85; // 我方防御力 double blood1 1012.5;// 我方初始血量也可以用hp double skill1 1.2; // 我方技能加成定义对方变量由于我方已经使用了attack、defense等变量名同一个作用域内不允许变量重名因此需要添加后缀来区分// 对方数据 int attack2 240; // 对方攻击力 int defense2 80; // 对方防御力 double blood2 1223.3;// 对方初始血量 double skill2 1.3; // 对方技能加成命名规则我方变量加后缀1对方变量加后缀2语义清晰一看就懂。四、第三步计算普通攻击4.1 计算伤害根据公式普通攻击伤害 我方攻击力 - 对方防御力int damage1 attack1 - defense2;attack1是我方攻击力220defense2是对方防御力80damage1是本次普通攻击造成的伤害1404.2 计算对方剩余血量核心逻辑对方剩余血量 对方现有血量 - 本次伤害blood2 blood2 - damage1;这行代码需要重点理解等号右边的blood2是原有的血量值等号左边的blood2是修改后的新值。执行过程取出blood2当前存储的值1223.3减去damage1140得到1083.3将1083.3重新赋值给blood2原来的1223.3被覆盖这就是变量更新赋值的核心逻辑用原有值运算得到新值后覆盖变量原有的存储内容。4.3 输出结果System.out.println(普通攻击伤害 damage1); System.out.println(普通攻击后对方剩余血量 blood2);运行结果普通攻击伤害140 普通攻击后对方剩余血量1083.3五、第四步计算技能攻击5.1 计算伤害根据公式技能攻击伤害 我方攻击力 × 我方技能加成 - 对方防御力double damage2 attack1 * skill1 - defense2;attack1是我方攻击力220skill1是我方技能加成1.2defense2是对方防御力80damage2是本次技能攻击造成的伤害220 × 1.2 - 80 184注意因为乘法可能产生小数所以用double类型接收结果。5.2 计算对方最终剩余血量blood2 blood2 - damage2;此时的blood2已经是普通攻击后的剩余血量1083.3减去技能伤害184后得到899.3再次赋值给blood2。5.3 输出结果System.out.println(技能攻击伤害 damage2); System.out.println(两次攻击后对方最终剩余血量 blood2);运行结果技能攻击伤害184.0 两次攻击后对方最终剩余血量899.3六、完整代码public class VariableDemo2 { public static void main(String[] args) { // 我方叉子数据 int attack1 220; // 我方攻击力 int defense1 85; // 我方防御力 double blood1 1012.5;// 我方初始血量 double skill1 1.2; // 我方技能加成 // 对方数据 int attack2 240; // 对方攻击力 int defense2 80; // 对方防御力 double blood2 1223.3;// 对方初始血量 double skill2 1.3; // 对方技能加成 // 1. 计算普通攻击 int damage1 attack1 - defense2; blood2 blood2 - damage1; System.out.println(普通攻击伤害 damage1); System.out.println(普通攻击后对方剩余血量 blood2); // 2. 计算技能攻击 double damage2 attack1 * skill1 - defense2; blood2 blood2 - damage2; System.out.println(技能攻击伤害 damage2); System.out.println(两次攻击后对方最终剩余血量 blood2); } }七、重点总结7.1 变量选择规则只有频繁变动的数据才需要用变量记录。固定不变的常量不需要定义变量。7.2 变量命名规范变量名必须见名知意与业务逻辑语义绑定。当业务逻辑复杂时不能随意乱起变量名保证代码可读性和可维护性。7.3 变量重名处理同一作用域内不允许两个变量同名。可以通过添加语义后缀如1、2来区分不同对象的同属性变量。7.4 变量更新赋值逻辑变量 变量 ± 变化量;这条语句的本质用变量原有值运算得到新值后覆盖变量原有的存储内容实现变量值的修改。八、写在最后这个街头霸王的实战案例涵盖了变量应用的核心知识点什么时候需要用变量如何给变量起有意义的名字如何处理多个对象的同属性变量如何修改变量的值有了AI之后可以让我们的开发效率得到进一步的提升。但基础概念必须自己掌握才能读懂和修改AI生成的代码。现在请打开你的IDEA自己动手完成这个案例的代码编写。亲手敲一遍才能真正掌握这些知识点。下节课我们将继续学习Java基础语法的其他内容。敬请期待