Gestione del cursore in una finestra console e matrix effect

di il
50 risposte

Gestione del cursore in una finestra console e matrix effect

Salve a tutti,
volevo sapere se esisteva un modo per sovrascrivere nella finestra dove viene eseguito il programma, invece che scrivere tutto di seguito, faccio un esempio:

printf("parola1 ");
printf("parola2");

viene scritto:
parola1 parola2

io voglio che venga scritto
parola1 e dopo un tot di tempo (uso la funzione Sleep()) SOPRA a parola1 parola2

Mi potete dire se è possibile e se si come posso fare? Grazie

50 Risposte

  • Re: Gestione del cursore in una finestra console e matrix effect

    Prova con

    printf("\rparola2");
  • Re: Gestione del cursore in una finestra console e matrix effect

    Ok ho provato e fa quello che volevo... così inizia a sovrascivere dall'inizio però, e se volessi sovrascivere da un determinato punto in poi? Esiste tipo un modo di scorrere la finestra dal primo punto in cui si può scrivere e poi dire di sorascrivere da lì?
  • Re: Gestione del cursore in una finestra console e matrix effect

    Hai un'esigenza diversa da quella del titolo della discussione.

    A questo punto dovrai usare le API della gestione della console con Windows.
  • Re: Gestione del cursore in una finestra console e matrix effect

    Cioè come dovrei intitolarla la discussione? Che così al massimo cambio titolo... E devo per forza usare queste API, non posso fare senza? In C::B ci sono già? Non ne ho un'idea e non so usarle, immagino che mi dovrò leggere qualcosa in giro a riguardo...
  • Re: Gestione del cursore in una finestra console e matrix effect

    Il trucco piu' semplice e' utilizzare un carrige return '\r' invece di un new line '\n'.
    In alternativa, aggiungere alla console il supporto alle sequenze di escape, ed utilizzare le seqjenze di escape dei vecchi terminali ascii per posizionare il cursore. (ad esempio: ^[ESC1;1h per posizionare il cursore in alto a sinistra) . Oppure usare le API Windows
  • Re: Gestione del cursore in una finestra console e matrix effect

    Gestione del cursore in una finestra console

    Per cui utilizzi la API

    SetConsoleCursorPosition


    e collegate.

    Le API sono funzioni messe a disposizione del sistema, non dipendono dal compilatore/IDE.
  • Re: Gestione del cursore in una finestra console e matrix effect

    Oregon il link non funziona...

    migliorabile: come faccio ad aggiungere alla console il supporto alle sequenze di escape? E dove trovo una liste delle sequenze di escape dei vecchi terminali ascii?

    Mi sono guardato i caratteri di escape già presenti e ho fatto un paio di prove... correggetemi se sbaglio ma teoricamente anche solo coi caratteri

    \r va all'inizio della riga
    \f va avanti di un posto

    combinati nel modo giusto riesco a coprire tutta la finestra... o no?
  • Re: Gestione del cursore in una finestra console e matrix effect

    Lascia perdere le sequenze di escape che fanno venire solo il mal di testa e segui il consiglio di oregon (e sufficiente inserire il nome della funzione in google).
    Comunque puoi usare questa funzione:

    https://www.iprogrammatori.it/forum-programmazione/cplusplus/esiste-comando-per-fare-salire-rigo-testo-t19696.html#p8510104

    che è servita a un altro utente per quello che doveva fare.
  • Re: Gestione del cursore in una finestra console e matrix effect

    StaticKing ha scritto:


    oregon il link non funziona...
    Era un problema del forum ... ho corretto.

    Lascia perdere le sequenze di escape ... use le API.
  • Re: Gestione del cursore in una finestra console e matrix effect

    Va bene, mi guarderò le API, grazie a tutti
  • Re: Gestione del cursore in una finestra console e matrix effect

    Anzi ho risolto ancora più semplicemente con la funzione suggerita da shodan, ho visto che fa quello di cui avevo bisogno, grazie ancora a tutti, ciao
  • Re: Gestione del cursore in una finestra console e matrix effect

    StaticKing ha scritto:


    Anzi ho risolto ancora più semplicemente con la funzione suggerita da shodan
    Beh, quella funzione usa le API che avresti dovuto studiare tu ma che è stato fatto da altri ...

    Hai risolto ma non hai imparato.
  • Re: Gestione del cursore in una finestra console e matrix effect

    Eccomi... sono io l'altro utente.

    Si, e' stata di notevole aiuto ed ho imparato ad utilizzarla per bene.

    ps.
    Se in modalita' console, si vuole rimanere sullo stesso rigo oppure scendere giu' di rigo, i comando sono banali:

    \t (avanti di un tab)
    \r (indietro inizio rigo)
    \n (va accapo sul rigo successivo)

    poi ho letto adesso di:

    \f (avanti di un carattere solo)

    ma ce ne sono tanti altri che fanno anche altre cose, come ad esempio:

    \a (emette un beep)

    piu' altri che ora non ricordo a memoria ma che basta leggere su qualche buon manuale. Sono comandi di console che vanno bene sia per il C che per il C++.
    Pero' come hanno gia' detto altri, se vuoi imparare bene a programmare, almeno farlo con scioltezza, il C come il C++ nonostante abbia meno comandi rispetto ad altri linguaggi di alto livello, tipo: se nel Pascal usi (if... then... else), nel C++ puoi usare soltanto (if... else), devi comunque studiarci sopra e fare esperimenti anche basandoti sui suggerimenti che ti danno nel forum, altrimenti impari cose a memoria senza capirle bene.
  • Re: Gestione del cursore in una finestra console e matrix effect

    se nel Pascal usi (if... then... else), nel C++ puoi usare soltanto (if... else)

    ma sono la stessa identica cosa!
    L'unica differenza è che nel pascal il confronto viene messo tra if e then mentre nel c tra ()
Devi accedere o registrarti per scrivere nel forum
50 risposte