home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC Interdit
/
pc-interdit.iso
/
graph
/
scrl_spt.pas
< prev
next >
Wrap
Pascal/Delphi Source File
|
1994-10-07
|
2KB
|
41 lines
uses crt,Gif,ModeXLib;
Var x, {offset courant dans la direction horizontale }
x_dir, {direction de défilement dans le sens horizontal }
y, {offset courant dans la direction verticale }
y_dir:word; {direction de défilement dans le sens vertical }
split_line:word; {position courante de la ligne de fractionnement }
split_dir:word; {direction de déplacement de la ligne de fractionnement }
Begin
Init_ModeX; {active le mode X }
double; {sélectionne le mode 160 octets }
Screen_Off; {éteint l'écran }
LoadGif_Pos('640400',160*50); {charge une grande image en position (0, 50) }
p13_2_ModeX(vram_pos,rest div 4); {copie le reste en mémoire VGA }
LoadGif('boule'); {charge une petite image en position (0,0) }
p13_2_ModeX(0,160*50); {et la copie sur l'écran }
Screen_On; {réactive l'écran }
split_line:=150; {met la séparation en ligne 150 }
split_dir:=1; {déplace d'abord la ligne de fractionnement vers le bas }
x:=1; {x commence en colonne 1}
x_dir:=1; {direction horizontale = 1 octet par itération }
y:=160; {y commence en ligne 1}
y_dir:=160; {direction verticale = 160 octets par itération }
Repeat
Inc(x,x_dir); {défilement horizontal }
Inc(y,y_dir); {défilement vertical }
Inc(Split_line,Split_dir); {déplace la ligne de fractionnement }
WaitRetrace; {attend le retour de balayage }
SetStart(50*160+y+x);{écrit le nouveau début d'écran dans le registre }
{en sautant les 50 premières lignes }
Split(Split_line); {fractionne l'écran }
if (x >= 80) {bord vertical atteint -> changer de direction }
or (x <= 1) Then x_dir:=-x_dir;
if (y >= 200*160) {bord horizontal atteint -> changer de direction }
or (y <= 160) Then y_dir:=-y_dir;
if (split_line >= 200) {ligne de fractionnement touche le bord -> changer de direction }
or (split_line <= 150) then split_dir:=-split_dir
Until KeyPressed; {tourne jusqu'à ce qu'on frappe une touche }
TextMode(3);
End.