program vtest1;

uses vgfx256;

var
   gfxset : array[0..16383] of byte;
     vscr : array[0..24,0..39] of byte;

procedure LoadGfx(fname:string);
var
   f : file;
begin
  assign(f,fname);
  reset(f,1);
  blockread(f,gfxset,16384);
  close(f);
end;


procedure floor(x,y,w:integer);
var i : integer;
begin
 for i:=0 to w-1 do vscr[y,x+i]:=2;
end;

procedure ladder(x,y,h:integer);
var i : integer;
begin
 for i:=0 to h-1 do
  begin
   vscr[y+i,x]:=6;
   vscr[y+i,x+1]:=7;
  end;
end;


var
  i,j : integer;
  x,y : integer;

begin
 graph320x200;
 InitVirtualScreen;       { init the virtual screen        }

 LoadGfx('mychar.dat');   { load the bitmaps for the chars }

 fillchar(vscr,1000,0);   { clear the charscreen (spaces)  }

 { draw out game map }
 for i:=0 to 39 do
  begin
   vscr[0,i]:=1;
   vscr[24,i]:=1;
  end;

 for i:=1 to 23 do
  begin
   vscr[i,0]:=1;
   vscr[i,39]:=1;
  end;

 floor(2,5,8); floor(2,9,25); floor(5,14,25); floor(12,19,15);

 for i:=0 to 24 do
  for j:=0 to 39 do
   begin
    if (vscr[i,j]=2) and (random(100)>90) then vscr[i-1,j]:=3;
    if (vscr[i,j]=2) and (random(100)>80) then vscr[i-1,j]:=5;
   end;

 ladder(5,4,5); ladder(20,8,11); ladder(15,18,6);

 { show the characters on the virtual screen }
 VirtualcharScreen(ofs(vscr),ofs(gfxset));

 { show the rendered screen }
 ShowVirtualScreen;

 readln;
 { free the allocated buffer } 
 DoneVirtualScreen;
 text80x25;
end.

