Управляемый парашютист

uses graph,crt;
procedure Fig(x,y,c1,c2,c3:integer);
begin
{тонкая линия}
setlinestyle(0,0,1);
{рисуем основной купол}
setcolor(c1);
line(x,y,x,y-29);
line(x,y,x+110,y);
line(x+110,y,x+110,y-29);
arc(x+55,y+135,71,108,174);
setfillstyle(1,c1);
floodfill(x+10,y-15,c1);
{рисуем нижние дуги}
setcolor(c2);
setfillstyle(1,c2);
arc(x+15,y+10,0,180,17);
arc(x+15,y+20,25,155,20);
floodfill(x+15,y-2,c2);{красим выше линии осн. купола}
floodfill(x+2,y+2,c2);{ниже слева}
floodfill(x+28,y+2,c2);{ниже справа}
arc(x+55,y+10,0,180,17);
arc(x+55,y+20,25,155,20);
floodfill(x+55,y-2,c2);
floodfill(x+42,y+2,c2);
floodfill(x+68,y+2,c2);
arc(x+95,y+10,0,180,17);
arc(x+95,y+20,25,155,20);
floodfill(x+95,y-2,c2);
floodfill(x+82,y+2,c2);
floodfill(x+108,y+2,c2);
{рисуем вертикальные дуги}
arc(x+70,y-19,270,120,20);
arc(x+60,y-16,310,90,20);
floodfill(x+85,y-16,c2);
arc(x+40,y-19,60,270,20);
arc(x+50,y-16,82,250,20);
floodfill(x+25,y-16,c2);
{рисуем стропы}
setcolor(c3);
line(x+30,y+2,x+55,y+75);
line(x,y+2,x+45,y+80);
line(x+78,y+2,x+60,y+75);
line(x+108,y+2,x+70,y+80);
{рисуем парашютиста}
setfillstyle(1,c3);
fillellipse(x+57,y+72,6,3); {голова}
fillellipse(x+57,y+85,4,10);{тело}
{руки}
bar(x+40,y+80,x+57,y+82);
bar(x+57,y+80,x+74,y+82);
bar(x+40,y+77,x+42,y+80);
bar(x+72,y+77,x+74,y+80);
line(x+39,y+77,x+43,y+77);
line(x+39,y+77,x+41,y+74);
line(x+41,y+74,x+43,y+77);
floodfill(x+41,y+75,c3);
line(x+71,y+77,x+74,y+77);
line(x+71,y+77,x+73,y+74);
line(x+73,y+74,x+75,y+77);
floodfill(x+73,y+75,c3);
setlinestyle(0,0,3);{ноги}
line(x+55,y+94,x+50,y+100);
line(x+57,y+94,x+52,y+100);
line(x+58,y+94,x+63,y+100);
line(x+60,y+94,x+65,y+100);
end;
var x,y,r,d:integer;
k:char;
begin
x:=0;
initgraph(x,y,'');
x:=getmaxX div 2-55;
y:=getmaxY div 2-35;
setbkcolor(15);{белый фон}
setcolor(12);{красным пояснения}
outtextXY(x-50,20,'Upravlenie - Strelki');
outtextXY(x-20,40,'Exit - Esc');
Fig(x,y,13,9,8);{стартовая фигура в центре}
repeat{бесконечный цикл пока не нажмем Esc}
if keypressed then{если нажата клавиша}
begin
k:=readkey;{читаем ее код}
if k=#80 then{стрелка вниз}
begin
delay(100);{задержка для просмотра}
Fig(x,y,0,0,0);{рисуем цветом фона=стираем}
if y>getmaxY-110 then d:=0{если нижний край, не двигаемся вниз}
else d:=10;{иначе вниз на 10 пикселей}
y:=y+d;
Fig(x,y,13,9,8);{рисуем в цвете}
end;
if k=#72 then{так же вверх}
begin
delay(100);
Fig(x,y,0,0,0);
if y<40 then d:=0 else d:=10; y:=y-d; Fig(x,y,13,9,8); end; if k=#77 then{вправо} begin delay(100); Fig(x,y,0,0,0); if x>getmaxX-118 then d:=0
else d:=10;
x:=x+d;
Fig(x,y,13,9,8);
end;
if k=#75 then{влево}
begin
delay(100);
Fig(x,y,0,0,0);
if x<10 then d:=0
else d:=10;
x:=x-d;
Fig(x,y,13,9,8);
end;
if k=#27 then exit;{Esc выход из программы}
end;
until k=#27;
end.

Puporev http://www.cyberforum.ru

1 комментарий:

Если у вас интересные исходники и вы не прочь поделиться, то присылайте daslex@yandex.ru с указанием Темы: Графика Паскаль
К вашей работе будет прикреплено ваше авторство и по желанию добавлена ссылка на ваш сайт.
На одну страницу - Одна работа. На одну работу - Одна ссылка + указание автора


Основное требование - это один файл .pas без сторонних модулей (только с родными. предпочтение Graph).
Можно использовать ассемблерные вставки.

Все что Запускается у меня и работает, я выкладываю. в этом блоге.
Яндекс.Метрика