program backtotheworld;
uses crt,graph;
const
cube:array[1..12,1..2,1..3] of integer =
                                         (
                                         ((-10,-10,-10),(10,-10,-10)),
                                         ((-10,-10,-10),(-10,10,-10)),
                                         ((-10,10,-10),(10,10,-10)),
                                         ((10,-10,-10),(10,10,-10)),
                                         ((-10,-10,10),(10,-10,10)),
                                         ((-10,-10,10),(-10,10,10)),
                                         ((-10,10,10),(10,10,10)),
                                         ((10,-10,10),(10,10,10)),
                                         ((-10,-10,10),(-10,-10,-10)),
                                         ((-10,10,10),(-10,10,-10)),
                                         ((10,10,10),(10,10,-10)),
                                         ((10,-10,10),(10,-10,-10))
                                         );
var
gm,gd,i,i1,r,b:integer;
fov:integer;
cube1:array[1..12,1..2,1..2] of integer;
begin
gd:=detect;initgraph(gd,gm,'c:\bp\bgi');
fov:=10;
repeat

for r:=1 to 2 do begin
 for b:=1 to 12 do begin
  cube1[b,r,1]:=cube[b,r,1]*fov div cube[b,r,3]+320;
  cube1[b,r,2]:=cube[b,r,2]*fov div cube[b,r,3]+240;
 end;
end;

setcolor(0);
bar(0,0,640,480);

setcolor(1);
for r:=1 to 2 do begin
 for b:=1 to 11 do begin
  line(cube1[b,r,1],cube1[b,r,2],cube1[b,r+1,1],cube1[b,r+1,2]);
 end;
end;

for r:=1 to 2 do begin
 for b:=1 to 12 do begin
  putpixel(cube1[b,r,1],cube1[b,r,2],red);
 end;
end;

fov:=fov+1;

delay(20000);
until keypressed;
end.