do-while czy inna pętla?

0

Witajcie, drodzy specjalistki i drogie specjaliści.
Mam problem z pewnym programikiem, pisze dla siebie.

  public static void battle()
            {
                int HP3;
                int HP4;
                int HP1 = 50;
                int HP2 = 55;
       do
       {
           HP4 = HP1 - 10;
           Console.WriteLine("HP4 - 10");
           Thread.Sleep(500);
           HP3 = HP2 - 10;
           Console.WriteLine("HP3 - 10");
           Thread.Sleep(1000);
        }while (HP4 <= 2 && HP3 <= 2);
        Console.WriteLine("Koneic");

Kończy się po pierwszym wypisaniu HP4 - 10 i HP3 - 10, a chcę aby skończyło się po spełnieniu warunków. Co źle robię?

0

drodzy specjalistki i drogie specjaliści Specjalnie tak?

Warunek pętli jest taki: HP4 <= 2 && HP3 <= 2, po pierwszym obiegu (w tej pętli jest niezależny od warunku), HP4 wynosi 40, a HP3 wynosi 45. Więc warunek pętli zarówno jeden i drugi jest niespełniony -> drugi obieg się nie wykona. Być może chodzi ci o wypisywanie dopóki nie nastanie HP4 <= 2 && HP3 <= 2. W takim razie źle zrozumiałem warunek. Jeżeli tak chcesz to daj HP4 > 2 && HP3 > 2.

0

Może napiszę co chce zrobić: prosty pojedynek dwóch osób. Innymi słowy: dopóki jedna (lub obie) nie zejdzie poniżej 0 hp pętla ma się wykonywać. Próbowałem również z HP4 > 2, ale wtedy pętla jest nieskończona.

0

Raz to co napisał xeo545x39, dwa w każdym obrocie pętli

HP4 = HP1 - 10;

wynik tego działania będzie wynosił 40. A tego:

 HP3 = HP2 - 10;

45, więc nawet gdybyś napisał te klamerki w drugą stronę trwałoby to w nieskończoność. Musisz gdzieś zmniejszać HP1 i HP2. Chociaż to co tutaj napisałeś jest raczej do d*** i trzeba to przemyśleć od nowa.

0

Skoro tak, to a warunek musi być taki HP4 > 0 && HP3 > 0. I to co kolega wyżej, nie zauważyłem, nie zmniejszasz nigdzie HP1 i HP2, więc nic z tego.

0

Nawet jeżeli zrobie tak:

  public static void battle()
            {
                int HP4 = 22;

       do
       {
           HP4 -= 10;
           Console.WriteLine("HP4 otrzymuje {0} obrażeń", 10);
           Thread.Sleep(500);
        }while (HP4 < 3);
        Console.WriteLine("Koniec");

       }
            }

To również nie działa. W kazdym razie - albo coś jest nie tak, albo ja nie rozumiem czegoś :)

0

Już, już działa. :) Dzięki Panowie.

  public static void battle()
            {
                int HP4 = 22;

       do
       {
           HP4 -= 10;
           Console.WriteLine("HP4 otrzymuje {0} obrażeń", 10);
           Thread.Sleep(500);
       } while (HP4 > 0);
        Console.WriteLine(HP4);
        Console.ReadLine();
       }
            } 

1 użytkowników online, w tym zalogowanych: 0, gości: 1