Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Problem z opuszczeniem podwójnej pętli while

Ostatnio zmodyfikowano 2011-12-27 15:33
Autor Wiadomość
marianekA
Temat założony przez niniejszego użytkownika
Problem z opuszczeniem podwójnej pętli while
» 2011-12-27 00:51:55
W pętli głównej mam wewnętrzną pętlę z której to nie potrafię wyjść. Wszelkie próby prowadzą do pozostania w pętli wewnętrznej lub do zakończenia programu wyjścia z obydwu pętli.
Po naciśnięciu SPACE chcę powrócić na początek pętli głównej by kontynuować kolejny poziom gry. Idę spać, pewnie jestem już przemęczony i nic mądrego już nie wymyślę ale liczę na Waszą pomoc:
C/C++
do
{
    rysowanie_diagramu();
   
    blit( screen, kopia, 40, 160, 0, 0, 40 + 80 * 9, 150 + 80 * 5 );
    stretch_sprite( screen, kopia, 70, 13, 180, 100 );
   
    mieszanie();
   
    while( !key[ KEY_ESC ] )
    {
        texty();
        myszka();
       
        if( spr < 45 )
        {
            przewijanie();
            sprawdzenie();
        }
        if( spr == 45 ) voice_start( 1 );
       
        if( spr == 45 && key[ KEY_SPACE ] )
        {
            voice_stop( 1 );
            ++poz;
            break;
        }
    }
}
while( poz > 10 );

...i jak wstawiać kod tu na forum by był w takiej ramce C/C++
P-46345
malan
» 2011-12-27 01:28:36
(...)jak wstawiać kod tu na forum by był w takiej ramce C/C++
» KursyKurs STC kurs.
P-46346
szyx_yankez
» 2011-12-27 08:46:42
C/C++
do
{
    abc:
    //
    while( !key[ KEY_ESC ] )
    {
       
        if( spr == 45 && key[ KEY_SPACE ] )
        {
            goto abc;
        }
    }
}
while( poz > 10 );

P-46347
matek2305
» 2011-12-27 09:24:23
Ja bym to tak zrobił:

C/C++
bool op = false;

do
{
    //
   
    while( !key[ KEY_ESC ] )
    {
       
        if( spr == 45 && key[ KEY_SPACE ] )
        {
            op = true;
            break;
        }
    }
}
while(( poz > 10 ) || op );
P-46348
pekfos
» 2011-12-27 13:51:52
@szyx_yankez: goto? może od razu na wyjątkach? :P
C/C++
try {
    while( 1 ) {
        for(;; ) {
            if( q ) throw 1;
           
        }
    }
}
catch(...) { }
P-46379
szyx_yankez
» 2011-12-27 15:21:30
O boshe, znowu się zaczyna, jakie to goto jest złe, jakie niedobre... Każdy za młodu nasłuchał się takich bajeczek, i masz.
To też jest element języka i jedyną rzeczą jaki różni moje rozwiązanie od rozwiązania @matek2305 to czytelność, chociarz i tak wg. mnie moje jest czytelniejsze(ale to niech już sobie każdy sam zinterpretuje).
P-46384
marianekA
Temat założony przez niniejszego użytkownika
» 2011-12-27 15:26:47
no właśnie Goto nie brałem pod uwagę
ale najlepiej podoba mi się rozwiązanie
z dodatkową zmienną,
dodam że jak usunąłem z warunku głównej pętli
zmienną poz i wstawiłem tam KEY_x to działa dobrze
na dniach zamieszczę na forum tę moją pierwszą grę.
Już dwa tygodnie uczę się tego C++ ...i mi się podoba.
P-46386
szyx_yankez
» 2011-12-27 15:33:06
Czyli problem rozwiązany? Jak tak to: close thread.
P-46388
« 1 »
  Strona 1 z 1