home *** CD-ROM | disk | FTP | other *** search
/ Freelog 8 / Freelog008.iso / Prog / SCROLLV.C < prev    next >
C/C++ Source or Header  |  2000-02-06  |  2KB  |  64 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 VERTICAL             ";
  18.  
  19. void main(void)
  20. {
  21.   int x=0;     //Ligne des 11 symboles en cours de traitement
  22.   int num=0, //Numero du paquet de 11 caracteres en cours de traitement dans Texte
  23.        lg=0;    //Longueur du texte
  24.   int j;
  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.   //Il faut faire en sorte que lg soit un multiple de 11 pour pouvoir
  36.   //afficher correctement les derniers symboles
  37.   for(j=0;j<11-lg%11;j++) Texte[lg+j]=' ';
  38.   lg=((lg/11)+1)*11;
  39.  
  40.   while(!kbhit()) //Le programme s'arrete si on appuie sur une touche
  41.   {
  42.  
  43.         CpyBlk2(17,2,284,198,17,0,Page1,Page1); //Scrolling de 2 lignes
  44.  
  45.     for(j=0;j<11;j++)
  46.         CpyBlk2(CTx[Texte[num+j]],CTy[Texte[num+j]]+x,LG,2,17+LG*j,198,Page2,Page1); //On affiche les 2 lignes suivantes des 11 symboles en cours de traitement
  47.  
  48.  
  49.         VBL; //Cette fonction permet de ralentir ce programme et d'eviter l'affichage de scintillements a l'ecran
  50.  
  51.     CpyBnd(0,200,0,Page1,Video);
  52.  
  53.         if((x+=2)>=HT) //On verifie si on a traite toutes les lignes des 11 symboles
  54.     {
  55.           x=0;     //On va traiter la premiere ligne des 11 symboles
  56.           num+=11; //On s'occupe des 11 symboles suivants
  57.     }
  58.  
  59.   if (num>=((lg/11))*11) num=0;
  60.   }
  61.  
  62.   InitTexte(); //On initialise le mode texte
  63. }
  64.