Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [C] Problema funzione getch()

    E' sorto un problema mentre stavo facendo un programma in C: utilizzando la funzione getch() do a una variabile l'input inserito dalla tastiera poi se corrisponde a determinati valori il programma esegue di conseguenza.
    Ora, utilizzando 72, 80, 77, 75 per su, giù, destra e sinistra il programma mi da dei problemi come mai?

  2. #2
    Che problemi ti da' ?
    Perche' non posti il pezzo di codice che usi ?

  3. #3
    codice:
    if (!kbhit()){ 
           tastof=getch();
           if(tastof==0) tastof=getch();
           if ((tastof==SU)||(tastof==GIU)||(tastof==SX)||(tastof==DX)||(tastof==SPACEBAR)||(tastof==ENTER)) 
           tastov=tastof;
           }

  4. #4
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    getch() legge UN CARATTERE.

    Dando come input 77[INVIO] tu gli stai dando due (tre) caratteri: 7 7 e \n (ma su quest'ultimo non sono sicuro al 100%)
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  5. #5
    Ho provato a cambiare il valori di su,giù,dx,sx con quello corrispettivi di w,s,d,a e funziona alla perfezione... Il problema sorge solo con i tasti direzionali...

  6. #6
    Allora, c'è un problema.
    Se usi Visual C++, la funzione getch considera le freccie dei tasti "estesi".
    Se il tasto è esteso getch() ritorna -32, non il codice della freccia.
    Per leggere il codice del tasto esteso, lo leggi richiamando un'altra volta getch().

    Es.

    codice:
    char car = 0;
    char car2 = 0;
    if ((car = getch()) == -32) {
        // il tasto è esteso, quindi può essere una delle frecce.
        switch (car2 = getch()) {
            /* Controlla se car2 è 77, 72 ecc... */
        }

  7. #7
    Non so come mai da me il carattere esteso è formato da 224 e 80-77-75-72, comunque adesso il programma funziona, grazie 1000!!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.