nach bestätigen kehrt das prog net zur schleife zurück



  • hi... ich hab hier mal nen shcnippsel von meinem programm.... es ist so vorgesehen das wenn die anwendung bei betaetigen der esc-taste pausiert und ein fenster sich oefnet welches fragt beenden j/n... geh ich auf nein und bestaetige gehts aber will ich weiter machen verlaesst er die schleife irgendwie nbet und fragt noch mal das selbe und so weiter...drueck ich jedoch 2mal hinter einander schnell enter klappt es und die ursprüngliche anwendung wird wieder aufgenommen. hmm was kann ich tun? gibts ne möglich keit bei pressen von enter die taste 2mal auszuwerten so das dieses doppelbetätigen hinfaellig wird???

    bool play = true;
     while (play)
      {
    
       clrscr();
       gotoxy(snake_pos_x,snake_pos_y);                    // Spawnpoint: Schlange
       textcolor(LIGHTRED);
       cprintf("s");
    
         gotoxy(creep_pos_x,creep_pos_y);                  // Spwanpoint: Beute, später auf Zufall
         textcolor(GREEN);
         cprintf("o");
         gotoxy(1,20);
    
            textbackground(LIGHTBLUE);
            textcolor(WHITE);
            cprintf("________________________________________________________________________________");
            cout << "\n";
            textcolor(YELLOW);
            cprintf("Level: %d",Level);
            cout << "\n\n";
            cprintf("Score: %d",Score);
    
           Sleep(Speed);                                     // gibt die Geschwindigkeit der Schlange an
    
           if (kbhit())                                    // wenn Taste gedrückt wird
           {
              Key = getch();                               // Taste sofort auswerten, ohne auf Eingabe
           }                                               // zu warten
    
              switch (Key)                                 // Tastenfunktion zuweisen
             {
                   case 'w': snake_pos_y--; break;         // hoch
                   case 'a': snake_pos_x--; break;         // links
                   case 's': snake_pos_y++; break;         // runter
                   case 'd': snake_pos_x++; break;         // rechts
                   case 27 :
    
                  int cur;
                  int c_pos_x = 35, c_pos_y = 12;
                  int kKey;
                  bool vote = true;
    
                  while(vote)
                  {
    
                            textcolor(BLACK);
                            gotoxy(23,9);
                            textbackground(WHITE);
                            cprintf("***************************************");
                            gotoxy(23,10);
                            cprintf("*   ");textcolor(RED);cprintf(">>> Spiel wirklich beenden? <<<");textcolor(BLACK);cprintf("   *");
                            gotoxy(23,11);
                            cprintf("*                                     *");
                            gotoxy(23,12);
                            cprintf("*       ");textcolor(RED);cprintf("Ja!           NEIN!           ");textcolor(BLACK);cprintf("*");
                            gotoxy(23,13);
                            cprintf("*                                     *");
                            gotoxy(23,14);
                            cprintf("***************************************");
    
                            gotoxy(c_pos_x,c_pos_y);
                            textcolor(BLACK);
                            cprintf("<-");
                            Sleep(50);
    
                         if(kbhit())
                         {
                            kKey = getch();
    
                            switch(kKey)
                            {
                                case 'a' : c_pos_x--; break;
                                case 'd' : c_pos_x++; break;
                                case 13  : vote = false; break;
    
                            }
                            if(c_pos_x == 34)
                            {
                                c_pos_x = 51;
                            }
                            if(c_pos_x == 36)
                            {
                                c_pos_x = 51;
                            }
    
                            if(c_pos_x == 50)
                            {
                                c_pos_x = 35;
                            }
                            if(c_pos_x == 52)
                            {
                                c_pos_x = 35;
                            }
                         }
                  }
                  switch(c_pos_x)
                  {
                        case 35: play = false; break;
                        case 51: play = true; break;
                  }
             }
    

    fuwer schnelle hilfe THANX.

    mfg knuter



  • wieso antwortet den niemaND 😞



  • knuter schrieb:

    wieso antwortet den niemaND 😞

    Vermutlich, weil du wie ein Schwachkopf schreibst.

    Das Problem liegt darin, wie du dir die zuletzt gedrückte Taste merkst. Solange da 27 drin steht, machst du dein Fenster immer wieder auf.



  • MFK schrieb:

    knuter schrieb:

    wieso antwortet den niemaND 😞

    Vermutlich, weil du wie ein Schwachkopf schreibst.

    Das Problem liegt darin, wie du dir die zuletzt gedrückte Taste merkst. Solange da 27 drin steht, machst du dein Fenster immer wieder auf.

    danke fuer das kompliment



  • ne aber mal im ernst was kann ich den da gegen tun??? des mit dem merken von 27 hab ich ben net ganz verstanden



  • Wenn du 's' drückst, läuft deine Schlange immer wieder nach rechts, bis du einen andere Taste drückst.
    Wenn du 'Esc' drückst, geht immer wieder dein "Fenster" auf, bis du eine andere Taste drückst.

    -> Du darfst 's' und 'Esc' nicht gleich behandeln.



  • d.h. also das ich fuer "Esc" eine extra switch&case abfrage machen soll???



  • Du könntest auch ans Ende des "case 27:" Blocks (der für ESC) die Anweisung "key=0;" ergänzen, dann landest du im nachfolgenden Schleifendurchlauf im (nicht vorhandenen) default-Block.



  • danke CStoll des wars was ich gebraucht hatte jetzt geht, THANX


Anmelden zum Antworten