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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.05.2014, 12:26   #1
I_R_I_A_N_A
Пользователь
 
Регистрация: 29.01.2014
Сообщений: 11
Радость Помогите пожалуйста создать анимацию робота в паскале.

Код:
program robot;
uses crt,graph;
var gd,gm:integer;
Procedure robot(x,y,m:integer);
begin
setcolor(9);setfillstyle(1,11);bar(x-4*m,y+5*m,x+4*m,y+5*m);
setcolor(9);setfillstyle(1,11);bar(x-2*m,y-5*m,x-2*m,y-6*m);
setcolor(9);setfillstyle(1,11);bar(x+2*m,y-5*m,x+2*m,y-6*m);
setcolor(12);setfillstyle(1,4); fillellipse(x-1,5*m,y-11*m,0,5*m,0,5*m);
setcolor(12);setfillstyle(1,4); fillellipse(x+1,5*m,y-11*m,0,5*m,0,5*m);
setcolor(5);setfillstyle(6,7); line(x-4*m,y-5*m,x-7*m,y+m);floodfill(
setcolor(5) ;setfillstyle(6,7); line(x+4*m,y-5*m,x+7*m,y+m);floodfill(
setcolor(5);setfillstyle(1,3); bar(x-3*m,y+5*m,x-m,y+10*m);
setcolor(5);setfillstyle(1,3); bar(x+m,y+5*m,x+3*m,y+10*m);
setcolor(5);setfillstyle(1,3); line(x-m,y-8*m,x=m,y-7*m);floodfill(
setcolor(5);setfillstyle(1,3); line(x=m,y-7*m,x+m,y-8*m);floodfill(
setcolor(5);setfillstyle(1,3);bar(x-4*m,y-10*m,x-3*m,y-7*m);
setcolor(5);setfillstyle(1,3);bar(x+4*m,y-10*m,x+3*m,y-7*m);
end;
x:=180;
y:=280;
m:=10;
begin
Repeat
robot(x,y,m)
Delay(1000);
x:=x+2;
ClearDevice;
Until (x<0);
closegraph;
end.
Я создала программу,но уверена,что многое там неправильно сделано.Мне надо создать анимацию робота,который движется по экрану в любом направлении.Обязательно закрашивание,цвет карандаша..Помогите пожалуйста,буду вам очень благодарна.
Изображения
Тип файла: jpg SAM_0119.jpg (104.2 Кб, 131 просмотров)

Последний раз редактировалось Stilet; 02.05.2014 в 12:37.
I_R_I_A_N_A вне форума Ответить с цитированием
Старый 02.05.2014, 12:59   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

такое впечатление, что код прогнали через распознавалку.
Он почти нормальный, но кое-где косяки.
Но, теоретически, его можно довести до ума.
Какой у Вас Паскаль?
Вы этот код самостоятельно писали?
Как должна происходить анимация? (в вашем код робот перемещается слева направо по горизонтали).
Что именно у Вас не работает?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 02.05.2014, 13:15   #3
I_R_I_A_N_A
Пользователь
 
Регистрация: 29.01.2014
Сообщений: 11
По умолчанию

У меня Free Pascal IDE.Да он так должен передвигаться.Да этот код я весь сама писала,но сама не знаю как я так смогла.С программированием у меня не очень.Я не знаю,у меня программа не проходит,различные ошибки.Даже не знаю как вам объяснить.
I_R_I_A_N_A вне форума Ответить с цитированием
Старый 02.05.2014, 15:51   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от I_R_I_A_N_A Посмотреть сообщение
У меня Free Pascal IDE.
О. Это уже определённость!

Цитата:
Сообщение от I_R_I_A_N_A Посмотреть сообщение
Да он так должен передвигаться.
Ну, значит, это Вы написали правильно.

Цитата:
Сообщение от I_R_I_A_N_A Посмотреть сообщение
Да этот код я весь сама писала,но сама не знаю как я так смогла.С программированием у меня не очень.
Ну, если Вы не пытаетесь обмануть нас(я про форумчан) и себя, тогда всё у Вас получится!

Вопрос к Вам такой (раз Вы сами писали, должны знать, ДЛЯ чего Вы это написали!):
Цитата:
Код:
etcolor(5);setfillstyle(6,7); line(x-4*m,y-5*m,x-7*m,y+m);floodfill(
setcolor(5) ;setfillstyle(6,7); line(x+4*m,y-5*m,x+7*m,y+m);floodfill(
Для чего Вы написали floodfill(? Что Вы пытались сделать с помощью этого оператора?!


для затравки попробуйте такой код:
Код:
program AnimROB;
uses crt, graph;
var grDriver, grMode: integer;

var x, y, m: integer;

procedure robot(x, y, m: integer);
begin
  setcolor(9); setfillstyle(1, 11); bar(x - 4 * m, y + 5 * m, x + 4 * m, y + 5 * m);
  setcolor(9); setfillstyle(1, 11); bar(x - 2 * m, y - 5 * m, x - 2 * m, y - 6 * m);
  setcolor(9); setfillstyle(1, 11); bar(x + 2 * m, y - 5 * m, x + 2 * m, y - 6 * m);
  setcolor(12); setfillstyle(1, 4); fillellipse(trunc(x - 1.5 * m), trunc(y - 11 * m), trunc(0.5 * m), trunc(0.5 * m));
  setcolor(12); setfillstyle(1, 4); fillellipse(trunc(x + 1.5 * m), trunc(y - 11 * m), trunc(0.5 * m), trunc(0.5 * m));
  setcolor(5); setfillstyle(6, 7); line(x - 4 * m, y - 5 * m, x - 7 * m, y + m);
{floodfill( }
  setcolor(5); setfillstyle(6, 7); line(x + 4 * m, y - 5 * m, x + 7 * m, y + m); {floodfill(}
  setcolor(5); setfillstyle(1, 3); bar(x - 3 * m, y + 5 * m, x - m, y + 10 * m);
  setcolor(5); setfillstyle(1, 3); bar(x + m, y + 5 * m, x + 3 * m, y + 10 * m);
  setcolor(5); setfillstyle(1, 3); line(x - m, trunc(y - 8 * m), x - m, trunc(y - 7 * m)); {floodfill(}
  setcolor(5); setfillstyle(1, 3); line(x - m, trunc(y - 7 * m), x + m, trunc(y - 8 * m)); {floodfill(}
  setcolor(5); setfillstyle(1, 3); bar(x - 4 * m, y - 10 * m, x - 3 * m, y - 7 * m);
  setcolor(5); setfillstyle(1, 3); bar(x + 4 * m, y - 10 * m, x + 3 * m, y - 7 * m);
end;


begin
  grDriver := Detect;
  InitGraph(grDriver, grMode, '');
  x := 180;
  y := 280;
  m := 10;
  repeat
    robot(x, y, m);
    Delay(1000);
    x := x + 2;
    ClearDevice;
  until (x > 200);
  closegraph;
end.

Последний раз редактировалось Serge_Bliznykov; 02.05.2014 в 15:57.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 02.05.2014, 16:26   #5
I_R_I_A_N_A
Пользователь
 
Регистрация: 29.01.2014
Сообщений: 11
По умолчанию

floodfill я писала потому,что нам объясняли,если в программе будут линии,значит надо брать эту операцию,чтобы закрасить её до границы цветом c.Floodfill(x,y,c).
I_R_I_A_N_A вне форума Ответить с цитированием
Старый 02.05.2014, 16:30   #6
I_R_I_A_N_A
Пользователь
 
Регистрация: 29.01.2014
Сообщений: 11
По умолчанию

А вот у меня еще один вопрос,а что такое trunc?Мы такое не использовали.И можно ли это чем то заменить.Извините если задаю глупый вопрос.
I_R_I_A_N_A вне форума Ответить с цитированием
Старый 02.05.2014, 16:40   #7
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
А вот у меня еще один вопрос,а что такое trunc?
Trunc(10.5) = 10
Trunc(1.009) = 1
Trunc(1.99999) = 1
Trunc отбрасывает дробную часть..

Заменить?.. ну можно использовать преобразование типов.. что-то вида Integer(0.5*m)
Или другой вариант..
Trunc(0.5*m) = m div 2 (приблизительно)..
А при умножении и сложении с целыми числами Trunc вообще не нужен..
Удачи!
Poma][a вне форума Ответить с цитированием
Старый 02.05.2014, 16:53   #8
I_R_I_A_N_A
Пользователь
 
Регистрация: 29.01.2014
Сообщений: 11
Радость

Большое вам спасибо!!!!!
I_R_I_A_N_A вне форума Ответить с цитированием
Старый 02.05.2014, 18:02   #9
I_R_I_A_N_A
Пользователь
 
Регистрация: 29.01.2014
Сообщений: 11
По умолчанию

А можно узнать,почему туловище не закрашивается и контур головы не виден,и так же голова не закрашивается.Извините за туповатые вопросы.
I_R_I_A_N_A вне форума Ответить с цитированием
Старый 04.05.2014, 01:42   #10
I_R_I_A_N_A
Пользователь
 
Регистрация: 29.01.2014
Сообщений: 11
По умолчанию

А можно спросить,как закрасить треугольник внутри,а то все время закрашивает все снаружи.Не понимаю принцип работы floodfill.
I_R_I_A_N_A вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
надо создать Анимацию волка! sanyok996 Паскаль, Turbo Pascal, PascalABC.NET 9 20.12.2013 08:58
надо создать Анимацию волка! sanyok996 Паскаль, Turbo Pascal, PascalABC.NET 8 19.12.2013 21:56
Помогите создать робота Lucion Общие вопросы Delphi 5 29.06.2009 20:36
привет всем! помогите пожалуйста решить две задачи на паскале. я в паскале полный ноль. Пищенок Саша Паскаль, Turbo Pascal, PascalABC.NET 5 20.01.2009 13:46