[C++] Nieskończona pętla "for".
Ostatnio zmodyfikowano 2015-05-02 23:52
Fridrich Temat założony przez niniejszego użytkownika |
[C++] Nieskończona pętla "for". » 2015-05-02 22:04:07 Witam serdecznie. Ostatnio zabrałem się za napisanie krótkiej gry tekstowej (dlatego piszę w tym dziale, ponadto problem tyczy się raczej ogólnej składni C++'a niż konkretnie pisania gier). Jest to symulator walki w stylu RPG. Większość kodu odpowiadającego za poszczególne tury, umieściłem w dwóch pętlach "for", niestety program nigdy pętli tej nie opuszcza. srand( time( NULL ) ); for( i = gracz_hp; i > 0; i = i ) { for( y = gryc_hp; y > 0; y = y ) { cout << "Mozliwe akcje: Atak, Obrona, Mikstura" << endl; obrazenia = rand() % 31 + 20; obrazenia_gryc = rand() % 61 + 10; cout << "Co chcesz zrobic?" << endl; cin >> akcja; cout << "Zdrowie Gryca:" << gryc_hp << endl; if(( akcja == "atak" ) ) { gryc_hp = gryc_hp - obrazenia; cout << "Zadales przeciwnikowi " << obrazenia << " punktow obrazen!" << endl; cout << "Twoje zdrowie wynosi:" << gracz_hp << endl; } else if(( akcja == "obrona" ) ) { obrazenia_obrona = obrazenia_gryc / 4; } else if(( akcja == "mikstura" ) ) { gracz_hp = gracz_hp + 60; mikstury = mikstury - 1; cout << "Twoje zdrowie wynosi:" << gracz_hp << endl; } else if(( akcja == "BialekPL" ) ) { gryc_hp = gryc_hp - 5555; cout << "OMG! ZNALAZLES UKRYTY SUPER ATAK!!!" << endl; } if(( akcja == "obrona" ) ) { gracz_hp = gracz_hp - obrazenia_obrona; cout << "Otrzymales: " << obrazenia_obrona << " punktow obrazen!" << endl; cout << "Twoje zdrowie wynosi:" << gracz_hp << endl; } else { gracz_hp = gracz_hp - obrazenia_gryc; cout << "Otrzymales: " << obrazenia_gryc << " punktow obrazen!" << endl; cout << "Twoje zdrowie wynosi:" << gracz_hp << endl; } } }
Program zostaje w pętlach "for" mimo tego, że zmienna "gracz_hp" (która odpowiada za przechowywanie wartości stanu zdrowia gracza) posiądzie wartość poniżej 0; program po prostu kontynuuje działanie wyświetlając zdrowie gracza jako liczbę ujemną. Od razu piszę, że program się kompiluje i uruchamia bez problemów. Pominąłem również dyrektywy "#include", "using namespace std", oraz początkowe cout'y, które miały jedynie wyświetlić informację o rozpoczęciu walki. Nie deklarowałem w programie, żadnych stałych. Dziekuję za ewentualną pomoc i pozdrawiam :) EDIT: Korzystam z CodeBlocks, kompilatora GNU CCC jeśli to ma jakieś znaczenie. |
|
pekfos |
» 2015-05-02 23:04:33 Te pętle są bez sensu napisane. Powinno być po prostu |
|
Fridrich Temat założony przez niniejszego użytkownika |
» 2015-05-02 23:20:56 Prawda, tylko jak mam zrobić, żeby pętla zamknęła się kiedy jedna z dwóch zmiennych .._hp wyniesie poniżej zera? Jeżeli umieszczam jedną pętlę w drugiej, występuje ten sam błąd. |
|
pekfos |
» 2015-05-02 23:32:54 Połącz warunki operatorem &&? |
|
Fridrich Temat założony przez niniejszego użytkownika |
» 2015-05-02 23:52:16 Dziękuję, wszystko już działa! Pozdrawiam.
|
|
« 1 » |