home *** CD-ROM | disk | FTP | other *** search
/ Freelog 8 / Freelog008.iso / Prog / SCROLLH.C < prev    next >
C/C++ Source or Header  |  2000-02-06  |  2KB  |  56 lines

  1. #include <conio.h>
  2. #include "vga.h"
  3.  
  4. #define LG 24
  5. #define HT 25
  6.  
  7. extern int CTx[256],CTy[256]; //Abscisses et ordonnees precalculees
  8. extern unsigned char far *Video; //Pointeur qui pointe sur la memoire video
  9.  
  10. void DetCoordLettre(int car);
  11. void CreatTabLettre(void);
  12.  
  13. unsigned char far Page2[64000]; //Buffer qui va conserver le contenu du fichier font.pcx
  14. unsigned char far Page1[64000]; //Buffer temporaire
  15. unsigned char far Pal[768]; //Buffer qui va conserver la palette de couleur utilisee
  16.  
  17. unsigned char far Texte[]="CECI EST UN SCROLLING TEXTE HORIZONTAL             ";
  18.  
  19. void main(void)
  20. {
  21.   int car;     //Caractere affiche
  22.   int x=0;     //Colonne du graphique en cours de traitement
  23.   int num=0, //Numero du caractere en cours de traitement dans Texte
  24.        lg=0;    //Longueur du texte
  25.  
  26.   InitVGA(); //Initialisation du mode VGA
  27.   LoadPCX("font",Page2,Pal); //Chargement du fichier font.pcx
  28.   SetAllPal(Pal); //Mise en place de la palette de couleur presente dans le fichier font.pcx
  29.  
  30.   CreatTabLettre();     // Remplissage des tableaux CTx et CTy
  31.  
  32.   while(Texte[lg++]); //Determination du nombre de caractere dans Texte
  33.   lg--;
  34.  
  35.   while(!kbhit()) //Le programme s'arrete si on appuie sur une touche
  36.   {
  37.     car=Texte[num];
  38.     CpyBlk2(2,95,318,HT,0,95,Page1,Page1); //Scrolling de 2 colonnes
  39.     CpyBlk2(CTx[car]+x,CTy[car],2,HT,318,95,Page2,Page1); //On affiche les 2 colonnes suivantes du graphique
  40.  
  41.     VBL; //Cette fonction permet de ralentir ce programme et d'eviter l'affichage de scintillement sur l'ecran
  42.  
  43.     CpyBnd(95,HT,95,Page1,Video);
  44.  
  45.     if((x+=2)>=LG) //On verifie si on a traite toutes les colonnes du graphique
  46.     {
  47.           x=0;     //On va traiter la premiere colonne du graphique
  48.       num++; //On s'occupe du caractere suivant
  49.     }
  50.  
  51.   if (num>=lg) num=0;
  52.   }
  53.  
  54.   InitTexte(); //On initialise le mode texte
  55. }
  56.