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

question-closed Mam problem z pętlą do...while C++

Cloud VPS
0 głosów
415 wizyt
pytanie zadane 24 lipca 2021 w C i C++ przez Bartusio445 Początkujący (290 p.)
zamknięte 25 lipca 2021 przez Bartusio445

Witam.

Dzisiaj wpadłem na pomysł, aby zbudować własną grę w języku C++. Miała być to zwykła gra RPG z rozwojem miast itp. Coś jakbyśmy wcielali się w jakiegoś szlachcia czy coś takiego. No dobrze, w sumie to wiedz zbędna, więc przechodzę do problemu...

Otóż problem jest taki, że mimo, że klikam 1 lub 2 w pierwszej pętli while to i tak ona się powtarza zamiast zatrzymać.

(gra jest jeszcze niedokończona)

#include <iostream>
#include <time.h>
#include <windows.h>
#include <conio.h>
#include <fstream>

using namespace std;

char *tr(char *str)
  {
   static char buff[256];
   char cp[]="\245\206\251\210\344\242\230\276\253\244\217\250\235\343\340\227\275\215ąćęłńóśżźĄĆĘŁŃÓŚŻŹ";
   if(strlen(str)>=sizeof(buff)) return str;
   char *bf=buff;
   while(*str)
     {
      char *pos=strchr(cp+18,*str);
      *(bf++)=pos?*(pos-18):*str;
      ++str;
     }
   *bf=0;
   return buff;
  }

  int wybor1,wybor2,wybor3;

int main()
{
    cout << "witamy w grze The lord of empires !" << endl;
    Sleep(2500);
    system("cls");

    do
    {
    cout<<tr("Rozpoczęcie gry")<<endl;
    cout<<tr("-------------------------------------")<<endl;
    cout<<tr("1. Nowa gra")<<endl;
    cout<<tr("2. Wczytanie rozpoczętej gry")<<endl;
    cout<<tr("3. Wyjście")<<endl;
    wybor1=getch();

    switch(wybor1)
    {
        case '1':
            {

            }
        break;
        case '2':
            {

            }
        break;
        case '3':
            {
                do
                {
                    system("cls");
                cout<<tr("Czy napewno chcesz wyjść z menu ?")<<endl;
                cout<<"1. Tak"<<endl;
                cout<<"2. Nie"<<endl;

                wybor2=getch();

                switch(wybor2)
                {
                    case '1': return 0; break;
                    case '2':
                        {
                            do
                            {
                                system("cls");
                                cout<<tr("Rozpoczęcie gry")<<endl;
                                cout<<tr("-------------------------------------")<<endl;
                                cout<<tr("1. Nowa gra")<<endl;
                                cout<<tr("2. Wczytanie rozpoczętej gry")<<endl;

                                wybor3=getchar();

                                switch(wybor3)
                                {
                                    case '1': break;
                                    case '2': break;
                                    default:
                                        {
                                            system("cls");
                                            cout<<"Nie ma takiej opcji";
                                            Sleep(2000);
                                            system("cls");
                                        }
                                    break;
                                }
                            }while((wybor3=='1')||(wybor3=='2'));

                        }
                    break;
                    default:
                        {
                            system("cls");
                            cout<<"Nie ma takiej opcji";
                            Sleep(2000);
                            system("cls");
                        }
                    break;
                }
                }while((wybor2=='1')||(wybor2=='2'));
            }
        break;
        default:
            {
                system("cls");
                cout<<"Nie ma takiej opcji"<<endl;
                Sleep(2000);
                system("cls");
            }
        break;
    }
    }while((wybor1=='1')||(wybor1=='2'));


    return 0;
}

 

komentarz zamknięcia: Błąd został wyjaśniony.

1 odpowiedź

0 głosów
odpowiedź 24 lipca 2021 przez tkz Nałogowiec (42,060 p.)
edycja 24 lipca 2021 przez tkz

Bo wybór to int, a porównujesz go z char'em. '1' zostanie przerzutowane na int'a, co  da 49.

Nie, nie zauważyłem getch. Żeby pętla się przerwała, warunek musi być fałszywy. Przy wyborze 1 lub 2, jest prawdziwy. 

komentarz 25 lipca 2021 przez Bartusio445 Początkujący (290 p.)
Dziękuję ci bardzo. Możliwe, że moje roztargnienie było przez to, że robiłem to wieczorem, a nie zawsze siedzę wieczorem na kompie...

Podobne pytania

0 głosów
1 odpowiedź 215 wizyt
pytanie zadane 8 października 2020 w C i C++ przez Filip325 Nowicjusz (160 p.)
0 głosów
2 odpowiedzi 368 wizyt
pytanie zadane 4 listopada 2016 w C i C++ przez vega Użytkownik (510 p.)
0 głosów
3 odpowiedzi 284 wizyt
pytanie zadane 2 grudnia 2020 w Java przez nexyz Nowicjusz (210 p.)

93,469 zapytań

142,404 odpowiedzi

322,716 komentarzy

62,852 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

Kursy INF.02 i INF.03
...