Files

100 lines
2.2 KiB
ObjectPascal

uses jinput, grafix, crt, tipos;
var
item : byte;
num_fase : string;
{##############################################################}
procedure CarregaMapa;
var fich : file of byte;
i,j : word;
buffer : byte;
begin
Assign(fich,'03.map');
Reset(fich);
for i:=0 to 39 do
for j:=0 to 24 do
begin
Read(fich, buffer);
mapa[i,j].tipo := buffer;
for k:=0 to num_items-1 do
if llista_items[k] = mapa[i,j].tipo then
mapa[i,j].color := color_items[k];
end;
Close(fich);
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;
mem[pant1:((GetmouseX) div 8)+(((GetmouseY) div 8)*80)]:=88;
mem[pant1:((GetmouseX) div 8)+(((GetmouseY) div 8)*80)+1]:=7;
espera_VGA;
move(mem[pant1:0], mem[$B800:0], 2000);
GotoXY(1,1);
Write('X: ',(GetmouseX) div 16:2, ' Y: ', (GetmouseY) div 8:2, ' ITEM: ', chr(llista_items[item]));
end;
{##############################################################}
procedure SalvaMapa(numero : string);
var nom : string;
fich : file of byte;
begin
nom := numero+'.map';
Assign(fich, nom);
Rewrite(fich);
for i:=0 to 39 do
for j:=0 to 24 do
Write(fich, mapa[i,j].tipo);
Close(fich);
end;
{##############################################################}
begin
setmode(1);
SetMousePos(320,100);
SetMouseZone(0,16,640-16,200-8);
SetMouseSensitivity(10,10);
SetMouseInterruptRate(0);
SetUpVirtual(ptrpant1, pant1);
item := 1;
for i:=0 to 39 do
for j:=0 to 24 do
mapa[i,j].tipo:=buit;
{CarregaMapa;}
repeat
PintaPantalla;
if (estatboto(MBLeft)<>0) then
begin
mapa[(GetmouseX) div 16, (GetmouseY) div 8].tipo := llista_items[item];
mapa[(GetmouseX) div 16, (GetmouseY) div 8].color := color_items[item];
end;
if (estatboto(MBRight)<>0) then
begin
item := (item+1) mod num_items;
repeat until (estatboto(MBRight)=0);
end;
until keypressed;
gotoXY(10,10);
write('NUMERO DE FASE? ');
read(num_fase);
SalvaMapa(num_fase);
TancarVirtual(ptrpant1);
setmode(3);
end.