Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    99

    [C] saltare funzione getch() in assenza di input

    ciao a tutti, sto realizzando il giochino di snake tanto per divertirmi un po', e in pratica mi servirebbe che la funzione getch() che mi permette di premere i tasti freccia (72,75,77,80) senza necessità di premere invio, venga saltata in caso se non premo nulla. In pratica ho un ciclo infinito nel main che chiama la funzione con il getch che mi cambia direzione in base al tasto che premo. Come si potrebbe fare per proseguire con la direzione precedente in caso se non viene premuto alcun tasto?
    grazie in anticipo
    codice:
    while(1){
    		printM();
    		printf("\n %d   %d   %d\n",pX,pY,dir);
    		direction();
    		move();
    		delay(1000);
    		clrscr();
    	}
    codice:
    void direction()
    {
    	switch (getch()) { 
    		case 72: dir=3; 
    			break; 
    		case 75: dir=2; 
    			break; 
    		case 77: dir=0; 
    			break; 
    		case 80: dir=1; 
    			break;
    	}
    }

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Non è chiaro ma se imposti dir a -1 prima dello switch saprai cosa è successo ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    99
    no ma non è che c'è un problema, funziona tutto a dovere, solo che voglio che continui anche se non viene premuto nessun pulsante... cioè il mio serpentino segue una direzione e la continua a seguire finquando non premo un tasto che la cambi! invece qui si ferma e aspetta l'input di un tasto, come dovrebbe essere, però vorrei aggirarlo!

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Ah ... ma è la getch() che attende il tasto. Devi prevedere un'altra funzione che non attenda il tasto ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    99
    potresti consigliarmi una soluzione? su internet non riesco a trovare nulla
    grazie in anticipo

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Dato che l'input di questo tipo non è direttamente supportato dal linguaggio, dipende anche dal sistema operativo che usi ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    99
    si, pensavo di appoggiarmi a funzioni esterne ovviamente, attualmente sono su ambiente windows

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    99
    Risolto questo problema con kbhit() appartenente alla conio.h!

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Era quello che ti volevo suggerire anche se è un po' vecchiotta.

    Su Windows però potresti usare apposite API (GetAsyncKeyState)
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  10. #10
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    99
    non sono capace di integrarle, per adesso cerco di arrangiarmi con conio che mi ha aiutato parecchio altre volte, poi quando avrò tempo guarderò meglio su msdn grazie mille dei consigli!

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 © 2024 vBulletin Solutions, Inc. All rights reserved.