Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

CCRT


Information sur la source

Catégorie :Graphique Classé sous : crt, unix, vt100, pascal, conio Niveau : Débutant Date de création : 11/09/2006 Date de mise à jour : 18/10/2006 23:07:28 Vu / téléchargé: 4 295 / 110

Note :
Aucune note

Commentaire sur cette source (2)
Ajouter un commentaire et/ou une note

Description

Cliquez pour voir la capture en taille normale
J'ai débuté la programmation en Pascal...
L'unité graphique crt m'a permis de développer plein d'application console interactive...

Ccrt fait la même chose pour C Unix :-)

elle peut simplifier plusieurs chose (readkey, delay...)
 

Source

  • #include <stdio.h>
  • #include <termios.h>
  • #include <unistd.h>
  • #include <stdlib.h>
  • #include <time.h>
  • typedef enum
  • {
  • BLACK,
  • RED,
  • GREEN,
  • YELLOW,
  • BLUE,
  • MAGENTA,
  • CYAN,
  • WHITE
  • } COLORS;
  • void mode_raw(int activer) {
  • static struct termios cooked;
  • static int raw_actif = 0;
  • if (raw_actif == activer) {return;}
  • if (activer) {
  • struct termios raw;
  • tcgetattr(STDIN_FILENO, &cooked);
  • raw = cooked;
  • cfmakeraw(&raw);
  • tcsetattr(STDIN_FILENO, TCSANOW, &raw);
  • }
  • else {tcsetattr(STDIN_FILENO, TCSANOW, &cooked);}
  • raw_actif = activer;
  • }
  • void ClrScr(void) {printf("\e[2J");}
  • void GotoXY(int y, int x) {printf("\e[%d;%dH", x, y);}
  • void Delay(int pause) {usleep(pause*1000);}
  • void Blink(int activer) {(activer)? printf("\e[5m") : printf("\e[0m");}
  • void Blod(int activer) {(activer)? printf("\e[1m") : printf("\e[0m");}
  • void Underline(int activer) {(activer)? printf("\e[4m") : printf("\e[0m");}
  • void TextColor(int fg)
  • {
  • int x=fg;
  • if((fg < 0) || (fg > 7)) x = 0;
  • printf("\e[3%dm", x);
  • }
  • void TextBackground(int bg)
  • {
  • int x=bg;
  • if((bg < 0) || (bg > 7)) x = 0;
  • printf("\e[4%dm", x);
  • }
  • char ReadKey(void)
  • {
  • char c;
  • mode_raw(1);
  • c = getchar();
  • mode_raw(0);
  • return c;
  • }
  • int KeyPressed(void)
  • {
  • struct timeval tv = { 0, 0 };
  • fd_set readfds;
  • FD_ZERO(&readfds);
  • FD_SET(STDIN_FILENO, &readfds);
  • return select(STDIN_FILENO + 1, &readfds, NULL, NULL, &tv) == 1;
  • }
  • void GetPass(char * prompt, char * pass)
  • {
  • int cpt=0;
  • printf("%s", prompt);
  • while((pass[cpt]=ReadKey())!=13 && cpt!=100)
  • {
  • putchar('*');
  • cpt++;
  • }
  • printf("\n");
  • pass[cpt]=0;
  • }
  • void line(int x, char c1, char c2)
  • {
  • int cpt;
  • putchar(c1);
  • for(cpt=1; cpt<=(x-2); cpt++) putchar(c2);
  • putchar(c1);
  • putchar('\n');
  • }
  • void box(int x, int y, char c1, char c2, char c3, char c4)
  • {
  • int cpt;
  • line(x, c1, c2);
  • for(cpt=1; cpt<=(y-2); cpt++) line(x, c3, c4);
  • line(x, c1, c2);
  • }
#include <stdio.h>
#include <termios.h>
#include <unistd.h>
#include <stdlib.h>
#include <time.h>

typedef enum
{
  BLACK,
  RED,
  GREEN,
  YELLOW,
  BLUE,
  MAGENTA,
  CYAN,
  WHITE
} COLORS;

void mode_raw(int activer) {
  static struct termios cooked;
  static int raw_actif = 0;
  if (raw_actif == activer) {return;}
  if (activer) {
    struct termios raw;
    tcgetattr(STDIN_FILENO, &cooked);
    raw = cooked;
    cfmakeraw(&raw);
    tcsetattr(STDIN_FILENO, TCSANOW, &raw);
  }
  else {tcsetattr(STDIN_FILENO, TCSANOW, &cooked);}
  raw_actif = activer;
}

void ClrScr(void) {printf("\e[2J");}

void GotoXY(int y, int x) {printf("\e[%d;%dH", x, y);}

void Delay(int pause) {usleep(pause*1000);}

void Blink(int activer) {(activer)? printf("\e[5m") : printf("\e[0m");}

void Blod(int activer) {(activer)? printf("\e[1m") : printf("\e[0m");}

void Underline(int activer) {(activer)? printf("\e[4m") : printf("\e[0m");}

void TextColor(int fg)
{
  int x=fg;
  if((fg < 0) || (fg > 7)) x = 0;
  printf("\e[3%dm", x);
}

void TextBackground(int bg)
{
  int x=bg;
  if((bg < 0) || (bg > 7)) x = 0;
  printf("\e[4%dm", x);
}

char ReadKey(void)
{
  char c;
  mode_raw(1);
  c = getchar();
  mode_raw(0);
  return c;
}

int KeyPressed(void)
{
  struct timeval tv = { 0, 0 };
  fd_set readfds;
  
  FD_ZERO(&readfds);
  FD_SET(STDIN_FILENO, &readfds);
  
  return select(STDIN_FILENO + 1, &readfds, NULL, NULL, &tv) == 1;
}

void GetPass(char * prompt, char * pass)
{
  int cpt=0;
  printf("%s", prompt);
  while((pass[cpt]=ReadKey())!=13 && cpt!=100) 
    {
      putchar('*'); 
      cpt++; 
    }
  printf("\n");
  pass[cpt]=0;
}

void line(int x, char c1, char c2)
{
  int cpt;
  putchar(c1);
  for(cpt=1; cpt<=(x-2); cpt++) putchar(c2);
  putchar(c1);
  putchar('\n');
}

void box(int x, int y, char c1, char c2, char c3, char c4)
{
  int cpt;
  line(x, c1, c2);
  for(cpt=1; cpt<=(y-2); cpt++) line(x, c3, c4);
  line(x, c1, c2);
}

Conclusion

c = readkey(); /*pas attente de retour chariot*/

KeyPressed(); /*verifie la présence d'une touche pressée dans le buffer*/

TextColor (0..7) ou TextColor(Blue....

idem TextBackground

Clrscr(); /*efface l'écran*/

delay <=> pause
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

08 octobre 2006 18:04:43 :
ajout de la fonction "KeyPressed" équivalente a kbhit();
18 octobre 2006 23:07:28 :
ajout des fonctions usuelles >> Box, Line +++ évolution des connaissances >> typedef, enum +++ sécurité >> Getpass

Commentaires et avis

signaler à un administrateur
Commentaire de blackdead08 le 11/09/2006 00:11:00

D'accord ce n'est pas ncurses ni gtk.....
C'est quand même plus facile
;-)

supprimez si cela n'intéresse personne  

signaler à un administrateur
Commentaire de Funto66 le 03/08/2008 02:44:29

Ah non, moi ça m'intéresse, je suis en train d'écrire un système de log pour mon moteur 3D, et pouvoir rajouter de la couleur, ça va bien être utile, merci :)

Vais essayer de trouver de la doc sur les codes d'échappement des terminaux vt100 moi...A tout hasard, tu saurais pas comment faire pour récupérer la couleur actuelle du terminal ?

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

conio.h sous unix [ par tavernier ] Je cherche a savoir s'il existe un equivalent de conio.h sous unix, linux, mac, ou bsd.Qq1 aurait il assez de temps pour me décrire les fonctions de u Unix [ par cybermarcel ] bonjours tout le monde je voulait juste savoir si quelqu'un avait des information sur la programmation d'une plateforme unixje voudrai savoir si ca se librairie SDL et coonio.h [ par gloom ] salut peuple svp qq1 opurrait t'il m'aider voila je cherche a afficher une photo sous console DOS pour cela je sait qu'il ¸faute une librairie SDL mai lecture/écriture des fichier .ini sous UNIX/Windows [ par MELISA ] Bonjour à tous,C'est mon premier message sur ce forum, alors je vais essayer d'être clair.J'aimerais savoir s'il existe ou si quelqu'un a déjà impléme developpement ftp [UNIX] [ par twolf ] Bonjour a tous tout d'abord je suis a la recherche de source en C ou d'info (en francais si possible) qui permette de créer ce source sous UNIX le but lister le contenu d'un repertoire (UNIX et WINDOWS) [ par ox2 ] Salut a tous !Je souhaite lister le contenu d'un repertoire en multiplateforme, pour en extraire la liste des repertoires presents.Sous windows, c'es morpion en turbo pascal [ par norvegien ] SalutJ'aurai besoin d'un coup de main pour faire un morpion 5x5 en turbo pascal. C pour un projet info à faire avant la fin de l'annee et com j'ai jam acces a une bdd en c++ a partir d'unix [ par nezar ] salut tous le monde, je suis un debutant en c++, et je bosse sur un projet C++, je suis sur une station SOLARIS, avec un compilateur SUN.en ce moment socket AF_UNIX [ par hobbes ] Bonjour,Je cherche les sources de l'utilisation des sockets avec AF_UNIX.QQ peut il m aider???Bonne programmation. encodage base64 sous unix [ par goth ] je voudrais savoir si vous avez une fonction d'encodage base64 (pour encodage MIME) sous unix qui soit simple à utiliserMerci


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 1,139 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.