home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Freelog 8
/
Freelog008.iso
/
Prog
/
SCROLLH.C
< prev
next >
Wrap
C/C++ Source or Header
|
2000-02-06
|
2KB
|
56 lines
#include <conio.h>
#include "vga.h"
#define LG 24
#define HT 25
extern int CTx[256],CTy[256]; //Abscisses et ordonnees precalculees
extern unsigned char far *Video; //Pointeur qui pointe sur la memoire video
void DetCoordLettre(int car);
void CreatTabLettre(void);
unsigned char far Page2[64000]; //Buffer qui va conserver le contenu du fichier font.pcx
unsigned char far Page1[64000]; //Buffer temporaire
unsigned char far Pal[768]; //Buffer qui va conserver la palette de couleur utilisee
unsigned char far Texte[]="CECI EST UN SCROLLING TEXTE HORIZONTAL ";
void main(void)
{
int car; //Caractere affiche
int x=0; //Colonne du graphique en cours de traitement
int num=0, //Numero du caractere en cours de traitement dans Texte
lg=0; //Longueur du texte
InitVGA(); //Initialisation du mode VGA
LoadPCX("font",Page2,Pal); //Chargement du fichier font.pcx
SetAllPal(Pal); //Mise en place de la palette de couleur presente dans le fichier font.pcx
CreatTabLettre(); // Remplissage des tableaux CTx et CTy
while(Texte[lg++]); //Determination du nombre de caractere dans Texte
lg--;
while(!kbhit()) //Le programme s'arrete si on appuie sur une touche
{
car=Texte[num];
CpyBlk2(2,95,318,HT,0,95,Page1,Page1); //Scrolling de 2 colonnes
CpyBlk2(CTx[car]+x,CTy[car],2,HT,318,95,Page2,Page1); //On affiche les 2 colonnes suivantes du graphique
VBL; //Cette fonction permet de ralentir ce programme et d'eviter l'affichage de scintillement sur l'ecran
CpyBnd(95,HT,95,Page1,Video);
if((x+=2)>=LG) //On verifie si on a traite toutes les colonnes du graphique
{
x=0; //On va traiter la premiere colonne du graphique
num++; //On s'occupe du caractere suivant
}
if (num>=lg) num=0;
}
InitTexte(); //On initialise le mode texte
}