[RISOLTO] Come implementare "PREMI UN TASTO", lampeggiante ?

di il
7 risposte

[RISOLTO] Come implementare "PREMI UN TASTO", lampeggiante ?

Mi presento... sono nuovo del forum...
Mi chiamo Franco e sono uno studente universitario, Facolta' di Fisica.

Ho trovato per puro caso questo forum che ritengo notevolmente d'aiuto per chi, come me, desidera imparare a programmare in C++ in maniera approfondita, anche se sono ancora agli inizi.

Premetto che come programmatore di altri linguaggio sono abbastanza ferrato: Basic, Pascal, altri particolari linguaggi poco conosciuti in quanto specifici per alcuni compiti di carattere non generico.

Ed ecco l'arcano mistero...

Ho iniziato con la creazione di un giochino semplice ma carino per fare pratica... il classico BATTAGLIA NAVALE, ma purtroppo sono fermo da tanti giorni su un problema che vorrei far implementare al programma e che non riesco a risolvere in nessuna maniera.

- parte una schermata di presentazione, tutto rigorosamente stampato a schermo con normali caratteri.
- in basso dovrebbe comparire la scritta lampeggiante: "PREMI UN TASTO PER CONTINUARE".

Qui mi fermo... come si fa' a far lampeggiare in C++ un testo, tipo quello che ho segnato sopra e nello stesso tempo rilevare la pressione di un tasto qualsiasi della tastiera per far si che alla pressione dello stesso il programma prosegue ?

Premessa inserendo il lampeggio in un ciclo di "do...while", facendo in modo che si sovrappongano alternativamente due testi, uno con la scritta ed uno senza niente che cancella il precedente, il lampeggio funziona, anzi ho inserito anche un beep che emetto un suono ad ogni lampeggio.

Purtroppo non trovo un comando che rilevi la pressione di un tasto qualsiasi e che mi fa' continuare il ciclo di lampeggio fintantoche' non premo un tasto.

il comando in C++: cin.get () non va' bene perche' ferma il ciclo di lampeggio fino a quando non premo un tasto, mentre invece io vorrei che la scritta continui a lampeggiare sempre fino a quando il tasto non viene premuto, dopo dovrebbe uscire dal ciclo e proseguire con le istruzioni successive.

Ragazzi... vi prego, sto' sbattendo la testa fino alle 3 del mattino ma niente.

Se riusciste a darmi una mano, ve ne sarei molto grato.

Uso: Windows 7 con Code::blocks ultima versione comprensivo di minigw

Ps. textcolor per il lampeggio non funziona, probabilmente perche' minigw non lo interpreta.

7 Risposte

  • Re: [RISOLTO] Come implementare "PREMI UN TASTO", lampeggiante ?

    Prova ad usare

    #include <conio.h>

    e quindi

    int ch;

    e nel ciclo

    ch = _getch();
  • Re: [RISOLTO] Come implementare "PREMI UN TASTO", lampeggiante ?

    Provo immediatamente e ti faccio sapere...

    ... tanto sono full-immersion anche adesso.
  • Re: [RISOLTO] Come implementare "PREMI UN TASTO", lampeggiante ?

    Cavolo...

    Adesso va' un po' meglio, pero' il comando _getch() attende sempre la pressione di un tasto prima di rifare il ciclo, oppure alla pressione di "a" esce dal ciclo.

    Mi spiego meglio:

    PORZIONE DI CODICE
    ---------------------------------------------------------------------------------------------------------
    char premiuntasto;

    do
    cin.clear(); // Pulisce il buffer della tastiera
    cout << "\r\t\t\t\t\t\t PREMI UN TASTO PER CONTINUARE";
    Beep(1000, 400);
    Sleep(400);
    cout <<"\r\t\t\t\t\t\t ";
    Sleep(600);
    premiuntasto = _getch();
    while (premiuntasto != 'a');
    return 0;
    -----------------------------------------------------------------------------------------------------------

    Questo e' il punto purtroppo... non riesco a fare lampeggiare di continuo il testo "PREMI UN TASTO", perche' per ogni lampeggio attende sempre prima la pressione di un tasto.
  • Re: [RISOLTO] Come implementare "PREMI UN TASTO", lampeggiante ?

    Scrivi così
    
            if(kbhit())
                premiuntasto = _getch();
    
  • Re: [RISOLTO] Come implementare "PREMI UN TASTO", lampeggiante ?

    WoW!!!

    GRAZIEEE!!!

    Ora dormo finalmente sogni tranquilli... ho provato e funziona alla perfezione.

    Question:

    Cos'e' "kbhit" ?

    Solo per capire in maniera piu' approfondita comandi che non trovo mai scritti da nessuna parte.

    Ps.
    Era da una settimana che cercavo nella rete, appaiono i piu' disparati esempi, ma tutti incompleti oppure sbagliati, in piu' tutti per C e non per C++ ed inoltre bah!!!

    Grazie.
  • Re: [RISOLTO] Come implementare "PREMI UN TASTO", lampeggiante ?

    http://msdn.microsoft.com/it-it/library/58w7c94c.asp (è per _kbhit ma analogo)
  • Re: [RISOLTO] Come implementare "PREMI UN TASTO", lampeggiante ?

    Ottimo... ho letto.
    Anzi ti diro' di piu'... adesso miglioro la procedura che avevo sviluppato, ho notato infatti che si puo' fare.

    Ps. Da ora in poi saro' uno dei frequentatori piu' assidui di questo forum, spero di riuscire spesso a dare anch'io il mio contributo.
Devi accedere o registrarti per scrivere nel forum
7 risposte