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

question-closed [C++] Problem z system("cls")

VPS Starter Arubacloud
0 głosów
855 wizyt
pytanie zadane 13 stycznia 2016 w C i C++ przez sqbi Początkujący (470 p.)
zamknięte 7 września 2018 przez sqbi
#include <iostream>
#include <cstdlib>
#include <stdio.h>

using namespace std;

int wybor_1,wybor_2,wybor_3,zycie=1,obrona=1,atak=1,lvl=1,xp=1;

void zapisz()
{
   FILE *save=fopen("save.sav","w");
    fprintf(save,"%02d , %02d , %02d , %02d , %05d",zycie,obrona,atak,lvl,xp);
    fclose(save);
}

void wczytaj()
{
   FILE *save=fopen("save.sav","r");
fprintf(save,"%02d , %02d , %02d , %02d , %05d",&zycie,&obrona,&atak,&lvl,&xp);
    fclose(save);
}

int main()
{
    system("title ---WALKA---");

    //menu
    while(true)
    {
        system("cls");
        cout<<"________"<<endl;
        cout<<"WALKA"<<endl;
        cout<<"________"<<endl;
        cout<<""<<endl;
        cout<<""<<endl;
        cout<<""<<endl;
        cout<<"________"<<endl;
        cout<<"1) Graj"<<endl;
        cout<<"________"<<endl;
        cout<<"2) Opcje"<<endl;
        cout<<"________"<<endl;
        cout<<"3) Wyjdz"<<endl;
        cout<<"________"<<endl;

        //graj
        if (wybor_1==1)
        {
            system("cls");
            cout<<"__________"<<endl;
            cout<<"GRAJ"<<endl;
            cout<<"__________"<<endl;
            cout<<"1) Od nowa"<<endl;
            cout<<"2) Wczytaj"<<endl;
            cout<<"__________"<<endl;
            cout<<"3) Wroc"<<endl;
            cout<<"__________"<<endl;

            if (!(cin>>wybor_3))
            {
                cerr<<"To nie jest liczba!";
                break;
            }

            if(wybor_3==3)
            {

            }
            system("cls");
        }

        if (!(cin>>wybor_1))
        {
            cerr<<"To nie jest liczba!";
            break;
        }
        //wyjscie
        if(wybor_1==3)
        {
            exit(0);
            system("cls");
        }
        //opcje
        if(wybor_1==2)
        {
            system("cls");
            cout<<"________________"<<endl;
            cout<<"OPCJE"<<endl;
            cout<<"________________"<<endl;
            cout<<"Zmien kolor tla:"<<endl;
            cout<<"1) Czarny"<<endl;
            cout<<"2) Niebieski"<<endl;
            cout<<"3) Zielony"<<endl;
            cout<<"4) Blekitny"<<endl;
            cout<<"5) Czerwony"<<endl;
            cout<<"6) Purpurowy"<<endl;
            cout<<"7) Zolty"<<endl;
            cout<<"8) Szary"<<endl;
            cout<<"________________"<<endl;
            cout<<"9) wroc"<<endl;
            cout<<"________________"<<endl;

            if (!(cin>>wybor_2))
            {
                cerr<<"To nie jest liczba!";
                break;
            }

            if(wybor_2==1)
            {
                system("color 07");
            }
            if(wybor_2==2)
            {
                system("color 17");
            }
            if(wybor_2==3)
            {
                system("color 27");
            }
            if(wybor_2==4)
            {
                system("color 37");
            }
            if(wybor_2==5)
            {
                system("color 47");
            }
            if(wybor_2==6)
            {
                system("color 57");
            }
            if(wybor_2==7)
            {
                system("color 67");
            }
            if(wybor_2==8)
            {
                system("color 87");
            }
            if(wybor_2==9)
            {

            }
            system("cls");

        }

    }

    return 0;
}

 

 

 

Mam problem z tym w komentarzu "graj" jak daje 3 to powinno dawać: wyczyszczenie ekranu i że mam zapętlone powinno mi dać "menu" ale mam problem z tym wyczyszczeniem, ponieważ mi wyczyszcza ale nie włącza mi się "menu" jest pusto ale potem jak wpisze się cyfrę to wyskakuje to menu nie wiem co mam zrobić by tak nie było pomocy! I jeszcze jedno tego "1) graj od nowa" i "2) wczytaj" to jeszcze nie mam zrobionego.
komentarz zamknięcia: Pisałem to kiedy jeszcze byłem głupi. I dalej jestem.

2 odpowiedzi

0 głosów
odpowiedź 13 stycznia 2016 przez mbabane Szeryf (79,280 p.)
wybrane 14 stycznia 2016 przez sqbi
 
Najlepsza

Na samym początku polecam Ci zapoznać się z instrukcja swtich, krótko mówiąc jest wręcz stworzona do stosowana menu w takim stylu jak Ty chcesz.

Troche zagmatwany ten kod. Polecam także zachowywać kolejność wykonywanych operacji (bo to Cię własnie zgubiło), bo przykładowo najpierw sprawdzasz zmienna a potem ją pobierasz (zmienna wybor_1) - może to czasem powodować złe działanie, a przede wszystkim utrudnia interpretacje kodu.

Reasumując powinno to wyglądać tak:

pobieram daną x
sprawdzam pobrana dana x

A Twój kod robi tak:

sprawdza daną x
pobiera daną x

 

Ok konkretnie teraz do Twojego problemu. Wybierając liczbę 3 w momencie kiedy jesteśmy w pod menu Graj program wchodzi do if (wybor_3==3) tam nie ma nic do roboty. Wychodzi sobie i jak gdyby nigdy nic kontynuje po koleji operacje, a więc czysci ekran i czeka na podanie danej dla zmiennej wybor_1.

komentarz 13 stycznia 2016 przez sqbi Początkujący (470 p.)
Kurcze niby łatwe bo tylko powrót wielke mi rzeczy a tak naprawde to supersupersupersuper........ trudne!

(Nie ogarniam i mam w nosie ten już mój program bo co tylko teraz mi zostaje usunąć projekt i robić inne)
komentarz 13 stycznia 2016 przez sqbi Początkujący (470 p.)
I wogule skąd mam wiedzieć co mam zrobić przecież to ja informatyki ucze się od......

Mirosława Zelenta który jeszcze albo nigdy nie pokaże jak i co przecież jak można umieć nie wiedząc co to jest.
komentarz 13 stycznia 2016 przez mbabane Szeryf (79,280 p.)
edycja 13 stycznia 2016 przez mbabane

Twoj program nie wykracza po za ten kurs:

https://www.youtube.com/playlist?list=PLOYHgt8dIdoxx0Y5wzs7CFpmBzb40PaDo

 

A co do tego programu powyżej, to juz napiszę Ci rozwiązanie (poniekąd). Przenieś:
 

    if (!(cin>>wybor_1))
        {
            cerr<<"To nie jest liczba!";
            break;
        }

przed //graj

 

Powiem Ci też jaka była przyczyna tego że tak się zniechęciłeś do tego programu. Otóż, kod jest napisany w taki sposób, że czytając go linijka po linijce nie jest się w stanie zorientować o co chodzi.

komentarz 14 stycznia 2016 przez sqbi Początkujący (470 p.)
Właśnie tak zrobiłem i nic...
komentarz 14 stycznia 2016 przez mbabane Szeryf (79,280 p.)
#include <iostream>
#include <cstdlib>
#include <stdio.h>

using namespace std;

int wybor_1,wybor_2,wybor_3,zycie=1,obrona=1,atak=1,lvl=1,xp=1;

void zapisz()
{
   FILE *save=fopen("save.sav","w");
    fprintf(save,"%02d , %02d , %02d , %02d , %05d",zycie,obrona,atak,lvl,xp);
    fclose(save);
}

void wczytaj()
{
   FILE *save=fopen("save.sav","r");
fprintf(save,"%02d , %02d , %02d , %02d , %05d",&zycie,&obrona,&atak,&lvl,&xp);
    fclose(save);
}

int main()
{
    system("title ---WALKA---");

    //menu
    while(true)
    {
        system("cls");
        cout<<"________"<<endl;
        cout<<"WALKA"<<endl;
        cout<<"________"<<endl;
        cout<<""<<endl;
        cout<<""<<endl;
        cout<<""<<endl;
        cout<<"________"<<endl;
        cout<<"1) Graj"<<endl;
        cout<<"________"<<endl;
        cout<<"2) Opcje"<<endl;
        cout<<"________"<<endl;
        cout<<"3) Wyjdz"<<endl;
        cout<<"________"<<endl;

        //graj
        if (!(cin>>wybor_1))
        {
            cerr<<"To nie jest liczba!";
            break;
        }
        if (wybor_1==1)
        {
            system("cls");
            cout<<"__________"<<endl;
            cout<<"GRAJ"<<endl;
            cout<<"__________"<<endl;
            cout<<"1) Od nowa"<<endl;
            cout<<"2) Wczytaj"<<endl;
            cout<<"__________"<<endl;
            cout<<"3) Wroc"<<endl;
            cout<<"__________"<<endl;

            if (!(cin>>wybor_3))
            {
                cerr<<"To nie jest liczba!";
                break;
            }

            if(wybor_3==3)
            {
                continue;
            }
            system("cls");
        }


        //wyjscie
        if(wybor_1==3)
        {
            exit(0);
            system("cls");
        }
        //opcje
        if(wybor_1==2)
        {
            system("cls");
            cout<<"________________"<<endl;
            cout<<"OPCJE"<<endl;
            cout<<"________________"<<endl;
            cout<<"Zmien kolor tla:"<<endl;
            cout<<"1) Czarny"<<endl;
            cout<<"2) Niebieski"<<endl;
            cout<<"3) Zielony"<<endl;
            cout<<"4) Blekitny"<<endl;
            cout<<"5) Czerwony"<<endl;
            cout<<"6) Purpurowy"<<endl;
            cout<<"7) Zolty"<<endl;
            cout<<"8) Szary"<<endl;
            cout<<"________________"<<endl;
            cout<<"9) wroc"<<endl;
            cout<<"________________"<<endl;

            if (!(cin>>wybor_2))
            {
                cerr<<"To nie jest liczba!";
                break;
            }

            if(wybor_2==1)
            {
                system("color 07");
            }
            if(wybor_2==2)
            {
                system("color 17");
            }
            if(wybor_2==3)
            {
                system("color 27");
            }
            if(wybor_2==4)
            {
                system("color 37");
            }
            if(wybor_2==5)
            {
                system("color 47");
            }
            if(wybor_2==6)
            {
                system("color 57");
            }
            if(wybor_2==7)
            {
                system("color 67");
            }
            if(wybor_2==8)
            {
                system("color 87");
            }
            if(wybor_2==9)
            {

            }
            system("cls");

        }

    }

    return 0;
}

0 głosów
odpowiedź 13 stycznia 2016 przez KubenQPL Maniak (62,820 p.)
Na końcu tego IF(wybór_1==1) masz system("cls") który czyści przez co nie ma menu.
komentarz 13 stycznia 2016 przez KubenQPL Maniak (62,820 p.)
A poza tym dla każdej z opcji mogłeś zrobić osobną funkcję i dać to jako switch. Switch(wybor_1){ Case 1: funkcja1(); break; Case 2: funkcja2(); break; ... Itd.
komentarz 13 stycznia 2016 przez sqbi Początkujący (470 p.)
Właśnie próbowałem z switchem ale milion razy próbowałem i nie działało więc ify zrobiłem.
komentarz 13 stycznia 2016 przez KubenQPL Maniak (62,820 p.)
A wiesz jak używać switch? To nie jest trudne. Funkcja switch przyjmuje zmienną int (lub po prostu liczbę całkowitą jaką wpiszesz w nawias, i wykonuje operacje case w zależności jaką liczbą jest ta zmienna jeśli w switch(wybor1) wybor1 będzie równy 1 to wykona się case 1

Podobne pytania

0 głosów
1 odpowiedź 660 wizyt
pytanie zadane 6 czerwca 2019 w C i C++ przez kkajet007 Nowicjusz (180 p.)
0 głosów
2 odpowiedzi 1,989 wizyt
pytanie zadane 5 lutego 2017 w C i C++ przez WireNess Stary wyjadacz (11,240 p.)
0 głosów
2 odpowiedzi 7,192 wizyt
pytanie zadane 11 stycznia 2018 w C i C++ przez ildan91 Użytkownik (630 p.)

92,455 zapytań

141,263 odpowiedzi

319,099 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...