• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

SYSTEM WALKI W PROSTEJ, TEKSTOWEJ GRZE. PROSZĘ O NAPRAWĘ BUGA

Object Storage Arubacloud
0 głosów
454 wizyt
pytanie zadane 20 stycznia 2016 w C i C++ przez maciek061 Gaduła (4,490 p.)
Witam,

tworzę grę tekstową i mam problem z systemem walki. Piszę coś takiego: http://wklej.org/id/1911980/

Nawzajem zadajemy sobie ciosy. Ta pętla while wykonuje się dopóki hp któregoś z nas nie spadnie poniżej zera.

Moja siła wynosi 30, a hp 50.

I jak w uruchomionym programie zaczynam walczyć to wygląda to tak: http://wklej.org/id/1911985/

Czyli ta pętla wykonuje się niepoprawnie, bo walczę z minusowym hp. Może ktoś to naprawić?

4 odpowiedzi

+2 głosów
odpowiedź 20 stycznia 2016 przez Patrycjerz Mędrzec (192,320 p.)
wybrane 20 stycznia 2016 przez maciek061
 
Najlepsza

Chodziło ci chyba o operator &&:

while(mobhp>0 && hp>0)

 

komentarz 20 stycznia 2016 przez maciek061 Gaduła (4,490 p.)
I tak występuje ten sam bug :/
komentarz 20 stycznia 2016 przez MetGang Nałogowiec (34,360 p.)
Walka kończy się jeśli jedna osoba wygra, nie dwie.
komentarz 20 stycznia 2016 przez maciek061 Gaduła (4,490 p.)
a nie sory źle to zapisałem, działa poprawnie. Dzięki za odpowiedż :)
0 głosów
odpowiedź 20 stycznia 2016 przez event15 Szeryf (93,790 p.)
Ja bym te warunki dwa przeniósł do while.
komentarz 20 stycznia 2016 przez maciek061 Gaduła (4,490 p.)

To:?

 

if(mobhp<=0)
            {
                cout<<"Wygrales"<<endl;
                _getch();
            }
            if(hp<=0)
            {
                cout<<"Przegrales"<<endl;
                _getch();
            }

komentarz 20 stycznia 2016 przez event15 Szeryf (93,790 p.)
tak                  .
komentarz 20 stycznia 2016 przez maciek061 Gaduła (4,490 p.)
Zrobiłem tak. Musiałem usunąć warunek while'a, bo wtedy wyświetlało się że przegrałem i pętla dalej się wykonywała. A jak zmienie na while(true) to pętla będzie się wykonywała w nieskończoność. Więc jak to zrobić ;)?
0 głosów
odpowiedź 20 stycznia 2016 przez MetGang Nałogowiec (34,360 p.)

Osobiście zrobiłbym tak:

while(true)
{
    // obliczanie zadanych obrażeń zjawie
    if(mobhp<=0) { cout<<"Wygrałeś"; break; }

    // obliczanie zadanych tobie obrażeń
    if(hp<=0) { cout<<"Przegrałeś"; break; }

    _getch();
}

HP musisz sprawdzać po zadaniu obrażeń, a nie pod koniec rundy, bo wtedy zdarzają się przypadki HP<=0 a runda nadal trwa.

–1 głos
odpowiedź 20 stycznia 2016 przez xCodezaur Bywalec (2,850 p.)
while(mobhp>0|| hp>0) Powinieneś zrobić to tak: while((mobhp>0) || (hp>0))
komentarz 20 stycznia 2016 przez maciek061 Gaduła (4,490 p.)
Zmieniłem i jest identycznie.
komentarz 20 stycznia 2016 przez Patrycjerz Mędrzec (192,320 p.)
Istnieją tzw. priorytety operatorów, więc oba kody będą działać identycznie.
komentarz 20 stycznia 2016 przez MetGang Nałogowiec (34,360 p.)
Takie coś jak priorytet operatorów występuje, ale w tym wypadku te nawiasy nic nie zmieniają, a sam problem nie leży tutaj...

Podobne pytania

+1 głos
2 odpowiedzi 601 wizyt
0 głosów
2 odpowiedzi 552 wizyt
pytanie zadane 21 maja 2016 w C i C++ przez Regolin542 Użytkownik (990 p.)
0 głosów
1 odpowiedź 204 wizyt

92,632 zapytań

141,502 odpowiedzi

319,882 komentarzy

62,015 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...