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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.04.2011, 10:27   #1
Alena_44
Пользователь
 
Аватар для Alena_44
 
Регистрация: 24.04.2011
Сообщений: 18
Подмигивание Как написать движение

Нам по программированию задали написать программу в которой бы по экрану летали шарики.
Буду очень благодарна, если подскажите как можно задать произвольное движение этих шариков
Alena_44 вне форума Ответить с цитированием
Старый 24.04.2011, 10:37   #2
RomiKon
Форумчанин
 
Регистрация: 11.04.2010
Сообщений: 143
По умолчанию

Ну например у каждого шарика есть свои координаты X и Y свои значения проекции скоростей на эти оси SpeedX и SpeedY и свои значения проекций ускорений на те же оси VelX и VelY. При каждом обновлении кадра к соответствующим значениям позиции прибавляются значения скорости, затем к значения скорости прибавляются значения ускорения. Значения ускорения изменяются случайно через какойто промежуток времени, при чём чем больше этот промежуток тем плавнее двигаются объекты. Можно добавить ещё возможность задания фиксированой длины вектора скорости, чтобы объекты двигались с одинаковой скоростью. А так же реализовать возможность столкновения с краями окна, чтобы объекты не выходил за его пределы.
RomiKon вне форума Ответить с цитированием
Старый 24.04.2011, 10:39   #3
Alena_44
Пользователь
 
Аватар для Alena_44
 
Регистрация: 24.04.2011
Сообщений: 18
По умолчанию

Вот, нужно чтобы они ещё от экрана отталкивались... Как это можно сделать?
Alena_44 вне форума Ответить с цитированием
Старый 24.04.2011, 10:47   #4
RomiKon
Форумчанин
 
Регистрация: 11.04.2010
Сообщений: 143
По умолчанию

У окна есть свои значения координат краёв Top, Left, Right, Bootom. Получается как бы квадрат. Нам нужно чтобы наш шар всегда был внутри этого квадрата, то есть для квадрата с координатами X и Y имеем
Код:
  Если (X > Left)и(X < Right)и(Y > Top)и(Y < Bootom) то столкновения с краями не произошло иначе столкновение произошло
RomiKon вне форума Ответить с цитированием
Старый 24.04.2011, 10:50   #5
Alena_44
Пользователь
 
Аватар для Alena_44
 
Регистрация: 24.04.2011
Сообщений: 18
По умолчанию

И что нужно написать если произошло столкновение? =0
Alena_44 вне форума Ответить с цитированием
Старый 24.04.2011, 10:57   #6
RomiKon
Форумчанин
 
Регистрация: 11.04.2010
Сообщений: 143
По умолчанию

Ну для начала определить с какой стенкой произошло столкновение. Если с верхней или нижней, то меняем знак SpeedY и VelY, если с боковой то меняем знак SpeedX и VelX
RomiKon вне форума Ответить с цитированием
Старый 24.04.2011, 11:58   #7
Alena_44
Пользователь
 
Аватар для Alena_44
 
Регистрация: 24.04.2011
Сообщений: 18
По умолчанию

Спасибо большое! Хотя ещё не всё понятно, попробую что-нибудь написать
Alena_44 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Движение со скоростью света и быстрее скорости света - Сверхсветовое движение 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