Uses CRT,Graph; Const sShar=50; sPlo=200; KP = 30; {плотность препядствий} type shar = record x:word; y:word; end; plo = record x:word; y:word; end; Var grDriver : Integer; grMode : Integer; prep: array[1..kp] of plo; preptemp:plo; i:byte; s:shar; is,ip:byte; nk:byte; kv:byte; {- 400 } Begin grDriver:=Detect; InitGraph(grDriver, grMode, ''); randomize; for i:=1 to kp do prep[i].y:=480; prep[1].x:=400; prep[1].y:=random(400); s.x:=300; {koordinati na4ala padenia sharika} s.y:=5; repeat setcolor(12); circle(s.x,s.y,12); {рисуем линии} setcolor(9); for i:=1 to kp do If (prep[i].x<>0) and (prep[i].y<>480) then line(prep[i].x,prep[i].y,prep[i].x+100,prep[i].y); inc(is); inc(ip); {опуск ем ш р} If is=Sshar then begin setcolor(0); circle(s.x,s.y,12); inc(s.y); is:=0 end; {подним ем площ дки} If ip=sPlo then begin setcolor(0); {cvet prodoljenia plactinok} for i:=1 to kp do If (prep[i].x<>0) and (prep[i].y<>480) then line(prep[i].x,prep[i].y+20,prep[i].x+100,prep[i].y+20); { setcolor(12);} for i:=1 to kp do If (prep[i].y)<>480 then dec(prep[i].y); {setcolor(9);} for i:=1 to kp do If (prep[i].x<>0) and (prep[i].y<>0) then line(prep[i].x,prep[i].y,prep[i].x+100,prep[i].y); end; If random(2)=1 then for i:=1 to kp do If prep[i].y=480 then If random(65000)=455 then begin prep[i].x:=random(400); prep[i].y:=479 end; for i:=1 to KP do If prep[i].y=0 then prep[i].y:=480; If keypressed then begin setcolor(0); circle(s.x,s.y,12); nk:=ord(readkey); If nk=75 then dec(s.x); If nk=77 then inc(s.x); If (nk=27) then kv:=1; end; If getpixel(s.x,(s.y+10))=9 then begin setcolor(0); circle(s.x,s.y,12); If ip=splo-1 then dec(s.y,2) else dec(s.y); setcolor(12); circle(s.x,s.y,12); If is>2 then dec(is) end; until (s.y=0) or (s.y=480) or (kv=1); closegraph; {If (s.y=0) or (s.y=480) then writeln('Вы проигр ли'); If (s.y<>0) and (s.y<>480) then writeln('Вы вышли из игры'); writeln('н жмите любую кл вишу ...'); while not keypressed do;readkey;} ClrScr; Halt; end.