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

Przerwnie pętli while nie działa jak powinno.

Object Storage Arubacloud
0 głosów
266 wizyt
pytanie zadane 22 sierpnia 2015 w C i C++ przez revan95 Początkujący (270 p.)

Witam wszystkich!

Postanowiłem na bazie mojej wiedzy zdobytej dzięki kursowi pana Mirosława napisać krótką symulacje walki goblina z trolem :) Zdefiniowałem zmienne określające życie poszczególnych postacii oraz zadawane obrażenia oparte na liczbie losowej. W pętli while określiłem jako warunek wykonywania; życie którejś z postaci większe od zera. - kod poniżej-. Natrafiam jednak na pewien problem. Zdarzają się sytuacje że postać już "martwa" -mająca ujemne punkty żywotności-konćzy jeszcze swoją kolejkę :/ a przecież warunek postawiłem-wydaje mi się- dobrze.
Dziękuje za wszelką pomoc, poniżej wklejam kod źródłowy.
Pozdrawiam

 

int zycie1=20,zycie2=20;

    while((zycie1>0)&&(zycie2>0))
    {
        cout<<"goblin rzuca kostka...(1-10)"<<endl;
        Sleep(3000);
        int obraz1=rand()%10+1;
        cout<<"Goblin zadaje trolowi :"<<obraz1<<" obrazen"<<endl;
        Sleep(3000);
        zycie2-=obraz1;
        cout<<"Trolowi pozostaje: "<<zycie2<<" punktow zywotnosci"<<endl;
        Sleep(3000);
        cout<<"teraz kolej trola...Trol rzuca kostka(1-10)"<<endl;
        Sleep(3000);
        int obraz2=rand()%10+1;
        cout<<"Troll zadaje goblinowi: "<<obraz2<<" obrazen"<<endl;
        Sleep(3000);
        zycie1-=obraz2;
        cout<<"Goblinowi pozostaje: "<<zycie1<<" punktow zywotnosci"<<endl;

 

3 odpowiedzi

+3 głosów
odpowiedź 22 sierpnia 2015 przez criss Mędrzec (172,590 p.)
wybrane 23 sierpnia 2015 przez revan95
 
Najlepsza
Warunek postawiłeś dobrze, ale zobacz, że on jest sprawdzany przed każdym obrtotem pętli, nie podczas.
komentarz 22 sierpnia 2015 przez revan95 Początkujący (270 p.)
Racja!
Czyli rozwiązaniem byłaby funkcja break?
komentarz 22 sierpnia 2015 przez Sebastian Fojcik Nałogowiec (43,020 p.)

*instrukcja break ;-)

komentarz 23 sierpnia 2015 przez revan95 Początkujący (270 p.)
instrukcja break :) dziękuje jeszcze raz
komentarz 23 sierpnia 2015 przez Sebastian Fojcik Nałogowiec (43,020 p.)
Jeśli masz problem z odpowiednim nazywaniem różnych elementów w języku, polecam się wczytać:
https://forum.pasja-informatyki.pl/49886/wyrazenia-a-instrukcje-petle
Pozdrawiam :-)
+1 głos
odpowiedź 22 sierpnia 2015 przez Dorion300 Szeryf (90,250 p.)

Po zycie2-=obraz1;

użyj:

if(zycie2<=0) break;

komentarz 22 sierpnia 2015 przez revan95 Początkujący (270 p.)
dodałem to zarówno po zycie2-=obraz1 jaki i zycie1-=obraz2, niestety program zapętla mi się i walka toczy się w nieskończoność.
+1 głos
odpowiedź 22 sierpnia 2015 przez szymek6786 Początkujący (260 p.)

Też postanowiłem sobie coś takiego właśnie zrobić (też jestem w trakcie kursu C++ z YT)

Zrobilem to na pętle nieskończoną. Obrazenia zeby były "bardziej losowe" dodalem: srand(time(NULL) z biblioteki <ctime>.

Jakby Cie to interesowało to wrzucam swój kod:

 

kod:
 

#include <iostream>
#include <windows.h>
#include <cstdlib>
#include <ctime>

using namespace std;

int main()
{
    int JanuszHP=1500,MirekHP=1500;
    int atakJanusza, atakMirka;

    srand(time(NULL));



    for (;;)  // tj. pętla nieskończona
    {

        cout<<"Janusz atakuje...            ";
        cout<<"Janusz: "<<JanuszHP<<"HP  ";
        cout<<"|  Mirek: "<<MirekHP<<"HP"<<endl;
        Sleep(1500);
        atakJanusza=rand()%400+1;
        MirekHP -= atakJanusza;
        cout<<"Mirek otrzymuje "<<atakJanusza<<" obrazen"<<endl;


                        if (MirekHP<0)
                        {
                        cout << endl << endl << "Mirek umiera                 ";
                        cout<<"Janusz: "<<JanuszHP<<"HP  ";
                        cout<<"|  Mirek: 0HP"<<endl<<endl;
                        cout << "Wygrywa Janusz !!!" <<endl<<endl;
                        break;
                        }

                        cout<<"Mirkowi pozostaje "<<MirekHP<<" HP"<< endl << endl;




        cout<<"Mirek atakuje...             ";
        cout<<"Janusz: "<<JanuszHP<<"HP  ";
        cout<<"|  Mirek: "<<MirekHP<<"HP"<<endl;
        Sleep(1500);
        atakMirka=rand()%400+1;
        JanuszHP -= atakMirka;
        cout<<"Janusz otrzymuje "<<atakMirka<<" obrazen"<<endl;


                        if (JanuszHP<0)
                        {
                        cout << endl << endl << "Janusz umiera                  ";
                        cout<<"Janusz: 0HP  ";
                        cout<<"|  Mirek: " << MirekHP <<"HP"<<endl<<endl;
                        cout << "Wygrywa Mirek !!!" <<endl<<endl;
                        break;
                        }

                        cout<<"Januszowi pozostaje "<<JanuszHP<<" HP"<< endl << endl;
    }



system("pause");

return 0;
}

 

komentarz 22 sierpnia 2015 przez revan95 Początkujący (270 p.)
Bardzo przydatne, dziękuję :)

Podobne pytania

+1 głos
1 odpowiedź 1,016 wizyt
0 głosów
2 odpowiedzi 205 wizyt
0 głosów
1 odpowiedź 124 wizyt
pytanie zadane 25 lipca 2020 w Java przez Programmingc100 Bywalec (2,620 p.)

92,563 zapytań

141,413 odpowiedzi

319,590 komentarzy

61,948 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!

...