JAVA基础语法3 老山龙阻击战(类与对象) 数据类型定义的变量只能表示单个数据当我们在程序中表示 数据体 这种数据时就需要我们自己创建类 在类中自己设定包含哪些数据 自己设定可以有哪些功能可以类比为人类——属性年龄体重等数值——方法吃饭睡觉等行为当我们定义好类之后 可以到程序入口中使用我们创建的类来创建变量这种变量叫做对象变量对象变量作为一个主体调用其中的数据变量和功能对象变量引入人类——为属性赋值——进行行动类与对象的概念类 类别class格式public class类名{ }对象 实例 具体存在的事物object创建对象的格式 类名 对象变量名 new类名();类的定义格式public class类名{ }在类中需要设定这个类别都有的 数据 和 功能属性这个类别的数据信息 使用变量来定义属性格式数据类型 变量名;方法这个类别的功能/行为 使用一段有逻辑的代码来描述功能/行为的具体执行内容格式public void方法名(参数){ }参数类名 对象变量名使用类创建对象格式 类名 对象变量名 new类名();Person p1 new Person();可以对象变量名调用 属性 格式 对象变量名.属性名值;使用对象变量名调用方法执行:格式 对象变量名.方法名();PKGAME以pkgame为课题怪物猎人为灵感我编写了如下的“老山龙阻击战”代码hunter:package PKgame0812; public class Hunter { String name; int atk; int def; int hp; double qiren 0; int n 4; public void skill13(Dragon dragon) { double sum1 atk * 1.3 * (1 qiren) - dragon.def; double sum2 atk * 5 * (1 qiren) - dragon.def; if (qiren 2.5) { dragon.hp - sum1; System.out.println(name 使用技能1(气刃斩)攻击了 dragon.name 造成了 sum1 点伤害值其还剩下 dragon.hp); qiren 0.5; } else { dragon.hp - sum2; System.out.println(name 使用技能3(登龙斩)攻击了 dragon.name 造成了 sum2 点伤害值其还剩下 dragon.hp); qiren - 3; } } public void skill12(Dragon dragon) { double sum atk * 2 * (1 qiren) - dragon.def; double sum1 atk * 1.3 * (1 qiren) - dragon.def; double sum2 atk * 5 * (1 qiren) - dragon.def; if (qiren 1) { dragon.hp - sum1; System.out.println(name 使用技能1(气刃斩)攻击了 dragon.name 造成了 sum1 点伤害值其还剩下 dragon.hp); qiren 0.5; } else if (qiren 3) { dragon.hp - sum; System.out.println(name 使用技能2(气刃回旋)攻击了 dragon.name 造成了 sum 点伤害值其还剩下 dragon.hp); qiren - 1; } else { dragon.hp - sum2; System.out.println(name 使用技能3(登龙斩)攻击了 dragon.name 造成了 sum2 点伤害值其还剩下 dragon.hp); qiren - 3; } } public void skill4() { if (n 0) { hp 100; def 5; n--; System.out.println(name 使用了秘药体力恢复了); } else { hp 50; System.out.println(name 使用了恢复药体力恢复了); } } }怪物猎人中的太刀需要积攒气刃槽以进行强力攻击气刃拥有上限因此我利用if语句使猎人在满足条件后必定消耗气刃值用土方法避免突破上限恢复手段则为使用秘药于恢复药利用n使秘药的上限为4个Dragon:package PKgame0812; public class Dragon { String name; int atk; int def; int hp; int juli3; public void skill1(Hunter hunter){ int sumatk-hunter.def; hunter.hp-sum; System.out.println(name 使用技能1(踩踏)攻击了 hunter.name 造成了 sum 点伤害值其还剩下 hunter.hp); } public void skill2(Wall wall){ if(juli0){ juli-1; System.out.println(name距离防御壁还有juli格); }else{ int sumatk*2; wall.hp-sum; System.out.println(name 使用技能2(撞击)攻击了防御壁造成了 sum 点伤害值其还剩下 wall.hp点耐久); } } }Wall:package PKgame0812; public class Wall { String name; int hp; }龙和墙的代码相对简单我设定了距离来模拟老山龙前进的过程Fightpackage PKgame0812; import java.util.Random; public class Fight { static void main() { System.out.println(阻击战开始); Hunter hrnew Hunter(); Dragon dnnew Dragon(); Wall wlnew Wall(); wl.name防御壁; wl.hp5000; hr.name星; hr.atk1000; hr.def100; hr.hp200; dn.name老山龙; dn.atk150; dn.def800; dn.hp100000; Random rannew Random(); while (wl.hp 0 hr.hp 0 dn.hp0) { int rn ran.nextInt(100);//0 1 2 3 if (rn45) { hr.skill13(dn); } else if (rn60) { hr.skill12(dn); } else if (rn70) { hr.skill4(); } else if(rn80){ dn.skill1(hr); }else if (rn100){ dn.skill2(wl); } } } }我利用了random函数设定各种行动发生的概率