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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.05.2015, 23:00   #1
Asp729
 
Регистрация: 31.05.2015
Сообщений: 6
По умолчанию Графическая реализация движения тела, брошенного под углом к горизонту

нарисован танк и человек. Из танка вылетает снаряд, который может пролететь мимо человека, или же попасть в него. Дуло танка и самого человечка перемещают с помощью клавиш. Проблема заключается в следующем: например, координаты человечка изменены, перехожу к изменению положения дула, дуло перемещается, человечек возвращается в исходное положение. Как реализовать одновременные перемещения координат и дула, и человечка? Помогите, пожалуйста. буду очень признательна. Вот код программы:
Код:
Program Kursovaya_rabota;
Uses GraphABC;
Var a,b:integer;
Procedure Gusenicy(x,y:integer);
Begin
 setpenwidth(2);
 setpencolor(cllime);
 setbrushcolor(clpurple);
 circle(x+120,y+160,10);
 circle(x+130,y+160,10);
 circle(x+140,y+160,10);
 circle(x+150,y+160,10);
 circle(x+160,y+160,10);
 circle(x+170,y+160,10);
 circle(x+180,y+160,10);
 circle(x+190,y+160,10)
End;
Procedure Bashnya (x,y:integer);
Begin
 setpenwidth(2);
 setpencolor(cllime);
 setbrushcolor(clteal);
 drawpie(x+155,y+155,40,0,180);
 fillpie(x+155,y+155,40,0,180)
End;
Procedure Dulo(x,y:integer);
Begin
 setpenwidth(2);
 setpencolor(cllime);
 setbrushcolor(clteal);
 Rectangle(x+145,y+75,x+165,y+130)
End;
Procedure The_Tank(x,y:integer);
Begin
 Dulo(x,y);
 Gusenicy(x,y);
 Bashnya(x,y)
End;
Procedure The_Victim (x,y:integer);
Begin
 setpencolor(clpink);
 setbrushcolor(clpink);
 circle(x+350,y+90,15);
 setpencolor(clblack);
 setbrushcolor(clwhite);
 circle(x+340,y+85,3);
 circle(x+360,y+85,3);
 setpixel(x+340,y+85,clblack);
 setpixel(x+360,y+85,clblack);
 Line(x+345,y+100,x+355,y+100);
 setpenwidth(2);
 setpixel(x+350,y+90,clblack);
 Line(x+350,y+105,x+350,y+150);
 Line(x+350,y+120,x+340,y+130);
 Line(x+350,y+120,x+360,y+130);
 Line(x+350,y+150,x+340,y+160);
 Line(x+350,y+150,x+360,y+160);
End;
Procedure KeyDown(key:integer);
Begin
 Lockdrawing;
 Clearwindow;
 case key of
  VK_Up:begin
         Dulo(a-10,b-5);
         Gusenicy(a,b);
         Bashnya(a,b);
         The_Victim(a,b);
        end;
  VK_Down:begin
           Dulo(a+10,b+5);
           Gusenicy(a,b);
           Bashnya(a,b);
           The_Victim(a,b)
          end;
  VK_Right:begin
             The_Victim(a+10,b);
             The_Tank(a,b)
           end;
  VK_Left:begin
           The_Victim(a-10,b);
           The_Tank(a,b)
          end;
  end;
  redraw;
  sleep(80)
End;           
Begin
 Window.Title:='Перестрелка';
 The_Tank(a,b);
 The_Victim(a,b);
 OnKeyDown:=KeyDown
End.

Последний раз редактировалось Stilet; 01.06.2015 в 08:02.
Asp729 вне форума Ответить с цитированием
Старый 02.06.2015, 07:02   #2
Asp729
 
Регистрация: 31.05.2015
Сообщений: 6
По умолчанию

То есть не одновременное, а независимое движение
Asp729 вне форума Ответить с цитированием
Старый 02.06.2015, 07:28   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Боюсь что в твоем паскале нет работы с сопроцессами. Может если хорошенько поискать, но врядли.
Ты классы писать умеешь? Напиши человечка отдельным классом, армату отдельным, и снаряд отдельным. Тогда получится сделать независимое движение, когда координаты объектов будут локализованы в них самих.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.06.2015, 07:49   #4
Asp729
 
Регистрация: 31.05.2015
Сообщений: 6
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Боюсь что в твоем паскале нет работы с сопроцессами. Может если хорошенько поискать, но врядли.
Ты классы писать умеешь? Напиши человечка отдельным классом, армату отдельным, и снаряд отдельным. Тогда получится сделать независимое движение, когда координаты объектов будут локализованы в них самих.
Вот и я тоже боюсь) с классами, к сожалению, не работала и не обучена Их использованию:-( Я думала, поработать с записью, но это тоже оказалось несколько проблематичным
Asp729 вне форума Ответить с цитированием
Старый 02.06.2015, 09:15   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

С записью тоже можно.
Проблематика тут только в создании эффекта многопоточности. А для этого нужно именно цикл, который не будет прерываться нажатиями клавиш, и в тот же момент постоянно рисовать объекты. Можно в качестве самого простого действительно сделать массив из записей, в которых будут храниться координаты и в этом бесконечном цикле рисовать из данных по этом записям.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.06.2015, 16:21   #6
Asp729
 
Регистрация: 31.05.2015
Сообщений: 6
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
С записью тоже можно.
Проблематика тут только в создании эффекта многопоточности. А для этого нужно именно цикл, который не будет прерываться нажатиями клавиш, и в тот же момент постоянно рисовать объекты. Можно в качестве самого простого действительно сделать массив из записей, в которых будут храниться координаты и в этом бесконечном цикле рисовать из данных по этом записям.
Будет трудновато, но я попробую) спасибо большое
Asp729 вне форума Ответить с цитированием
Старый 02.06.2015, 19:07   #7
Asp729
 
Регистрация: 31.05.2015
Сообщений: 6
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
С записью тоже можно.
Проблематика тут только в создании эффекта многопоточности. А для этого нужно именно цикл, который не будет прерываться нажатиями клавиш, и в тот же момент постоянно рисовать объекты. Можно в качестве самого простого действительно сделать массив из записей, в которых будут храниться координаты и в этом бесконечном цикле рисовать из данных по этом записям.
О Боже! дуло и человека я использовала как запись, теперь эта часть работает! Спасибо Вам огромнейшее!)
Asp729 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Движение тела, брошенного под углом к горизонту pompiduskus PHP 2 27.09.2013 05:00
Траектория полета тела брошенного под углом к горизонту в трех измерениях. _PROGRAMM_ Помощь студентам 7 06.01.2013 12:02
Уравнение движения тела, брошенного под углом к горизонту _PROGRAMM_ Помощь студентам 4 20.04.2012 18:13
Движение тела, брошенного под углом к горизонту с учетом сопротивления Encore Помощь студентам 0 03.04.2011 20:34
Движение тела, брошенного под углом к горизонту Medik07 Общие вопросы C/C++ 1 17.03.2011 22:28