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

Funkcja "powrotu" w programie menu glowne

Object Storage Arubacloud
0 głosów
565 wizyt
pytanie zadane 27 sierpnia 2016 w C i C++ przez KURKSON Nowicjusz (120 p.)

Mam program menu glowne (zalozmy gry) i w tym pierwszym kodzie wszystko jest okej, tylko chcialbym do niego dodac opcje ze gdy wejde do np. [ustawienia -> grafika] wroci mi do [ustawienia], a nie jak mam obecnie do [Menu glowne] . Wkleje kod pierwszy i kod drugi w ktorym probowalem to rozwiazac.

JEDEN:

#include <iostream>
#include <stdio.h>
#include <cstdlib>
#include <conio.h>

using namespace std;
char znak, zapis, ustawienia, sterowanie;


void menu_glowne()                      //Funkcja ktora wywoluje menu glowne od pocztku    'void' nic nie potrzebuje do zwrotu
{

    cout << "MENU GLOWNE" << endl;
    cout<<endl<<"1. Nowa gra"<<endl;
    cout<<"2. Wczytaj zapis"<<endl;
    cout<<"3. Ustawienia"<<endl;
    cout<<"4. Wyjscie"<<endl;

znak=getch();

        switch(znak)
    {
    case '1':

        {
            system("cls");
            cout<<"Uruchamianie..."<<endl;
        }
        break;

    case '2':

        {
            system("cls");
            cout<<"1. Zapis 1"<<endl;
            cout<<"2. Zapis 2"<<endl;
            cout<<"3. Zapis 3"<<endl;
            cout<<"4. Powrot"<<endl;

            zapis=getch();
            switch(zapis)

            {
                case '1':
                {
                    system("cls");
                    cout<<"Wczytywanie..."<<endl;
                }
                break;

                case '2':
                    {
                        system("cls");
                        cout<<"Wczytywanie..."<<endl;
                    }
                    break;

                     case '3':
                    {
                        system("cls");
                        cout<<"Wczytywanie..."<<endl;
                    }
                    break;

                    case '4':
                    {
                        system("cls");
                        menu_glowne();
                    }
                    break;
            }


        }
        break;

    case '3':

        {
            system("cls");
            cout<<"1. Grafika"<<endl;
            cout<<"2. Dzwiek"<<endl;
            cout<<"3. Sterowanie"<<endl;
            cout<<"4. Powrot"<<endl;

            ustawienia=getch();

            switch(ustawienia)

            {
                case '1':
                {
                    system("cls");
                     cout<<"Rozdzielczosc"<<endl;
                     cout<<"Detale"<<endl;
                     cout<<"Odleglosc renderowania"<<endl;

                     cout<<endl<<"Nacisnij 4 by wrocic"<<endl;

                      sterowanie=getch();

                     switch(sterowanie)
                     {

                     case '4':
                        {
                            system("cls");
                        menu_glowne();
                        }
                        break;
                     }
                }
                break;

                case '2':
                {
                    system("cls");
                     cout<<"Glosnosc ogolna"<<endl;
                     cout<<"Glosnosc dialogow"<<endl;
                     cout<<"Odglosy walki"<<endl;
                     cout<<endl<<"Nacisnij 4 by wrocic"<<endl;

                      sterowanie=getch();

                     switch(sterowanie)
                     {

                     case '4':
                        {
                            system("cls");
                        menu_glowne();
                        }
                        break;
                     }
                }
                break;

                case '3':
                {
                    system("cls");
                     cout<<"Klawiatura"<<endl;
                     cout<<"Myszka"<<endl;
                     cout<<"Pad"<<endl;
                     cout<<endl<<"Nacisnij 4 by wrocic"<<endl;

                     sterowanie=getch();

                     switch(sterowanie)
                     {

                     case '4':
                        {
                            system("cls");
                        menu_glowne();
                        }
                        break;
                     }

                }
                break;

                case '4':
                {
                    system("cls");
                     menu_glowne();
                }
                break;

            }


        }
        break;

    case '4':
        {
            exit(0);
        }
        break;



    }


}





int main()
{



    menu_glowne();



    return 0;
}

DRUGI

#include <iostream>
#include <stdio.h>
#include <cstdlib>
#include <conio.h>

using namespace std;
char znak, zapis, ustawienia, sterowanie;

void settings()
{
    system("cls");
            cout<<"1. Grafika"<<endl;
            cout<<"2. Dzwiek"<<endl;
            cout<<"3. Sterowanie"<<endl;
            cout<<"4. Powrot"<<endl;

            ustawienia=getch();

            switch(ustawienia)

            {
                case '1':
                {
                    system("cls");
                     cout<<"Rozdzielczosc"<<endl;
                     cout<<"Detale"<<endl;
                     cout<<"Odleglosc renderowania"<<endl;

                     cout<<endl<<"Nacisnij 4 by wrocic"<<endl;

                      sterowanie=getch();

                     switch(sterowanie)
                     {

                     case '4':
                        {
                            system("cls");
                        settings();
                        }
                        break;
                     }
                }
                break;

                case '2':
                {
                    system("cls");
                     cout<<"Glosnosc ogolna"<<endl;
                     cout<<"Glosnosc dialogow"<<endl;
                     cout<<"Odglosy walki"<<endl;
                     cout<<endl<<"Nacisnij 4 by wrocic"<<endl;

                      sterowanie=getch();

                     switch(sterowanie)
                     {

                     case '4':
                        {
                            system("cls");
                        settings();
                        }
                        break;
                     }
                }
                break;

                case '3':
                {
                    system("cls");
                     cout<<"Klawiatura"<<endl;
                     cout<<"Myszka"<<endl;
                     cout<<"Pad"<<endl;
                     cout<<endl<<"Nacisnij 4 by wrocic"<<endl;

                     sterowanie=getch();

                     switch(sterowanie)
                     {

                     case '4':
                        {
                            system("cls");
                        settings();
                        }
                        break;
                     }

                }
                break;

                case '4':
                {
                    system("cls");
                     menu_glowne();
                }
                break;

            }

}


void menu_glowne()                      //Funkcja ktora wywoluje menu glowne od pocztku    'void' nic nie potrzebuje do zwrotu
{

    cout << "MENU GLOWNE" << endl;
    cout<<endl<<"1. Nowa gra"<<endl;
    cout<<"2. Wczytaj zapis"<<endl;
    cout<<"3. Ustawienia"<<endl;
    cout<<"4. Wyjscie"<<endl;

znak=getch();

        switch(znak)
    {
    case '1':

        {
            system("cls");
            cout<<"Uruchamianie..."<<endl;
        }
        break;

    case '2':

        {
            system("cls");
            cout<<"1. Zapis 1"<<endl;
            cout<<"2. Zapis 2"<<endl;
            cout<<"3. Zapis 3"<<endl;
            cout<<"4. Powrot"<<endl;

            zapis=getch();
            switch(zapis)

            {
                case '1':
                {
                    system("cls");
                    cout<<"Wczytywanie..."<<endl;
                }
                break;

                case '2':
                    {
                        system("cls");
                        cout<<"Wczytywanie..."<<endl;
                    }
                    break;

                     case '3':
                    {
                        system("cls");
                        cout<<"Wczytywanie..."<<endl;
                    }
                    break;

                    case '4':
                    {
                        system("cls");
                        menu_glowne();
                    }
                    break;
            }


        }
        break;

    case '3':

        {
           system("cls") ;
           settings();


        }
        break;

    case '4':
        {
            exit(0);
        }
        break;



    }


}








int main()
{



    menu_glowne();





    return 0;
}

 

3 odpowiedzi

0 głosów
odpowiedź 27 sierpnia 2016 przez SebekChlebek Stary wyjadacz (11,290 p.)
Użyj nieskończonych pętli, i jak chcesz wyjść to break;

Niekończoną pętlą jest np. : for(;;) albo while(true)
komentarz 28 sierpnia 2016 przez KURKSON Nowicjusz (120 p.)
A nie moge zrobic osobnej funkcji, a po jej wywolaniu przejdzie do tych [ustawien]?
komentarz 28 sierpnia 2016 przez KURKSON Nowicjusz (120 p.)
edycja 28 sierpnia 2016 przez KURKSON

Osobiscie zrobilem to tak.

Stworzylem funkcje:

  • menu_glowne
  • nowa_gra
  • ustawienia
  • wyjscie
  • wczytaj_zapis

Za pomoca switch, case przechodze do opcji menu, a jak chce wrocic z [ustawienia -> grafika]to  wywoluje funkcje ustawienia, ktora jest zawarta w case. W funkcji ustawienia jest case ktory wywoluje menu_glowne. Żeby to caly czas dzialalo, w funkcji main jest petla nieskonczona for(;;) zaraaz po wywolaniu funkcji menu_glowne.

 

A no i jakby ktos nie wiedzial, to zeby ktoras z tych funkcji dzialala musi byc zawarta w funkcji main :)

#include <iostream>
#include <stdio.h>
#include <cstdlib>
#include <conio.h>
#include <windows.h>

using namespace std;

char znak, wyj;

void menu_glowne()
{
    system("cls");
    cout << "MENU GLOWNE" << endl;
    cout<<endl<<"1. Nowa gra"<<endl;
    cout<<"2. Wczytaj zapis"<<endl;
    cout<<"3. Ustawienia"<<endl;
    cout<<"4. Wyjscie"<<endl;
}

void ustawienia()
{
            system("cls");
            cout<<"1. Grafika"<<endl;
            cout<<"2. Dzwiek"<<endl;
            cout<<"3. Sterowanie"<<endl;
            cout<<"4. Powrot"<<endl;

            znak=getch();
            switch(znak)
            {
                    case '1':
                        {
                            system("cls");
                                cout<<"Rozdzielczosc"<<endl;
                                cout<<"Detale"<<endl;
                                cout<<"Odleglosc renderowania"<<endl;
                                cout<<endl<<"Nacisnij 4 by wrocic"<<endl;

                                wyj=getch();
                                switch(wyj)

                                {
                                    case '4':
                                        {
                                            ustawienia();
                                        }

                                }



                        }
                        break;


                        case '2':
                        {
                            system("cls");
                                cout<<"Glosnosc ogolna"<<endl;
                                cout<<"Glosnosc dialogow"<<endl;
                                cout<<"Odglosy walki"<<endl;
                                cout<<endl<<"Nacisnij 4 by wrocic"<<endl;

                                        wyj=getch();
                                switch(wyj)

                                {
                                    case '4':
                                        {
                                            ustawienia();
                                        }

                                }
                        }
                        break;


                        case '3':
                        {
                            system("cls");
                                 cout<<"Klawiatura"<<endl;
                                 cout<<"Myszka"<<endl;
                                 cout<<"Pad"<<endl;
                                 cout<<endl<<"Nacisnij 4 by wrocic"<<endl;

                                        wyj=getch();
                                switch(wyj)

                                {
                                    case '4':
                                        {
                                            ustawienia();
                                        }

                                }
                        }
                        break;


                        case '4':
                        {
                            system("cls");
                            menu_glowne();
                        }
                        break;
            }


}


void nowa_gra()
{
    system("cls");
    cout<<"Tworzenie swiata..."<<endl;
    Sleep(2000);
    exit(0);

}


void wczytaj_zapis()
{
    int cyfra_zapisu;

    system("cls");
    cout<<"1. Zapis 1"<<endl;
    cout<<"2. Zapis 2"<<endl;
    cout<<"3. Zapis 3"<<endl;
    cout<<"4. Powrot"<<endl;




                    znak=getch();
                    switch(znak)
                    {

                         case '1':
                             case '2':
                                 case '3':
                            {
                                system("cls");
                                cout<<"Wczytywanie..."<<endl;
                                Sleep(2000);
                                exit(0);
                            }
                            break;

                         case '4':
                            {
                                system("cls");
                                menu_glowne();
                            }
                            break;

                    }

}

void wyjscie()
{
    exit(0);
}




int main()
{

    menu_glowne();


    for(;;)
{


     znak=getch();
     switch(znak)

     {//klamra od switch (znak)

              case '1':
            {
                nowa_gra();
            }
            break;


            case '2':
            {
                wczytaj_zapis();
            }
            break;


             case '3':
            {
                ustawienia();

            }
            break;


              case '4':
            {
                wyjscie();
            }
            break;

     }//klamra od switch (znak)



}





    return 0;
}

 

komentarz 29 sierpnia 2016 przez SebekChlebek Stary wyjadacz (11,290 p.)

Bardziej mi chodzi o taki coś:

 

void menu()
{
    while(true)
    {
        system("clear");

        char choose;

        std::cout << "\n\tMenu głowne\n\n"
                "\t[1] Ustawienia\n\t[2] Wyjdź\n" << std::flush;
        choose = getch();

        switch(choose)
        {
            case '1':
                {
					while(true)
					{				
						//Kolejne menu					
					}
                }
            case '2':
                {
					return;
                }
            default:
                {
                    std::cout << "\n\tZły wybór" << std::flush;
                    u_sleep(500000);
                }
        }
    }
}

Jeśli chcesz przerwać nieskończoną pętle to break; i wracasz do wyżej postawionej pętli.

0 głosów
odpowiedź 27 sierpnia 2016 przez MetRiko Nałogowiec (37,110 p.)
przywrócone 27 sierpnia 2016 przez MetRiko
Tutaj wszystko wyjaśniłem.. przynajmniej ogólnikowo x)
Oczywiście.. zamiast używać if'ów możesz (powinieneś) użyć switch'a.
http://cpp.sh/65luy
–6 głosów
odpowiedź 27 sierpnia 2016 przez Dorian Bajorek Dyskutant (7,920 p.)

Jeżeli chcesz wrócić do ustawień to tak usuń te menu_glowne(); i zamiast  tego napisz

goto ustawienia;  a w ustawieniach daj ustawienia: 

           ustawienia:
           system("cls");
            cout<<"1. Grafika"<<endl;
            cout<<"2. Dzwiek"<<endl;
            cout<<"3. Sterowanie"<<endl;
            cout<<"4. Powrot"<<endl;
 
            ustawienia=getch();
 
            switch(ustawienia)
 
            {
                case '1':
                {
                    system("cls");
                     cout<<"Rozdzielczosc"<<endl;
                     cout<<"Detale"<<endl;
                     cout<<"Odleglosc renderowania"<<endl;
 
                     cout<<endl<<"Nacisnij 4 by wrocic"<<endl;
 
                      sterowanie=getch();
 
                     switch(sterowanie)
                     {
 
                     case '4':
                        {
                            system("cls");
                       goto ustawienia;
                        }
                        break;
                     }
                }

Pomogłem ? Działa? Prosze naj.Jeżeli nie pisz komentarz :D 

komentarz 27 sierpnia 2016 przez SebekChlebek Stary wyjadacz (11,290 p.)
Nie powinno się używać funcji goto. To jest ble :D
komentarz 27 sierpnia 2016 przez unknown Nałogowiec (39,560 p.)
goto? rly?
komentarz 27 sierpnia 2016 przez Dorian Bajorek Dyskutant (7,920 p.)
Jest żeby używać :D
komentarz 27 sierpnia 2016 przez unknown Nałogowiec (39,560 p.)
Nie. goto powstało, aby odwzorować skoki procesora, ale jedynie co robi, to zmniejsza czytelność kodu. Zawsze można zastąpić goto pętlą i powinno się to robić.
komentarz 27 sierpnia 2016 przez Dorian Bajorek Dyskutant (7,920 p.)
A dzięki bo czytałem sobie tam kiedyś synfonie C++ i tam było o tym mowa.
komentarz 28 sierpnia 2016 przez Ehlert Ekspert (212,670 p.)
Obecnie nie używa się goto. Symfonia jest dobra, ale ma kilka słabych stron.

Podobne pytania

0 głosów
3 odpowiedzi 235 wizyt
pytanie zadane 29 kwietnia 2016 w C i C++ przez Andrzej Piotr Nowak Nowicjusz (140 p.)
0 głosów
1 odpowiedź 231 wizyt
+1 głos
3 odpowiedzi 463 wizyt
pytanie zadane 26 stycznia 2023 w Rozwój zawodowy, nauka, praca przez urogi7 Początkujący (340 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

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

...