Нужна помощь в отладке ActionScript while loop - PullRequest
1 голос
/ 02 декабря 2011

Ненавижу, что мне приходится задавать здесь домашнее задание, но я ничего не могу поделать.Я учусь на 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!"
        }

Как вы, вероятно, можете сказать, урон1 - это потенциальный урон бойцу1, а урон De1 - урон, наносимый за атаку.

Кажется, что все работает нормально, за исключением того, что когда я его запускаю, я получаю это:

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

ad infinitum ...

Я перевел его на php иработает отлично, я просто не могу понять, что я делаю здесь не так.

Есть идеи?Заранее спасибо.

1 Ответ

0 голосов
/ 02 декабря 2011

как сказал 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!"
    }
...