丶飘来荡去丶吧 关注:23贴子:1,966
  • 2回复贴,共1

AS3.0【勇者斗恶龙】实例,加深函数概念理解

只看楼主收藏回复

var hero:Object=new Object();// 创建对象英雄
var monster:Object=new Object();//创建对象怪物
hero.name="勇士"; //设定各个属性值 以及 名称
hero.HP=1000;
hero.ATT=440;
hero.DEF=80;
hero.AGI=50;
hero.skill1="十字斩";
hero.skill2="拔刀斩";
hero.skill3="极鬼剑术";
monster.name="远古冰龙"; //设定各个属性值以及名称
monster.HP=2000;
monster.ATT=220;
monster.DEF=120;
monster.AGI=62;
monster.skill1="龙吟";
monster.skill2="扫尾";
monster.skill3="寒冰之息";
stage.addEventListener(MouseEvent.CLICK,round);//舞台点击侦听
function whoAttacks(a:Object,b:Object):Array {//回合攻击随机
return a.AGI*Math.random() > b.AGI*Math.random()?[a,b]:[b,a];//三目运算符的利用
}
function round(e:MouseEvent) {
var damage:Number;//回合伤害计算
var whatSkill:uint;//回合技能使用
var roundFight:Array=whoAttacks(hero,monster);
var attacker:Object=roundFight[0];
var defender:Object=roundFight[1];
damage=attacker.ATT*Math.random()-defender.DEF*Math.random();//由攻击方的攻击力最大值随机 减去   防守方的防御力的最大值的随机数
if (damage<=0) {//如果没有破防
   damage=0;//攻击伤害为0
} else {
   damage=Math.ceil(damage);//伤害取整
}
    
defender.HP-=damage;// 防守方的生命之 相减 并赋值回合伤害
if (damage<attacker.ATT/3) {//假如回合伤害小于攻击者攻击力的三分之一
   whatSkill=1;//判定为技能1
}
if (damage<attacker.ATT*3/5) {//假如回合伤害小于攻击者的 5分之3
   whatSkill=2;//判定为技能2
} else {
   whatSkill=3;//否则判定为技能3
}
trace(attacker.name+"使用"+attacker["skill"+whatSkill]+"对"+defender.name+"造成了"+damage+"点伤害\n");
     if(defender.HP<=0){//当防守方的生命小于等于0的时候
   trace(attacker.name+"战胜了"+defender.name+"\n"+defender.name+"倒下了!")//输出攻击者的名字战胜了防守方的名字,防守方的名字倒下了
   stage.removeEventListener(MouseEvent.CLICK,round)//移除舞台点击侦听器
   return;
   }
   trace(defender.name+"还剩"+defender.HP+"点HP\n\n")
}



1楼2010-09-14 20:39回复
    啊 还有没有 多发表几个。。 name是什么?


    IP属地:福建3楼2011-06-18 09:45
    回复
      2025-06-18 14:57:26
      广告
      楼主,怎么把它翻译成类的模式呢?用类来控制而不是在帧上添加代码


      4楼2012-06-11 14:03
      回复