Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 需要在循环时调试ActionScript的帮助吗_Actionscript 3_While Loop_Flash Builder - Fatal编程技术网

Actionscript 3 需要在循环时调试ActionScript的帮助吗

Actionscript 3 需要在循环时调试ActionScript的帮助吗,actionscript-3,while-loop,flash-builder,Actionscript 3,While Loop,Flash Builder,我讨厌我必须在这里问一个家庭作业问题,但我没办法。我在学校上ActionScript课程,这是我第一次学习编程语言,所以我觉得很无聊 问题是制作一个RPG游戏来练习循环 var fighter1:String = "Wonder Woman"; var fighter2:String = "Ms. Marvel"; var health1:uint = 300; var health2:uint = 180; var

我讨厌我必须在这里问一个家庭作业问题,但我没办法。我在学校上ActionScript课程,这是我第一次学习编程语言,所以我觉得很无聊

问题是制作一个RPG游戏来练习循环

        var fighter1:String = "Wonder Woman";
        var fighter2:String = "Ms. Marvel";
        var health1:uint = 300;
        var health2:uint = 180;
        var damage1:uint = 30;
        var damage2:uint = 40;


        while (health1 >= 0 && health2 >= 0 ) 
        {
            var damageDealt1:uint = Math.random() * damage1;
            var damageDealt2:uint = Math.random() * damage2;
            var attack1:uint = health2 - damageDealt1;
            var attack2:uint = health1 - damageDealt2;
            health1 = attack2;
            health2 = attack1;
            trace("After attack: " + fighter1 + " HP: " + health1 + ", " + 
            fighter2 + " HP: " + health2);
        }
        if (health1==0&&health2==0){
            trace("They both died in battle!  There will now be WAR!");
        } else if (health1==0) {
            trace(fighter2 + " won!");
        } else {
            trace(fighter1 + " won!"
        }
正如你可能知道的,damage1是fighter1的潜在伤害,DamageDeal1是每次攻击造成的伤害

一切似乎都正常工作,但当我运行它时,我得到以下信息:

After attack: Wonder Woman HP: 4280752046, Ms. Marvel HP: 4284398685
After attack: Wonder Woman HP: 4280752039, Ms. Marvel HP: 4284398660
After attack: Wonder Woman HP: 4280752024, Ms. Marvel HP: 4284398658
After attack: Wonder Woman HP: 4280752018, Ms. Marvel HP: 4284398639
After attack: Wonder Woman HP: 4280751997, Ms. Marvel HP: 4284398638
After attack: Wonder Woman HP: 4280751996, Ms. Marvel HP: 4284398612
After attack: Wonder Woman HP: 4280751994, Ms. Marvel HP: 4284398609
无限

我已经把它翻译成php,它工作得很好,我只是不知道我在这里做错了什么


有什么想法吗?提前谢谢

正如turbosqel所说,您必须使用int而不是uint:

var fighter1:String = "Wonder Woman";
var fighter2:String = "Ms. Marvel";
var health1:int = 300;
var health2:int = 180;
var damage1:uint = 30;
var damage2:uint = 40;


    while (health1 > 0 && health2 > 0 ) 
    {
        var damageDealt1:uint = Math.random() * damage1;
        var damageDealt2:uint = Math.random() * damage2;
        var attack1:uint = health2 - damageDealt1;
        var attack2:uint = health1 - damageDealt2;
        health1 = attack2;
        health2 = attack1;

        if (health1 < 0) health1 = 0;
        if (health2 < 0) health2 = 0;

        trace("After attack: " + fighter1 + " HP: " + health1 + ", " + 
        fighter2 + " HP: " + health2);
    }

    if (health1==0&&health2==0){
        trace("They both died in battle!  There will now be WAR!");
    } else if (health1==0) {
        trace(fighter2 + " won!");
    } else {
        trace(fighter1 + " won!"
    }
var-fighter1:String=“神奇女侠”;
var fighter2:String=“惊奇小姐”;
变量1:int=300;
var health2:int=180;
var损伤1:uint=30;
var损伤2:uint=40;
而(health1>0&&health2>0)
{
var damageDealt1:uint=Math.random()*damage1;
var damageDealt2:uint=Math.random()*damage2;
var attack1:uint=health2-damageDealt1;
var attack2:uint=health1-damageDealt2;
health1=攻击2;
health2=攻击1;
如果(health1<0)health1=0;
如果(health2<0)health2=0;
跟踪(“攻击后:“+fighter1+”生命:“+health1+”,“+
fighter2+“HP:+health2);
}
if(health1==0&&health2==0){
trace(“他们都在战斗中牺牲了!现在会有战争了!”);
}else if(health1==0){
跟踪(fighter2+“赢了!”);
}否则{
跟踪(fighter1+“赢了!”
}

使用int,而不是uint,因为您的值永远不会小于0。谢谢,我在盯着屏幕看了几分钟后得出了相同的结论。我试图自己回答这个问题,但我没有足够的声誉。谢谢!!