Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.06.2010, 17:27   #1
blondino4ka_milk
Пользователь
 
Аватар для blondino4ka_milk
 
Регистрация: 02.03.2010
Сообщений: 59
По умолчанию Ползущая гусеница. Графика Pascal ABC

Как сделать через процедуры?
Код:
program Gusinica;
uses GraphABC;
var i:integer;
//Procedure Gusinica(x,y,x1,y1:integer);
begin
SetWindowWidth(800);
SetWindowHeight(460);
LockDrawing;
for i:=50 to 200 do
begin
SetBrushColor(clGreen);
circle(i-10,200,30);
SetBrushColor(clMoneyGreen);
circle(i+50,200,30);
SetBrushColor(clGreen);
circle(i+110,200,30);
SetBrushColor(clMoneyGreen);
circle(i+170,200,30);
SetBrushColor(clGreen);
circle(i+230,200,30);
SetBrushColor(clMoneyGreen);
circle(i+290,200,30);
SetBrushColor(clGreen);
circle(i+350,200,30);
//Голова
SetBrushColor(clMoneyGreen);
circle(i+419,190,40);
//Глазки
SetBrushColor(clblack);
circle(i+410,170,4);
SetBrushColor(clblack);
circle(i+430,170,4);
//Носик
SetPenWidth(3);
Arc(i+418,190,5,150,10);
//Ротик
Arc(i+415,210,4,120,10);
SetBrushColor(clblack);
//Ушки
Line(i+400,115,i+410,152);
SetBrushColor(clblack);
Line(i+440,115,i+430,152);
SetBrushColor(clblack);
circle(i+400,110,6);
SetBrushColor(clblack);
circle(i+440,110,6);

//2
{SetBrushColor(clGreen);
circle(i+30,200,30);
SetBrushColor(clMoneyGreen);
circle(i+90,200,30);
SetBrushColor(clGreen);
circle(i+145,180,30);
SetBrushColor(clMoneyGreen);
circle(i+190,140,30);
SetBrushColor(clGreen);
circle(i+250,140,30);
SetBrushColor(clMoneyGreen);
circle(i+295,180,30);
SetBrushColor(clGreen);
circle(i+350,200,30);
//Голова
SetBrushColor(clMoneyGreen);
circle(i+419,190,40);
//Глазки
SetBrushColor(clblack);
circle(i+410,170,4);
SetBrushColor(clblack);
circle(i+430,170,4);
//Носик
SetPenWidth(3);
Arc(i+418,190,5,150,10);
//Ротик
Arc(i+415,210,4,120,10);
SetBrushColor(clblack);
//Ушки
Line(i+400,115,i+410,152);
SetBrushColor(clblack);
Line(i+440,115,i+430,152);
SetBrushColor(clblack);
circle(i+400,110,6);
SetBrushColor(clblack);
circle(i+440,110,6); }

RedRaw;
Sleep(10);
ClearWindow(clwhite);

end;
end.
blondino4ka_milk вне форума Ответить с цитированием
Старый 13.06.2010, 18:25   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

не совсем понятно, что означает "сделать через процедуры"...

Так пойдёт?
Код:
program Gusinica;
uses GraphABC;
var i:integer;

procedure ShowOneBodyElement(x, y : integer;
            SizeBody : integer; BodyColor : integer);
begin
  SetBrushColor(BodyColor);
  circle(x,y,SizeBody);
end;

procedure ShowGusenica(x, y : integer; CountOfBody : integer;
                       SizeBody : integer);
var i : integer;
  f : text;
begin
  {нарисовать тело}
  for i:=0 to CountOfBody-1 do
    if odd(i) then
       ShowOneBodyElement(x+(i*SizeBody*2), y, SizeBody, clMoneyGreen)
    else
       ShowOneBodyElement(x+(i*SizeBody*2), y, SizeBody, clGreen);

  x := x + CountOfBody*SizeBody*2;

  //Голова
  SetBrushColor(clMoneyGreen);
  circle(x+9,y-10, 40);
  //Глазки
  SetBrushColor(clblack);
  circle(x,y-30,4);
  SetBrushColor(clblack);
  circle(x+20,y-30,4);
  //Носик
  SetPenWidth(3);
  Arc(x+8,y-10,5,150,10);
  //Ротик
  Arc(x+5,y+10,4,120,10);
  SetBrushColor(clblack);
  //Ушки
  Line(x-10,y-85,x,y-48);
  SetBrushColor(clblack);
  Line(x+30,y-85,x+20,y-48);
  SetBrushColor(clblack);
  circle(x-10,y-90,6);
  SetBrushColor(clblack);
  circle(x+30,y-90,6);
end;

begin
  SetWindowWidth(800);
  SetWindowHeight(460);
  LockDrawing;
  for i:=50 to 250 do
  begin
    ShowGusenica(i-10, 250, 7, 30);
    ReDraw;
    Sleep(10);
    ClearWindow(clwhite);
  end;
end.

Последний раз редактировалось Serge_Bliznykov; 13.06.2010 в 18:43.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.06.2010, 18:37   #3
blondino4ka_milk
Пользователь
 
Аватар для blondino4ka_milk
 
Регистрация: 02.03.2010
Сообщений: 59
По умолчанию

Serge_Bliznykov, через процедуру расписать нужно её как то, и что б она ползала! Мне сказали два вида положения гусеницы надо нарисовать, что я и сделала т.е. вот:
Код:
SetBrushColor(clGreen);
circle(i-10,200,30);
SetBrushColor(clMoneyGreen);
circle(i+50,200,30);
SetBrushColor(clGreen);
circle(i+110,200,30);
SetBrushColor(clMoneyGreen);
circle(i+170,200,30);
SetBrushColor(clGreen);
circle(i+230,200,30);
SetBrushColor(clMoneyGreen);
circle(i+290,200,30);
SetBrushColor(clGreen);
circle(i+350,200,30);
//Голова
SetBrushColor(clMoneyGreen);
circle(i+419,190,40);
//Глазки
SetBrushColor(clblack);
circle(i+410,170,4);
SetBrushColor(clblack);
circle(i+430,170,4);
//Носик
SetPenWidth(3);
Arc(i+418,190,5,150,10);
//Ротик
Arc(i+415,210,4,120,10);
SetBrushColor(clblack);
//Ушки
Line(i+400,115,i+410,152);
SetBrushColor(clblack);
Line(i+440,115,i+430,152);
SetBrushColor(clblack);
circle(i+400,110,6);
SetBrushColor(clblack);
circle(i+440,110,6);
Код:
SetBrushColor(clGreen);
circle(i+30,200,30);
SetBrushColor(clMoneyGreen);
circle(i+90,200,30);
SetBrushColor(clGreen);
circle(i+145,180,30);
SetBrushColor(clMoneyGreen);
circle(i+190,140,30);
SetBrushColor(clGreen);
circle(i+250,140,30);
SetBrushColor(clMoneyGreen);
circle(i+295,180,30);
SetBrushColor(clGreen);
circle(i+350,200,30);
//Голова
SetBrushColor(clMoneyGreen);
circle(i+419,190,40);
//Глазки
SetBrushColor(clblack);
circle(i+410,170,4);
SetBrushColor(clblack);
circle(i+430,170,4);
//Носик
SetPenWidth(3);
Arc(i+418,190,5,150,10);
//Ротик
Arc(i+415,210,4,120,10);
SetBrushColor(clblack);
//Ушки
Line(i+400,115,i+410,152);
SetBrushColor(clblack);
Line(i+440,115,i+430,152);
SetBrushColor(clblack);
circle(i+400,110,6);
SetBrushColor(clblack);
circle(i+440,110,6);
Нужно наверно, что б он первое положение гуссиницы показывал, через секунду второе. И так повторялся!
а может и по другому как то можно?

Последний раз редактировалось blondino4ka_milk; 13.06.2010 в 18:40.
blondino4ka_milk вне форума Ответить с цитированием
Старый 14.06.2010, 21:10   #4
blondino4ka_milk
Пользователь
 
Аватар для blondino4ka_milk
 
Регистрация: 02.03.2010
Сообщений: 59
По умолчанию

я вот так сделала!
не знаю как можно ещё..
Код:
program Gusinica;
uses GraphABC;
var i,x,y,k:integer;
procedure Gus; // Процедура рисования 1-го положения гусеницы
begin
SetPenWidth(3);
SetBrushColor(clGreen);
circle(i,y,k);
SetBrushColor(clMoneyGreen);
circle(i+x,y,k);
SetBrushColor(clGreen);
circle(i+x*2,y,k);
SetBrushColor(clMoneyGreen);
circle(i+x*3,y,k);
SetBrushColor(clGreen);
circle(i+x*4,y,k);
SetBrushColor(clMoneyGreen);
circle(i+x*5,y,k);
SetBrushColor(clGreen);
circle(i+x*6,y,k);
//Голова
SetBrushColor(clMoneyGreen);
circle(i+x*7+round(0.3*k),y-round(0.3*k),round(1.3*k));
//Глазки
SetBrushColor(clblack);
circle(i+x*7,y-k,round(0.1*k));
circle(i+x*7+round(0.6*k),y-k,round(0.1*k));
//Носик
Arc(i+x*7+round(0.2*k),y-round(0.3*k),round(0.2*k),k*5,round(0.1*k));
//Ротик
Arc(i+x*7+round(0.2*k),y+round(0.3*k),round(0.1*k),k*4,round(0.1*k));
//Ушки
Line(i+x*7-round(0.3*k),y-round(3.1*k),i+x*7,y-round(1.6*k));
Line(i+x*7+k,y-round(3.1*k),i+x*7+k-10,y-round(1.6*k));
circle(i+x*7-round(0.3*k),y-round(3.1*k),round(0.2*k));
circle(i+x*7+k,y-round(3.1*k),round(0.2*k));
end;
procedure Gus2; //Процедура рисования 2-го положения гусеницы
begin
SetPenWidth(3);
SetBrushColor(clGreen);
circle(i+x,y,k);
SetBrushColor(clMoneyGreen);
circle(i+x*2,y,k);
SetBrushColor(clGreen);
circle(i+x*3-round(0.2*k),y-round(0.6*k),k);
SetBrushColor(clMoneyGreen);
circle(i+x*4-round(0.7*k),y-k*2,k);
SetBrushColor(clGreen);
circle(i+x*5-round(0.7*k),y-k*2,k);
SetBrushColor(clMoneyGreen);
circle(i+x*6-round(1.3*k),y-round(0.6*k),k);
SetBrushColor(clGreen);
circle(i+x*7-round(1.4*k),y,k);
//Голова
SetBrushColor(clMoneyGreen);
circle(i+x*7+round(0.9*k),y-round(0.3*k),round(1.3*k));
//Глазки
SetBrushColor(clblack);
circle(i+x*7+round(0.6*k),y-k,round(0.1*k));
circle(i+x*7+round(1.2*k),y-k,round(0.1*k));
//Носик
Arc(i+x*7+round(0.8*k),y-round(0.3*k),round(0.2*k),k*5,round(0.1*k));
//Ротик
Arc(i+x*7+round(0.8*k),y+round(0.3*k),round(0.1*k),k*4,round(0.1*k));
//Ушки
Line(i+x*7+round(0.2*k),y-round(3.1*k),i+x*7+round(0.6*k),y-round(1.6*k));
Line(i+x*7+round(1.5*k),y-round(3.1*k),i+x*7+round(1.2*k),y-round(1.6*k));
circle(i+x*7+round(0.2*k),y-round(3.1*k),round(0.2*k));
circle(i+x*7+round(1.5*k),y-round(3.1*k),round(0.2*k));
end;
begin
x:=60;
y:=200;
k:=30;
cls;
SetWindowWidth(640);
SetWindowHeight(460);
LockDrawing;
for i:=50 to 500 do
begin
gus;
RedRaw;
Sleep(500);
clearwindow;
gus2;
RedRaw;
Sleep(500);
clearwindow;
end;
end.
blondino4ka_milk вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Turbo Pascal or Pascal ABC Ikram Паскаль, Turbo Pascal, PascalABC.NET 0 27.04.2010 13:44
Pascal ABC ArcaN0id Помощь студентам 8 07.12.2009 15:24
C++ аналог Pascal ABC russian-stalker Софт 2 24.11.2009 18:15