100 lines
2.2 KiB
Plaintext
100 lines
2.2 KiB
Plaintext
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.
|
|
|