Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] Pomoc - można zrobić dwa warunki pętli "do..while" ?

Ostatnio zmodyfikowano 2014-03-28 14:43
Autor Wiadomość
Lonyy
Temat założony przez niniejszego użytkownika
[C++] Pomoc - można zrobić dwa warunki pętli "do..while" ?
» 2014-03-27 21:13:01
Witam serdecznie.
Zacząłem sobie pisać prostą gierkę i mam pewien problem. Najpierw może wkleję kod żeby pokazać o co mi chodzi.
C/C++
do
{
    std::cout << "Atakujesz wroga" << std::endl;
    dmg_zadany_postac = losowanie_dmg_postac( dmgmin_do_walki_ze_slaby_wrog, dmgmax_do_walki_ze_slaby_wrog );
    hpwroga = hpwroga - dmg_zadany_postac;
    std::cout << "Zostalo mu: " << hpwroga << " hp." << std::endl;
    if( hpwroga > 0 )
    {
        std::cout << "Wrog atakuje Ciebie" << std::endl;
        dmg_zadany_wrog = losowanie_dmg_wroga( dmgminwroga_do_walki_ze_slaby_wrog, dmgmaxwroga_do_walki_ze_slaby_wrog );
        hp = hp - dmg_zadany_wrog;
        std::cout << "Zostalo Ci: " << hp << " hp." << std::endl;
    }
    else
    {
        std::cout << "Pokonales wroga." << std::endl;
        std::cout << "Zdobywasz: " << expzwroga << "expa i " << goldzwroga << " golda." << std::endl;
        goldpostaci = goldpostaci + goldzwroga;
        exppostaci = exppostaci + expzwroga;
    }
   
} while( hpwroga > 0 );

Chciałbym zrobić aby warunek while kończył pracę pentli jeśli moje hp będzie mniejsze lub rowne zero (czyli zginę po prostu).
Próbowałem zrobić coś takiego
while( hpwroga > 0 || hp > 0 );
ale wtedy pętla wykonuje się w nieskończoność.
P-107304
alixir
» 2014-03-27 21:22:27
while( hpwroga > 0 && hp > 0 );
P-107307
Winner_Of_Death
» 2014-03-27 21:24:23
http://cpp0x.pl/kursy/Kurs-C++/Poziom-1/Operacje-porownania/14
P-107308
Lonyy
Temat założony przez niniejszego użytkownika
» 2014-03-27 21:31:31
Ale według tego
while( hpwroga > 0 && hp > 0 );
jeśli dobrze zrozumiałem, to muszą byc spełnione oba warunki, czyli ginę ja i wróg.
Chodzi mi natomiast (ta pętla to pętla walki) że jeśli zginie albo wróg albo ja to pętla zostanie skończona.
Bo według kursu to "&&" oznacza że "wszystkie wartości muszą być prawdziwe", a nie o to mi chodzi.
Jeśli źle coś rozumuję to poprawcie mnie :)
P-107313
waxx
» 2014-03-27 21:36:04
O czym ty mówisz? Przeczytaj to sobie

"Dopóki hp wroga będzie wieksze od zera i moje hp będzie większe od zera"

Działa tak jak ty chcesz ;)
P-107315
Lonyy
Temat założony przez niniejszego użytkownika
» 2014-03-28 14:43:03
Dzięki, faktycznie działa. Źle zrozumiałem działanie tych && znaków.
Jeszcze raz dzięki za pomoc, temat do zamknięcia.
P-107326
« 1 »
  Strona 1 z 1