Program nie chce się zatrzymać.

1

W poprzednim moim poście (który już jest w śmietniku, bo admin go usunął po godzinie) poradziliście mi jak poprawić błędy. Poprawiłem, ale program nie chce się zatrzymać. Oto kod:
#include <iostream>
#include <ctime>

using namespace std;

int moje_zycie;
int jego_zycie;

int random(int g_nMin, int g_nMax)
{
return rand() % g_nMax + g_nMin;
}

void moj_ruch()
{
cout << "Trwa twoj ruch..." << endl;
int dmg = random(1,10);
cout << "Zadajesz " << dmg << " obrazen." << endl;
jego_zycie -= dmg;
}

void jego_ruch()
{
cout << "Trwa ruch przeciwnika..." << endl;
int dmg = random(1,10);
cout << "Przeciwnik zadaje " << dmg << " obrazen." << endl;
moje_zycie -= dmg;
}

void main()
{
srand (static_cast<unsigned int="int">( time (NULL)));
int moje_zycie = 5;
int jego_zycie = 5;
do
{
moj_ruch();
jego_ruch();
} while (moje_zycie > 0 && jego_zycie > 0);

if (moje_zycie <= 0) cout << "Jestes trupem!!!";
system("PAUSE");
if (jego_zycie <= 0) cout << "Zabiles go!!!";
system("PAUSE");

}

0
void main()
{
        srand (static_cast<unsigned int>( time (NULL)));
        int moje_zycie = 5; //wywal te linijkę
        int jego_zycie = 5; //wywal te linijkę
        do
        {
                moj_ruch();
                jego_ruch();
        } while (moje_zycie > 0 && jego_zycie > 0);

        if (moje_zycie <= 0) cout << "Jestes trupem!!!";
        system("PAUSE");
        if (jego_zycie <= 0) cout << "Zabiles go!!!";
        system("PAUSE");
}

:/
Czyli:

void main()
{
        srand (static_cast<unsigned int>( time (NULL)));
        moje_zycie = 5;
        jego_zycie = 5;
        do
        {
                moj_ruch();
                jego_ruch();
        } while (moje_zycie > 0 && jego_zycie > 0);

        if (moje_zycie <= 0) cout << "Jestes trupem!!!";
        system("PAUSE");
        if (jego_zycie <= 0) cout << "Zabiles go!!!";
        system("PAUSE");
}

Jakoś tak...

0

Tylko jak usunę te linijki to nie będzie podana ilość hp, i program zrobi tylko jeden obrót i pętla if nie będzie działać.
Ale jak usunę te int przed moje_zycie i przed jego_zycie to co to wtedy jest za zmienna i kiedy ją się deklaruje?

0
void main()
{
        srand (static_cast<unsigned int>( time (NULL))); //co to robi ?
        moje_zycie = 5;
        jego_zycie = 5;
        do
        {
                moj_ruch();
                jego_ruch();
        } while (moje_zycie > 0 && jego_zycie > 0);

        if (moje_zycie <= 0) cout << "Jestes trupem!!!";
        system("PAUSE");
        if (jego_zycie <= 0) cout << "Zabiles go!!!";
        system("PAUSE");
}

A to ?

0

primo: a if jest pętlą O.o Człowiek uczy się całe życie.
secundo: a co to za funkcja void main()? Ja znam tylko int main().

0
#include <iostream>
#include <ctime>


using namespace std;

int moje_zycie; //zmienna globalna
int jego_zycie; //zmienna globalna

int random(int g_nMin, int g_nMax)
{
        return  rand() % g_nMax + g_nMin;
}


void moj_ruch()
{
        cout << "Trwa twoj ruch..." << endl;
        int dmg = random(1,10);
        cout << "Zadajesz " << dmg << " obrazen." << endl;
        jego_zycie -= dmg;
}

void jego_ruch()
{
        cout << "Trwa ruch przeciwnika..." << endl;
        int dmg = random(1,10);
        cout << "Przeciwnik zadaje " << dmg << " obrazen." << endl;
        moje_zycie -= dmg;
}



void main()
{
        srand (static_cast<unsigned int>( time (NULL)));
        moje_zycie = 5;
        jego_zycie = 5;
        do
        {
                moj_ruch();
                jego_ruch();
        } while (moje_zycie > 0 && jego_zycie > 0);

        if (moje_zycie <= 0) cout << "Jestes trupem!!!";
        system("PAUSE");
        if (jego_zycie <= 0) cout << "Zabiles go!!!";
        system("PAUSE");
}

Zmienna globalna, to taka zmienna, którą możesz użyć we wszystkich procedurach i funkcjach. Wtedy deklaracja w 'main' jest niepotrzebna. Tam tylko trzeba ustawić wartości początkowe (nie myle się ?).

1

@Patryk27 to losuje liczby. He he rzeczywiście.Wystarczyło ustawić tam wartości hp. Wielkie dzięki.

A i jeszcze jedna rzecz domyślam się że to: (moje_zycie > 0 && jego_zycie > 0); oznacza, że moje zycie ALBO jego... Nie mylę się??

1

&& to operator logiczny AND.
(moje_zycie > 0 && jego_zycie > 0) == true; jeżeli moze_zycie > 0 i jego_zycie > 0
"albo/lub" to OR - ||

Poza tym, nie powinieneś używać void main() - main zwraca typ int, tako rzecze standard. ;)

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