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.