afegit intèrpret ascii, doc d'API i fonts Pascal originals
This commit is contained in:
@@ -0,0 +1,150 @@
|
||||
unit utext;
|
||||
|
||||
interface
|
||||
uses grafix;
|
||||
|
||||
procedure PutSprite(posX, posY, color, lletra : word);
|
||||
{ Funci¢: Coloca un caracter en pantalla }
|
||||
procedure PutString(posX, posY, color : word; frase : string);
|
||||
{ Funci¢: Coloca una frase en pantalla }
|
||||
procedure PutStringCENTERED(posY, color : word; frase : string);
|
||||
{ Funci¢: Coloca una frase en pantalla i centrada horitzontalment }
|
||||
procedure PutStringWINDOWED(posY, color : word; frase : string);
|
||||
{ Funci¢: Coloca una frase dins d'una finestra centrada }
|
||||
procedure cls(pant : word);
|
||||
{ Funci¢: Borra la pantalla }
|
||||
procedure PintaPantalla;
|
||||
{ Funci¢: Pinta la pantalla }
|
||||
procedure SetupVirtualText(var screen:ptr_pantalla;var virtual_addr:word);
|
||||
{ Funci¢: Crea una pantalla virtual de text (2K) }
|
||||
procedure TancarVirtualText(var screen:ptr_pantalla);
|
||||
{ Funci¢: Tanca la pantalla virtual de text (2k) }
|
||||
procedure HideCursor;
|
||||
procedure ShowCursor;
|
||||
implementation
|
||||
uses crt, tipos;
|
||||
|
||||
{##############################################################}
|
||||
procedure SetupVirtualText(var screen:ptr_pantalla;var virtual_addr:word);
|
||||
begin
|
||||
getmem(screen,2000);
|
||||
virtual_addr:=seg(screen^);
|
||||
end;
|
||||
{##############################################################}
|
||||
procedure TancarVirtualText(var screen:ptr_pantalla);
|
||||
begin
|
||||
freemem(screen,2000);
|
||||
end;
|
||||
{##############################################################}
|
||||
procedure PutSprite(posX, posY, color, lletra : word);
|
||||
var i : word;
|
||||
begin
|
||||
mem[$B800:((posX) shl 1)+(posY*80)]:=lletra;
|
||||
mem[$B800:((posX) shl 1)+1+(posY*80)]:=color;
|
||||
end;
|
||||
{##############################################################}
|
||||
procedure PutString(posX, posY, color : word; frase : string);
|
||||
var i : word;
|
||||
begin
|
||||
for i:=0 to LENGTH(frase)-1 do
|
||||
begin
|
||||
mem[$B800:((i+posX) shl 1)+(posY*80)]:=ord(frase[i+1]);
|
||||
mem[$B800:((i+posX) shl 1)+1+(posY*80)]:=color;
|
||||
end;
|
||||
end;
|
||||
{##############################################################}
|
||||
procedure PutStringCENTERED(posY, color : word; frase : string);
|
||||
var i : word;
|
||||
ini : word;
|
||||
begin
|
||||
ini := (40 - LENGTH(frase)) div 2;
|
||||
for i:=0 to LENGTH(frase)-1 do
|
||||
begin
|
||||
mem[$B800:((i+ini) shl 1)+(posY*80)]:=ord(frase[i+1]);
|
||||
mem[$B800:((i+ini) shl 1)+1+(posY*80)]:=color;
|
||||
end;
|
||||
end;
|
||||
{##############################################################}
|
||||
procedure PutStringWINDOWED(posY, color : word; frase : string);
|
||||
var i : word;
|
||||
ini : word;
|
||||
ample : word;
|
||||
begin
|
||||
ini := (40 - LENGTH(frase)) div 2;
|
||||
ample := LENGTH(frase) + 4;
|
||||
for i:=0 to LENGTH(frase)-1 do
|
||||
begin
|
||||
mem[$B800:((i+ini) shl 1)+(posY*80)]:=ord(frase[i+1]);
|
||||
mem[$B800:((i+ini) shl 1)+1+(posY*80)]:=color;
|
||||
end;
|
||||
|
||||
for i:=0 to LENGTH(frase)+3 do
|
||||
begin
|
||||
mem[$B800:((i+ini-2) shl 1)+((posY-1)*80)]:=196;
|
||||
mem[$B800:((i+ini-2) shl 1)+1+((posY-1)*80)]:=color;
|
||||
|
||||
mem[$B800:((i+ini-2) shl 1)+((posY+1)*80)]:=196;
|
||||
mem[$B800:((i+ini-2) shl 1)+1+((posY+1)*80)]:=color;
|
||||
end;
|
||||
end;
|
||||
{##############################################################}
|
||||
procedure cls(pant : word);
|
||||
var i : word;
|
||||
begin
|
||||
for i:=0 to 1999 do mem[pant:i]:=0;
|
||||
end;
|
||||
{##############################################################}
|
||||
procedure PintaPantalla;
|
||||
var i,j : word;
|
||||
begin
|
||||
for i:=0 to 39 do
|
||||
for j:=0 to 24 do
|
||||
begin
|
||||
mem[pant1:(i shl 1)+(j*80)]:=mapa[i,j].tipo;
|
||||
mem[pant1:(i shl 1)+1+(j*80)]:=mapa[i,j].color;
|
||||
end;
|
||||
|
||||
{ pepe }
|
||||
mem[pant1:((pepe.posX) shl 1)+(pepe.posY*80)]:=pepe.dibuix;
|
||||
mem[pant1:((pepe.posX) shl 1)+(pepe.posY*80)+1]:=pepe.color;
|
||||
|
||||
{ malos }
|
||||
mem[pant1:((malo[0].posX) shl 1)+(malo[0].posY*80)]:=malo[0].dibuix;
|
||||
mem[pant1:((malo[0].posX) shl 1)+(malo[0].posY*80)+1]:=malo[0].color;
|
||||
|
||||
mem[pant1:((malo[1].posX) shl 1)+(malo[1].posY*80)]:=malo[1].dibuix;
|
||||
mem[pant1:((malo[1].posX) shl 1)+(malo[1].posY*80)+1]:=malo[1].color;
|
||||
|
||||
mem[pant1:((malo[2].posX) shl 1)+(malo[2].posY*80)]:=malo[2].dibuix;
|
||||
mem[pant1:((malo[2].posX) shl 1)+(malo[2].posY*80)+1]:=malo[2].color;
|
||||
|
||||
|
||||
|
||||
|
||||
espera_VGA;espera_VGA;espera_VGA;espera_VGA;
|
||||
move(mem[pant1:0], mem[$B800:0], 2000);
|
||||
|
||||
GotoXY(1,1); TextBackGround(Blue); TextColor(LightGray);
|
||||
Write('LEVEL ', level:2, ' SCORE ', score:3, ' LIVES ', pepe.vides:1);
|
||||
GotoXY(14,2);
|
||||
Write('HI-SCORE ', hi_score:3, ' ', nom_hi_score);
|
||||
|
||||
inc(clock);
|
||||
end;
|
||||
{##############################################################}
|
||||
procedure HideCursor;assembler;
|
||||
asm
|
||||
mov ax,0100h
|
||||
mov cx,0100h
|
||||
int 10h
|
||||
end;
|
||||
{##############################################################}
|
||||
procedure ShowCursor;assembler;
|
||||
asm
|
||||
mov ax,0100h
|
||||
mov cx,0607h
|
||||
int 10h
|
||||
end;
|
||||
{##############################################################}
|
||||
begin
|
||||
end.
|
||||
Reference in New Issue
Block a user