下面是题目和我写的代码,还没写限制条件,但测试问题就出来了。
主函数中
我在创建Dz daozei=new Dz(100);
       Ss fashi=new Ss(100); 
这两个对象的时候,为什么,没有给对象初始化呢,我检查发现两个对象中的数据还是0;请教各位高手//4.编写一个盗贼类和一个术士类
//要求:盗贼属性有:敏捷,生命值,目标(应该是对象,要创建),魔法防御力,是否被恐惧,恐惧持续回合
//盗贼行为有:影袭(对目标造成敏捷*3 - 目标防御力的伤害)
// 肾击(使目标下2回合不能行动)
// 凿击(对目标造成敏捷 - 目标防御力的伤害,并且使目标下回合不能行动)
// 暗影斗篷(提高下2回合魔法防御力)
//术士属性有:智力,生命值,魔法值,目标,物理防御力,是否昏迷,昏迷持续回合
//术士行为有:恐惧(使目标下3回合不能行动)
// 暗影箭(对目标造成智力x4 - 目标魔法防御力的伤害,消耗50点魔法值)
// 死亡缠绕(对目标造成智力 - 目标魔法防御力的伤害,并使目标下回合不能行动)
// 烧尽(对目标造成智力x2 - 目标魔法防御力的伤害,消耗20点魔法值)
//注意:术士所有技能没有魔法值之后都无法施放
//要求每个技能都要写出打印输出语句,类似魔兽世界战斗记录的方式
//要求能创建出不同的盗贼和术士对象,并在main方法里创建出不同对象
//分别产生一个盗贼一个术士,并让他们进行战斗,直到一方死去
import java.util.Random;
class Dz{
int dex;
int hp;
Ss target;
int adf;
boolean kongju=false;
int huihe1;
int huihe2;
public void shang1(int i){
if(hp>0){
switch(i){
case 0:
int a=dex*3-target.def;
System.out.println("对目标使用影袭,造成伤害为:"+a);
target.hp-=a;
break;
case 1:
System.out.println("对目标使用肾击技能,目标两回合不能行动");
target.huihe=2;
target.hunmi=true;
break;
case 2:
int b=dex-target.def;
System.out.println("对目标使用凿击技能,目标下回合不能行动,造成伤害为:"+b);
target.hp-=b;
target.huihe=1;
target.hunmi=true;
break;
case 3:
System.out.println("使用暗影斗篷技能,自身魔防提高两回合");
huihe2=2;
adf+=20;
break;
}
}
else{
System.out.println("盗贼死亡");
}
}
public Dz(int level){
int Dex=level;
int hp=level*4+200;
int adf=level;
}
public void setTarget(Ss newTarget){
target = newTarget;
}
}
class Ss{
int zhili;
int hp;
int mp;
Dz target;
int def;
boolean hunmi=false;
int huihe;
public void shang2(int i){
if(hp>0&&mp>0){
switch(i){
case 0:
if(mp>=50){
int a=zhili*4-target.adf;
System.out.println("对目标使用暗影箭,造成伤害为:"+a);
target.hp-=a;
mp-=50;
break;
}
else{
System.out.println("我的魔法值不够");
}
case 1:
if(mp>=40){
System.out.println("对目标使用恐惧技能,目标三回合不能行动");
target.huihe1=3;
target.kongju=true;
mp-=40;
break;
}
else{
System.out.println("我的魔法值不够");
}
case 2:
if(mp>=30){
int b=zhili-target.adf;
System.out.println("对目标使用凿击技能,目标下回合不能行动,造成伤害为:"+b);
target.hp-=b;
target.huihe1=1;
target.kongju=true;
mp-=30;
break;
}
else{
System.out.println("我的魔法值不够");
}
case 3:
if(mp>=30){
int c=zhili*2-target.adf;
System.out.println("对目标使用烧尽,造成伤害为:"+c);
target.hp-=c;
mp-=20;
break;
}
else{
System.out.println("我的魔法值不够");
}
}
}
else{
System.out.println("术士死亡");
}
}
public Ss(int level){
int zhili=level+10;
int hp=level*4+200;
int mp=level*3+150;
int def=level;
}
public void setTarget(Dz newTarget){
target = newTarget;
}
}
public class Moshou{
public static void main(String[] args){
Random r=new Random();
Dz daozei=new Dz(100);
Ss fashi=new Ss(100);
System.out.print(fashi.hp);
daozei.setTarget(fashi);
fashi.setTarget(daozei);
while(daozei.hp>0){
int i=(r.nextInt()>>>1)%4;
int j=(r.nextInt()>>>1)%4;
daozei.shang1(i);
fashi.shang2(j);
}
}
}
主函数中
我在创建Dz daozei=new Dz(100);
       Ss fashi=new Ss(100); 
这两个对象的时候,为什么,没有给对象初始化呢,我检查发现两个对象中的数据还是0;请教各位高手