Bonsoir à tous,
je suis débutant et je voudrais savoir si quelqu'un saurait comment faire pour obtenir du texte clignotant dans une fenêtre DOS ? :roll:
Version imprimable
Bonsoir à tous,
je suis débutant et je voudrais savoir si quelqu'un saurait comment faire pour obtenir du texte clignotant dans une fenêtre DOS ? :roll:
Alors il faut associer :
- un printf("blabla")
- une tempo que tu peux obtenir dans une bibliothèque (facile à trouver il faut juste chercher...:P )
- tu effaces l'écran
- une deuxième tempo
et tout ça dans une boucle while...:mrgreen:
Bonsoir , je sais que cela est possible sous linux
notament de la maniere suivante
Sinon pour windows je ne sais pas trop désolé :]Code:
1
2
3
4
5
6
7
8
9 #define couleur(param) printf("\033[%sm",param) main() { couleur("5");printf("Ce texte clignote");couleur("0"); }
Salut,
Si tu code ton application uniquement sous DOS, et qu'il n'est pas prévu de le porter sous console "ansi compliant", tu peux te tourner vers la bibliotheque conio, s'il est disponible sous ton EDI (cherche conio2 si tu utilises dev-cpp ou code::blocks)
Tu disposera alors de 255 couleurs (en fait, de 16 couleurs pour l'affichage et 16 pour le fond), dont les 8 dernières couleurs de fond seront clignotantes, mais, uniquement si ta ligne de commande n'est pas en "mode fenetré" (<ALT>+<ENTER> pour passer en mode fenetré<-->plein écran ;))
Mais, il faut bien etre conscient que ce n'est pas portable... sous linux, il y a moyen d'utiliser des séquence d'échapement ANSI, et, si la portabilité est importante, tu peux te tourner vers des bibliotheques telles que ncurses et dérivées ;)
merci, mais connais-tu la commande à utiliser avec le conio ?!
J'utilise en effet DevC++
de tete, textattr(0x00->0xFF), textbackground(0x0->0xF, ou 0x8->0xF clignotent) et textcolor(0x0->0xF)
En gros, les la couleur de textattr tient sur un octet, dont les quatre bits de poids fort représente le fond (toujours selon le meme principe ;)) et les quatre bits de poids faible représentent la couleur de l'écriture
Il n'est pas impossible qu'il faille avec l'une ou l'autre de ces instructions utiliser cprintf (meme synthaxe que printf) pour qu'effectivement la couleur soit prise en compte ;)
Pourquoi des valeurs bizarres ? Utiliser BLINK, c'est fait pour.Citation:
Envoyé par koala01
(TurboC / Borland C)
:!: Non vérifié, je n'ai plus de Borland C sous la mainCode:
1
2
3
4
5
6
7
8
9
10 #include <conio.h> int main (void) { textbackground (RED); textcolor (WHITE | BLINK); cprintf ("All hands, battle station !"); return 0; }
:arrow: Attention, pas de BLINK avec le CONIO de MinGW.
Marche pas avec DevC++ en effet, cepedant la compilation se fait sans problème :/
j'ai trouvé cette source:
mais qui n'a pas l'air de marcher chez moi, le compilateur ou l'IDE peut y être pour quelque chose ?!Code:
1
2
3
4
5
6
7
8
9
10
11 #include <conio.h> int main () { clrscr (); textbackground (GREEN); textcolor (RED); cprintf ("Coucou"); getch (); }
Avec Dev-C++ ou Code::Blocks :Citation:
Envoyé par GouKen
Code:#include <conio2.h>
BLINK, RED GREEN BLACK et consors ne sont, finalement, que des alias sur les valeurs correspondantes...
Et BLINK, en l'occurence, force tout simplement le bit de poids fort à 1, forcant de facto la fourchette de valeurs entre 128(0x80) et 255 (0xFF) ;)...
Voilà le pourquoi des valeurs fournises ;)
Gouken=> As tu percuté sur le fait que tu n'auras l'effet clignotant, sous XP, que si ta ligne de commande est en plein écran :question: (il faut utiliser la combinaison des touches <ALT>+<ENTER> pour basculer mode fenetré<-->mode plein écran)
oui j'ai essayé en plein écran et ça n'y fait rien :/ j'ai le texte affiché mais qui ne clignote pas :s
conio2.h ne semble pas être ds la lib :sCitation:
Avec Dev-C++ ou Code::Blocks :
Code:
1
2 #include <conio2.h>
C'est quoi ce charabia ?Citation:
Envoyé par GouKen
<conio2.h> est un header (fichier d'entête) livré avec CONIO, qui le portage partiel pour MinGW (Minimalist gcc for Windows) de la bibliothèque conio de Borland.
Celle-ci est disponible sous la forme d'un devPak que l'on peut télécharger et installer à partir de Dev-C++ et Code::Blocks (normal, ils utilisent le même compilateur par défaut, à savoir MinGW).
ok merci je vais essayer ça :)
J'ai installé le CONIO DevPack mais lorsque je compile j'ai une erreur :
D:/DEV/Dev-Cpp/Bin/../lib/gcc/mingw32/3.4.2/../../../../include/conio2.h:30: error: conflicting types for 'BLACK'
D:/DEV/Dev-Cpp/Bin/../lib/gcc/mingw32/3.4.2/../../../../include/conio.h:25: error: previous definition of 'BLACK' was here
D:/DEV/Dev-Cpp/Bin/../lib/gcc/mingw32/3.4.2/../../../../include/conio2.h:31: error: conflicting types for 'BLUE'
D:/DEV/Dev-Cpp/Bin/../lib/gcc/mingw32/3.4.2/../../../../include/conio.h:26: error: previous definition of 'BLUE' was here
D:/DEV/Dev-Cpp/Bin/../lib/gcc/mingw32/3.4.2/../../../../include/conio2.h:32: error: conflicting types for 'GREEN'
D:/DEV/Dev-Cpp/Bin/../lib/gcc/mingw32/3.4.2/../../../../include/conio.h:27: error: previous definition of 'GREEN' was here
D:/DEV/Dev-Cpp/Bin/../lib/gcc/mingw32/3.4.2/../../../../include/conio2.h:33: error: conflicting types for 'CYAN'
D:/DEV/Dev-Cpp/Bin/../lib/gcc/mingw32/3.4.2/../../../../include/conio.h:28: error: previous definition of 'CYAN' was here
D:/DEV/Dev-Cpp/Bin/../lib/gcc/mingw32/3.4.2/../../../../include/conio2.h:34: error: conflicting types for 'RED'
D:/DEV/Dev-Cpp/Bin/../lib/gcc/mingw32/3.4.2/../../../../include/conio.h:29: error: previous definition of 'RED' was here
D:/DEV/Dev-Cpp/Bin/../lib/gcc/mingw32/3.4.2/../../../../include/conio2.h:35: error: conflicting types for 'MAGENTA'
D:/DEV/Dev-Cpp/Bin/../lib/gcc/mingw32/3.4.2/../../../../include/conio.h:30: error: previous definition of 'MAGENTA' was here
D:/DEV/Dev-Cpp/Bin/../lib/gcc/mingw32/3.4.2/../../../../include/conio2.h:36: error: conflicting types for 'BROWN'
D:/DEV/Dev-Cpp/Bin/../lib/gcc/mingw32/3.4.2/../../../../include/conio.h:31: error: previous definition of 'BROWN' was here
D:/DEV/Dev-Cpp/Bin/../lib/gcc/mingw32/3.4.2/../../../../include/conio2.h:37: error: conflicting types for 'LIGHTGRAY'
D:/DEV/Dev-Cpp/Bin/../lib/gcc/mingw32/3.4.2/../../../../include/conio.h:32: error: previous definition of 'LIGHTGRAY' was here
D:/DEV/Dev-Cpp/Bin/../lib/gcc/mingw32/3.4.2/../../../../include/conio2.h:38: error: conflicting types for 'DARKGRAY'
D:/DEV/Dev-Cpp/Bin/../lib/gcc/mingw32/3.4.2/../../../../include/conio.h:33: error: previous definition of 'DARKGRAY' was here
D:/DEV/Dev-Cpp/Bin/../lib/gcc/mingw32/3.4.2/../../../../include/conio2.h:39: error: conflicting types for 'LIGHTBLUE'
D:/DEV/Dev-Cpp/Bin/../lib/gcc/mingw32/3.4.2/../../../../include/conio.h:34: error: previous definition of 'LIGHTBLUE' was here
D:/DEV/Dev-Cpp/Bin/../lib/gcc/mingw32/3.4.2/../../../../include/conio2.h:40: error: conflicting types for 'LIGHTGREEN'
D:/DEV/Dev-Cpp/Bin/../lib/gcc/mingw32/3.4.2/../../../../include/conio.h:35: error: previous definition of 'LIGHTGREEN' was here
D:/DEV/Dev-Cpp/Bin/../lib/gcc/mingw32/3.4.2/../../../../include/conio2.h:41: error: conflicting types for 'LIGHTCYAN'
D:/DEV/Dev-Cpp/Bin/../lib/gcc/mingw32/3.4.2/../../../../include/conio.h:36: error: previous definition of 'LIGHTCYAN' was here
D:/DEV/Dev-Cpp/Bin/../lib/gcc/mingw32/3.4.2/../../../../include/conio2.h:42: error: conflicting types for 'LIGHTRED'
D:/DEV/Dev-Cpp/Bin/../lib/gcc/mingw32/3.4.2/../../../../include/conio.h:37: error: previous definition of 'LIGHTRED' was here
D:/DEV/Dev-Cpp/Bin/../lib/gcc/mingw32/3.4.2/../../../../include/conio2.h:43: error: conflicting types for 'LIGHTMAGENTA'
D:/DEV/Dev-Cpp/Bin/../lib/gcc/mingw32/3.4.2/../../../../include/conio.h:38: error: previous definition of 'LIGHTMAGENTA' was here
D:/DEV/Dev-Cpp/Bin/../lib/gcc/mingw32/3.4.2/../../../../include/conio2.h:44: error: conflicting types for 'YELLOW'
D:/DEV/Dev-Cpp/Bin/../lib/gcc/mingw32/3.4.2/../../../../include/conio.h:39: error: previous definition of 'YELLOW' was here
D:/DEV/Dev-Cpp/Bin/../lib/gcc/mingw32/3.4.2/../../../../include/conio2.h:46: error: conflicting types for 'WHITE'
D:/DEV/Dev-Cpp/Bin/../lib/gcc/mingw32/3.4.2/../../../../include/conio.h:41: error: previous definition of 'WHITE' was here
D:/DEV/Dev-Cpp/Bin/../lib/gcc/mingw32/3.4.2/../../../../include/conio2.h:46: error: conflicting types for 'COLORS'
D:/DEV/Dev-Cpp/Bin/../lib/gcc/mingw32/3.4.2/../../../../include/conio.h:41: error: previous declaration of 'COLORS' was here
D:/DEV/Dev-Cpp/Bin/../lib/gcc/mingw32/3.4.2/../../../../include/conio2.h:176: error: conflicting types for '_conio_gettext'
D:/DEV/Dev-Cpp/Bin/../lib/gcc/mingw32/3.4.2/../../../../include/conio.h:56: error: previous declaration of '_conio_gettext' was here
D:/DEV/Dev-Cpp/Bin/../lib/gcc/mingw32/3.4.2/../../../../include/conio2.h:176: error: conflicting types for '_conio_gettext'
D:/DEV/Dev-Cpp/Bin/../lib/gcc/mingw32/3.4.2/../../../../include/conio.h:56: error: previous declaration of '_conio_gettext' was here
D:/DEV/Dev-Cpp/Bin/../lib/gcc/mingw32/3.4.2/../../../../include/conio2.h:189: error: conflicting types for 'puttext'
D:/DEV/Dev-Cpp/Bin/../lib/gcc/mingw32/3.4.2/../../../../include/conio.h:72: error: previous declaration of 'puttext' was here
D:/DEV/Dev-Cpp/Bin/../lib/gcc/mingw32/3.4.2/../../../../include/conio2.h:189: error: conflicting types for 'puttext'
D:/DEV/Dev-Cpp/Bin/../lib/gcc/mingw32/3.4.2/../../../../include/conio.h:72: error: previous declaration of 'puttext' was here
Exécution terminée
que dois-je faire ?
Il faut inclure uniquement <conio2.h> et pas <conio.h>. On est bien d'accord ?Citation:
Envoyé par GouKen
et pourquoi pas simplement jouer avec un printf("\r"); et sleep?
je pose la question betement, vut que personne en as parlé, je me dis que y'as ptetre un truc qui m'echappe ... me semble que ça marche sous dos. :aie:Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 #include <stdio.h> #include <stdlib.h> #include <unistd.h> int main () { int i; for (i = 0; i < 10; i++) { printf ("\rhello !"); fflush (stdout); sleep (1); printf ("\rWorld !"); fflush (stdout); sleep (1); } printf ("\n"); return EXIT_SUCCESS; }
ouais c'est ce que j'avais fait :/Citation:
Envoyé par Emmanuel Delahaye
sinon ton truc Dark_Ebola marche pas mal
Ben... l'avantage de conio c'est que c'est la carte graphique qui s'en occupe. Ça permet d'afficher d'autres textes pendant que le premier continue de clignoter sans avoir à rafraichir l'écran toutes les deux secondes...
Pour une fois que le matériel du pc peut faire quelque chose à ta place c'est mieux d'en profiter ...
bien oauis mais ça marche pas :(
sinon quelqu'un sait comment je peux faire pour que si l'utililsateur clique sur Entrée à tout moment, ça passe à la page suivante ? j'ai essayé ceci mais ça ne marche pas
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13 for(t = 0 ; t < 250000000 ; t++) { gotoxy(15,30); printf ("\rAppuyez sur Entree pour continuer !"); fflush (stdout); sleep (500); gotoxy(15,30); printf ("\r "); fflush (stdout); sleep (500); do { clavier = getch(); } while (clavier != 13); }
Pour du "à tout moment", on fait généralement une attente semi-active en boucle (une boucle avec des sleep(), quoi) avec un kbhit() dans la boucle pour savoir si oui ou non une touche a été pressée.
je n'ai jamais utilisé kbhit(), tu saurais m'aider à ce sujet ?
Moi non plus.
Mais de mémoire, ça dit si une touche, n'importe laquelle, a été pressée ou non.
Si c'est le cas, le prochain getch() ne sera pas bloquant.
Citation:
Envoyé par GouKen
Code:
1
2
3
4
5
6 if (kbhit()) { int c = getch(); /* ... */ }
tu pourrais me montrer un exemple stp ?!
ton code me dis pas grand chose comme ça
Lit la doc...Citation:
Envoyé par GouKen
http://conio.sourceforge.net/docs/conio.pdf
j'ai trouvé un code ressemblant au mien mais le mien ne marche pas :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 do { for(t = 0 ; t < 250000000 ; t++) { gotoxy(15,30); printf ("\rAppuyez sur Entree pour continuer !"); fflush (stdout); sleep (500); gotoxy(15,30); printf ("\r "); fflush (stdout); sleep (500); } } while (!kbhit());
Tu devrais enlever la boucle for... là il teste le clavier une fois toutes les 25000000 itérations
ah oui en effet, merci =)
par contre j'ai encore un autre problème... je place un _setcursortype(_NOCURSOR) devant et il veut pas me le compiler :/
:aie:Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 #include <stdio.h> #include <stdlib.h> #include <math.h> #include "conio.h" int main(int argc, char *argv[]) { /* ... */ _setcursortype(_NOCURSOR); textcolor(LIGHTRED); do { gotoxy(20,27); printf("Appuyez sur une touche pour continuer !"); fflush(stdout); sleep(500); gotoxy(20,27); printf(" "); fflush(stdout); sleep(500); } while (!kbhit());
c'est toujours <conio2.h> et pas "conio.h" qu'il faut inclure ...
ah oui :roll: , merci :mrgreen: mais j'ai encore la meme erreur quand je compile...
Code:
1
2
3
4 D:/DEV/Dev-Cpp/Bin/../lib/gcc/mingw32/3.4.2/../../../../include/conio2.h:30: error: conflicting types for 'BLACK' D:/DEV/Dev-Cpp/Bin/../lib/gcc/mingw32/3.4.2/../../../../include/conio.h:25: error: previous definition of 'BLACK' was here <...>
Il doit y a voir un conflit avec une autre version... Je te conseille de faire ceci :Citation:
Envoyé par GouKen
- Désinstaller le devpak CONIO
- Si ils sont toujours là :
- effacer <conio.h>
- effacer <conio2.h>
- effacer <conio.c>
- réinstaller le Devpak CONIO.
ouais j'ai essayé mais cette fois j'ai
bizarre, et lorsque je rajoute conio.h manuellement, je retombe sur mon erreur de compilation précédente :aie:Code:
1
2
3
4
5
6
7
8 In file included from main.c:5: D:/DEV/Dev-Cpp/Bin/../lib/gcc/mingw32/3.4.2/../../../../include/conio2.h:16:19: conio.h: No such file or directory main.c: In function `main': main.c:910: warning: comparison is always true due to limited range of data type make.exe: *** [main.o] Error 1 Exécution terminée
Mais le conio.h que tu rajoutes, il vient d'où ?Citation:
Envoyé par GouKen
Je te mets les headers qui fonctionnent chez moi (MinGW) en P.J.
c'est bon ça marche merci !! j'avais un conio foireux :aie: , par contre j'ai toujours le curseur :// vais jamais y arriver :s
C'est à dire ? J'ai pas suivi, là ... C'est quoi ce problème de curseur ?Citation:
Envoyé par GouKen
Ceci fonctionne : (EDIT)
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 #include <stdio.h> #include <conio2.h> #include <windows.h> int main (void) { _setcursortype (_NOCURSOR); textcolor (LIGHTRED); do { gotoxy (20, 27); cprintf ("Appuyez sur une touche pour continuer !"); Sleep (500); gotoxy (20, 27); clreol(); Sleep (500); } while (!kbhit ()); return 0; }
bien, il est toujours affiché dans ma fenêtre DOS...
Même avec le code ci-dessus ?Citation:
Envoyé par GouKen
oui..
Bizarre, chez moi, c'est OK (Windows XP, dernier devPak CONIO pour Code::Blocks, soit 2.0)Citation:
Envoyé par GouKen
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 Name: CONIO Version: 2.0 Size: 42.74 KB Date: 2005-06-04 23:16:58 Description: Borland-style CONIO implementation for MinGW. Rewritten version 2.0. Changes in 2.0 ============== * make library aware of console window size * make library aware of console window position in console buffer * added support for UNICODE Win32 API * added constream-like manipulators for C++ * implemented highvideo, insline, lowvideo, movetext, normvideo, gettextinfo, getpass, cputsxy, putchxy, inittextinfo * fixed delline