Pętla while wykonuje w nieskończoność ostatnie polecenie.
Ostatnio zmodyfikowano 2014-09-01 22:44
SquBany Temat założony przez niniejszego użytkownika |
Pętla while wykonuje w nieskończoność ostatnie polecenie. » 2014-09-01 22:22:51 Zaczałem prace nad projektem gry roguelike (praktyka czyni mistrza, trzeba ćwiczyć a nie tylko czytać). Najpierw chciałem obmyślić jak będzie działał system poruszania się. Wymyśliłem że po kierunkach, dokładnie europejskich skrótach kierunków. Zrobiłem nie poukładany brzydki program by tylko sprawdzić czy tak jak myślę jest dobrze. Okazało się że mniej więcej tak. Robiąc pętlę w każdej funkcji (funkcja dla każdego miejsce, moim zdaniem dobry pomysł) aby nie zakoń... Wrzuce po prostu kod i opisze co jest nie tak void potem1() { cout << "Cos"; cin >> wybor; int i = 0; while( i == 0 ) { switch( wybor ) { case 'e': start(); break; case 'E': start(); break; default: cout << "Nie ma takiego wyjscia!"; break; } } }
To jest kod miejsca do którego chcę przejśćpo starcie. Mianowicie próbując wpisać będąc w tej lokacji literę np. t, funkcja w nieskońćzoność wypisuje defaulta. Coś źle napisałem w tej funkcji ? Jak ktoś chce niżej kod tego czegoś co ma być testem: #include <iostream>
using namespace std;
char wybor;
void start();
void potem1() { cout << "Cos"; cin >> wybor; int i = 0; while( i == 0 ) { switch( wybor ) { case 'e': start(); break; case 'E': start(); break; default: cout << "Nie ma takiego wyjscia!"; break; } } }
void potem2() { cout << "Cos"; cin >> wybor; if( wybor == 'n' || wybor == 'N' ) start(); }
int main() { while( true ) { start(); } return 0; }
void start() { cout << "To startowe miejsce. Wpisz 'W'"; cin >> wybor; if( wybor == 'w' || wybor == 'W' ) potem1(); if( wybor == 's' || wybor == 'S' ) potem2(); }
Wykorzystałem sposób aby najpierw dawać void start(); a pod mainem co jest w środku. Dlaczego tak ? Bo jak dałem nad potem1 i potem 2 funkcje start to kompilator krzyczał że potem1 i potem2 nie było zdeklarowane. A jak dam start pod tymi funkcjami to krzyczy że start nie był zdeklarowany. |
|
Monika90 |
» 2014-09-01 22:35:59 Ponieważ cin >> wybor; nie jest wewnątrz pętli, to zmienna wybor ma przy każdym obiegu pętli tę samą wartość i dlatego wybierana jest ciągle ta sama sekcja switcha. |
|
SquBany Temat założony przez niniejszego użytkownika |
» 2014-09-01 22:44:37 Zaraz... no tak... Przylepić kartke z napisem "!!!MYŚL!!!" bo czasem tego nie robię ._. |
|
« 1 » |