Meine Eingabe muss zu oft mit Enter bestätigt werden, wieso?



  • hallo liebe Comunity xD, ich dachte mir mal fuer den lern effekt prog ich mal ein einfaches 4x4 Sudoku. also ich kann mich im mom in meinem spielfeld per "SOLIDCURSOR" bewegen, eine bool var namens marked ist zu der zeit noch false, drueckt man nun Enter, wird marked true und der curser zu "NOCURSOR". nun kann man eine eingabe tätigen. so sieht das im mom aus:

    int Keyboard() {
    
        if( kbhit() ) {
    
            Key = getch();
    
            switch( Key ) {
    
                case 27: {
    
                    play = false;
                    break;
                }
                case 13: {
    
                    if( !( Human.marked ) ) {
    
                        Human.marked = true;
    
                        _setcursortype( _NOCURSOR );
    
                             cin >> Human.number;
    
                            switch( Human.number ) {
    
                                case 1: {
    
                                    gotoxy( Human.c_posX, Human.c_posY );
    
                                    textcolor( GREEN );
                                    cprintf( "1" );
                                    field[Human.f_posX][Human.f_posY] = Human.number;
    
                                    gotoxy( Human.c_posX, Human.c_posY );
                                    break;
                                }
                            }
                    }
                    else if( ( Human.marked ) ) {
    
                        Human.marked = false;
                        _setcursortype( _SOLIDCURSOR );
                    }
                    break;
                }
    
                case 'w':
                case 'W': {
    
                    if( ( Human.c_posY > 4 ) && ( Human.f_posY > -1 ) ) {
    
                        Human.f_posY--;
                        field[Human.f_posX][Human.f_posY];
                        Human.c_posY -= 4;
                        gotoxy( Human.c_posX, Human.c_posY );
                    }
                    break;
                }
    
                case 's':
                case 'S': {
    
                    if( ( Human.c_posY < 16 ) && ( Human.f_posY < 4 ) ) {
    
                        Human.f_posY++;
                        field[Human.f_posX][Human.f_posY];
                        Human.c_posY += 4;
                        gotoxy( Human.c_posX, Human.c_posY );
                    }
                    break;
                }
    
                case 'a':
                case 'A': {
    
                    if( ( Human.c_posX > 5 ) && ( Human.f_posX > -1 ) ) {
    
                        Human.f_posX--;
                        field[Human.f_posX][Human.f_posY];
                        Human.c_posX -= 4;
                        gotoxy( Human.c_posX, Human.c_posY );
                    }
                    break;
                }
    
                case 'd':
                case 'D': {
    
                    if( ( Human.c_posX < 16 ) && ( Human.f_posX < 4 ) ) {
    
                        Human.f_posX++;
                        field[Human.f_posX][Human.f_posY];
                        Human.c_posX += 4;
                        gotoxy( Human.c_posX, Human.c_posY );
                    }
                    break;
                }
            }
        }
        return 0;
    }
    

    wenn ich nun enter pushe und ne zahl eingebe muss ich ungefähr 3mal noch einmal enter druecken damit der wert bestätigt wird und mein cursor wieder SOLID wird.... hmm wieso? ich will doch das man entert zahl eintippt und mit noch mal enter alles passt. fuer hilfe waer ich sehr verbunden.



  • wahrscheinlich weil dein spaghetti code 3 mal die gleiche funktion aufruft...



  • aha und wo ruft der die 3mal auf?



  • wenn er spagetti code schreibt meint er, dass er da auch überhaupt nicht durchblickt, von daher war das blos eine Vermutung, auf die man genauso gut auch verzichten kann.
    Ich kann für die Tastaturaubfrage nur SDL empfehlen, da kann man ein Array anfordern, dass alle Gedrückten Tasten durch den Boolischen werrt True angibt, das erspart viel arbeit, und SDL gibts für jede Platform.



  • sorry kann mit SDL nichts anfangen....


Anmelden zum Antworten