• 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++

Object Storage Arubacloud
0 głosów
220 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,000 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ź 172 wizyt
pytanie zadane 8 października 2020 w C i C++ przez Filip325 Nowicjusz (160 p.)
0 głosów
2 odpowiedzi 251 wizyt
pytanie zadane 4 listopada 2016 w C i C++ przez vega Użytkownik (510 p.)
0 głosów
3 odpowiedzi 201 wizyt
pytanie zadane 2 grudnia 2020 w Java przez nexyz Nowicjusz (210 p.)

92,556 zapytań

141,404 odpowiedzi

319,560 komentarzy

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

...