logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Kłopot z kodem gry w C++ - zmienne i struktura programu

matiz58 03 Cze 2011 17:31 1332 4
REKLAMA
  • #1 9573261
    matiz58
    Poziom 9  
    Posty: 28
    Ocena: 1
    Już wiem w czym tkwi problem, jednak w tym temacie bd pisał jak bd miał kolejne problemy.
    Najpierw przedstawie ten kod ponownie:

    #include <cstdlib>
    #include <iostream>
    #include <cstdio>
    #include <process.h>

    using namespace std;




    int main()
    {
    int PB = 5; //* Określa poziom bohater
    int Z = 200; //*
    int a = 0; //* Uzywa opcji 1
    int b = 0; //* Uzywa opcji 2
    int c = 0; //* Uzywa opcji 3
    int d = 0; //* Konczy program
    int Pk = 0; //*Pkt doświadczenia
    int Sw = 0; //* Siła wojska.
    cout << "Jestes na poziomie: " << PB <<" ["<<Pk<<"/3]"<<" Aktualnie posiadasz: "<<Z <<" Zlota!"<<" Sila wojska: "<<Sw<<endl;
    cout <<""<<endl;
    cout << "Jest rok 1337 p.n.e. "<< "Uciekles wraz ze swoimi przyjaciolmi do lasu"<<endl;
    cout <<" i zalozyles wioske"<<endl;
    cout << "Na szczescie udalo Ci sie wykrasc zloto..." <<endl;
    cout << ""<<endl;
    cout << "Co chcesz teraz zrobic? Wybor nalezy do Ciebie !" <<endl;
    cout << "1) Chce zatrudnic najemnikow" <<endl;
    cout << "2) Wyruszyc na wyprawe" <<endl;
    cout << "3) Zaatakowac najblizzsza wioske" <<endl;
    cout << "4) Wyjsc z gry" <<endl;
    cin >> a;
    system("cls");
    if(a==1) cout <<"Oto najemnicy ktorych mozesz rekrutowac na swoim poziomie."<<endl;
    if(PB==1)cout << "1) Chlop z proca"<<endl;
    if(PB==2)cout << "1) Chlop z proca"<<endl<<"2) Lekko opancerzony chlop z tasakiem" <<endl;
    if(PB==3)cout << "1) Chlop z proca"<<endl<<"2) Lekko opancerzony chlop z tasakiem"<<endl<< "3) Ciezko-zbrojny piechor"<<endl;
    if(PB==4)cout << "1) Chlop z proca"<<endl<<"2) Lekko opancerzony chlop z tasakiem"<<endl<< "3) Ciezko-zbrojny piechor"<<"4) Lekko-zbrojna jazda konna"<<endl;
    if(PB==5)cout << "1) Chlop z proca"<<endl<<"2) Lekko opancerzony chlop z tasakiem"<<endl<< "3) Ciezko-zbrojny piechor"<<endl<<"4) Lekko-zbrojna jazda konna"<<endl<<"5) Ciezka jazda konna"<<endl;
    cin >>b;
    system("cls");
    if(b==1) (Sw=Sw+1);
    cout <<"Chlop z proca dolaczyl do Twojej armii"<<endl;








    if(b==2) cout <<"Lekko opancerzony chlop z tasakiem dolaczyl do Twojej armii"<<endl;
    if(b==3) cout <<"Ciezko-zbrojny piechor dolaczyl do Twojej armii"<<endl;
    if(b==4) cout <<"Lekko-zbrojna jazda konna dolaczyla do twojej armii"<<endl;
    if(b==5) cout <<"Ciezka jazda konna"<<endl;
    cout <<Sw<<endl;









    system("pause");
    return main();
    }



    Otóż problem jest w tym jak zrobić ,aby powrócić na poczatek kodu tylko, żeby zmienne były zmienione , a nie tak jak w tym przypadku powracało do stanu domyślnego.Dodaje do Sw 1 gdy kod sie konczy jest Return i wraca do stanu poprzedniego ,a to "1" znika .Jak zrobić ,zeby ono nie znikało bardzo was proszę o pomoc mam to skończyć do wtorku ;(.Jeśli nie wytłumaczyłem problemu to proszę pisać.
  • REKLAMA
  • Pomocny post
    #2 9573284
    Dżyszla
    Poziom 42  
    Posty: 7077
    Pomógł: 1095
    Ocena: 226
    Czy ja tu widzę rekurencję!? :o Straszne! Nigdy tak nie rób! ujmij w pętle odpowiedni blok, a zmienne które mają pozostać inicjuj przed pętlą.
  • REKLAMA
  • #3 9573733
    matiz58
    Poziom 9  
    Posty: 28
    Ocena: 1
    Mogłby mi ktoś tu mniej więcej rozpisać? Bo z poradników typu Pętle itp nie bardzo rozumiem.... Zastosowanie w takim przykładzie. Bardzo was proszę.. Początkujący wzywa pomocy ! ;(.

    EDIT1:
    Niewiem czy jestem słabo kapujący, ale co wpisac w zmienne_zmienne? bo wszystkich zmiennych raczej nie.. podswietla wlasnie mi sie ten wiersz kodu.. ;(
    Proszę pomóż.
    EDIT2:
    Albo inaczej , masz może jakiegoś teamviewera, żebyś mi w tym pomógł .Największy kłopot własnie mam ze zrobieniem tej pętli, a czas leci nieubłaganie ..
  • REKLAMA
  • Pomocny post
    #4 9573851
    Dżyszla
    Poziom 42  
    Posty: 7077
    Pomógł: 1095
    Ocena: 226
    
    main()
    {
        zmienne_stałe=0;
        while(1)
        {
              zmienne_zmienne:=0;
              //kod programu
              if (warunek_zakończenia) break;
         }
    }
  • #5 9575123
    matiz58
    Poziom 9  
    Posty: 28
    Ocena: 1
    Zmieniłem trochę ten kod, uznałem ,że to mnie przerosło, ale teraz pojawił się problem innego typu..

    #include <cstdlib>
    #include <iostream>
    #include <cstdio>
    #include <process.h>

    using namespace std;




    int main()
    {



    int PB = 5; //* Określa poziom bohater
    int Z = 200; //*
    int a = 0; //* Uzywa opcji 1
    int b = 0; //* Uzywa opcji 2
    int c = 0; //* Uzywa opcji 3
    int d = 0; //* Konczy program
    int Pk = 0; //*Pkt doświadczenia
    int Sw = 5; //* Siła wojska.



    cout << "Aktualnie posiadasz: "<<Z <<" Zlota!"<<" Sila wojska: "<<Sw<<endl;
    cout <<""<<endl;
    cout << "Jest rok 1337 p.n.e. "<< "Uciekles wraz ze swoimi przyjaciolmi do lasu"<<endl;
    cout <<" i zalozyles wioske"<<endl;
    cout << "Na szczescie udalo Ci sie wykrasc zloto..." <<endl;
    cout << ""<<endl;
    cout << "Co chcesz teraz zrobic? Wybor nalezy do Ciebie !" <<endl;
    cout << "1) Chce zatrudnic najemnikow" <<endl;
    cout << "2) Wyruszyc na wyprawe" <<endl;
    cout << "3) Zaatakowac najblizzsza wioske" <<endl;
    cout << "4) Wyjsc z gry" <<endl;
    cin >> a;
    system("cls");
    if(a==1) cout <<"Oto najemnicy ktorych mozesz rekrutowac."<<endl<<"1) Chlop z proca"<<endl<<"2) Lekko opancerzony chlop z tasakiem"<<endl<< "3) Ciezko-zbrojny piechor"<<endl<<"4) Lekko-zbrojna jazda konna"<<endl<<"5) Ciezka jazda konna"<<endl;
    if(a==2) cout <<"Gdzie chcesz wyruszyc.."<<endl<<"1) W glab puszczy.."<<endl<<"2) Poza granice lasu.."<<endl<< "3) Zaatakowac zamek krzyzacki.."<<endl;
    if(a==3) cout <<"Zaatakowales wioske barbarzyncow."<<endl;
    if(Sw>=5) Z=Z+20;

    if(Sw>=5) cout <<"Wyszedles z niej zwyciesko ! (Zloto +20)"<<endl;
    if(Sw<=4) Z=Z-10;
    if(Sw<=4) cout <<"Twoje wojsko jest zbyt slabe,aby stanac do boju z uzbrojona armia barbarzyncow...(Tracisz 10 zlota jako okup)"<<endl;


    if(a==1) cin >>b;
    if(a==2) cin >>c;


    if(b==1) (Sw=Sw+1);
    if(b==2) (Sw=Sw+2);
    if(b==3) (Sw=Sw+3);
    if(b==4) (Sw=Sw+4);
    if(b==5) (Sw=Sw+5);
    if(b==1) cout <<"Chlop z proca dolaczyl do Twojej armii"<<endl;
    if(b==2) cout <<"Lekko opancerzony chlop z tasakiem dolaczyl do Twojej armii"<<endl;
    if(b==3) cout <<"Ciezko-zbrojny piechor dolaczyl do Twojej armii"<<endl;
    if(b==4) cout <<"Lekko-zbrojna jazda konna dolaczyla do twojej armii"<<endl;
    if(b==5) cout <<"Ciezka jazda konna dolaczyla do twojej armii"<<endl;
    cout << "Aktualnie posiadasz: "<<Z <<" Zlota!"<<" Sila wojska: "<<Sw<<endl;








    system("pause");
    return 0;
    }

    Jak zrobić by to zawierało się tylko dla opcji 3? Bo jeśli wybiorę np opcję 1 .To wyświetla mi się nie potrzebnie to,bo akurat spełnia to warunek ;F..
    if(Sw>=5) cout <<"Wyszedles z niej zwyciesko ! (Zloto +20)"<<endl;
    if(Sw<=4) Z=Z-10;
    if(Sw<=4) cout <<"Twoje wojsko jest zbyt slabe,aby stanac do boju z uzbrojona armia barbarzyncow...(Tracisz 10 zlota jako okup)"<<endl;

    Dodano po 36 [minuty]:

    Rozwiązałem swój WIELKI PROBLEM, Dzięki Dżyszla ..Wielkie Dzięki !!!!
REKLAMA