![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 24.04.2011
Сообщений: 18
|
![]()
Нам по программированию задали написать программу в которой бы по экрану летали шарики.
Буду очень благодарна, если подскажите как можно задать произвольное движение этих шариков ![]() ![]() ![]() |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 11.04.2010
Сообщений: 143
|
![]()
Ну например у каждого шарика есть свои координаты X и Y свои значения проекции скоростей на эти оси SpeedX и SpeedY и свои значения проекций ускорений на те же оси VelX и VelY. При каждом обновлении кадра к соответствующим значениям позиции прибавляются значения скорости, затем к значения скорости прибавляются значения ускорения. Значения ускорения изменяются случайно через какойто промежуток времени, при чём чем больше этот промежуток тем плавнее двигаются объекты. Можно добавить ещё возможность задания фиксированой длины вектора скорости, чтобы объекты двигались с одинаковой скоростью. А так же реализовать возможность столкновения с краями окна, чтобы объекты не выходил за его пределы.
|
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 24.04.2011
Сообщений: 18
|
![]()
Вот, нужно чтобы они ещё от экрана отталкивались... Как это можно сделать?
|
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 11.04.2010
Сообщений: 143
|
![]()
У окна есть свои значения координат краёв Top, Left, Right, Bootom. Получается как бы квадрат. Нам нужно чтобы наш шар всегда был внутри этого квадрата, то есть для квадрата с координатами X и Y имеем
Код:
|
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 24.04.2011
Сообщений: 18
|
![]()
И что нужно написать если произошло столкновение? =0
|
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 11.04.2010
Сообщений: 143
|
![]()
Ну для начала определить с какой стенкой произошло столкновение. Если с верхней или нижней, то меняем знак SpeedY и VelY, если с боковой то меняем знак SpeedX и VelX
|
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 24.04.2011
Сообщений: 18
|
![]()
Спасибо большое! Хотя ещё не всё понятно, попробую что-нибудь написать
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Движение со скоростью света и быстрее скорости света - Сверхсветовое движение | Alar | Свободное общение | 354 | 13.11.2011 21:32 |
Как перехватить событие формы (Движение) | ImmortalAlexSan | Общие вопросы Delphi | 12 | 02.01.2011 11:36 |
Delphi7 Как осуществить движение объекта? | -ushёl- | Компоненты Delphi | 3 | 10.05.2010 22:01 |
Как сделать движение 2-ух объектов одновременно с помощью разных клавишь? | Ckomoroh | Общие вопросы Delphi | 5 | 24.10.2009 23:34 |
С++. движение! как его сделать? | HoOpe | Помощь студентам | 17 | 21.06.2009 02:07 |