IPB
ЛогинПароль:

> Супер бильярд, подскажите...
сообщение
Сообщение #1


Новичок
*

Группа: Ожидающие
Сообщений: 15
Пол: Мужской

Репутация: -  0  +


Решил тут я бильярд на паскале написать. Ну кий там, шарик ведущий сделал, всё пока работает(кий толкает шарик, он катиться, замедляет ход), но необходимо и другие шары в игру(какой же это будет бильярд с одним шариком), а вот соударение шариков друг с другом, что-то не осилил. Подскажите, пожалуйста!!!! Заранее спасибо.


--------------------
http://magicrown.ru
<... image(s) deleted (Admin) ...>
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Бывалый
***

Группа: Пользователи
Сообщений: 160
Пол: Мужской
Реальное имя: Серый

Репутация: -  0  +


Цитата
Через такт движения они оба должны были бы оказаться в точке по центру. Но по правилам игры вместо этого должно произойти взаимное отталкивание. Какой должна быть последовательность проверок?


На самом деле, в данном случае, придется немного попариться... Вообще решать данную проблему можно так:
а) через матрицу (только единица матрицы по размерам должна быть МЕНЬШЕ размеров шара, т.е. шар включает в себя несколько единиц), если поле достаточно большое, то можно работать с битами, в результате чего размер матрицы сократится в 8 раз... Чем больше единиц будет в шаре, тем менее заметно будет вхождение друг в друга при столкновении...
б) проверять координаты всех шаров, учитывая их радиус (или проще: вписать шары в квадрат, но при этом загрубление... (хотя можно сделать так: вписать шары в квадрат, а при проверке столкновений, в случае вхождения одного в другой проверять чем-нибудь вроде pixelcheck'а)). В данном случае лучше всего шары представлять в виде массива (как это сделано в примере).

Мне вот другое интересно... Все это хорошо, я думаю, если посидеть немного, то можно сделать приемлемо... А вот хотел бы я на алгоритм Lemming'ов посмотреть... smile.gif

Ладно, пойду-ка я к лекции готовиться...

P.S.
Цитата
Объект "1" движется вправо, объект "2" - влево. Через такт движения они оба должны были бы оказаться в точке по центру. Но по правилам игры вместо этого должно произойти взаимное отталкивание.


Я вообще не понимаю, в чем проблема ?
000
102
000
Ну хорошо, предположим... Но шары-то двигаются НЕ ОДНОВРЕМЕННО - это же иллюзия... Тот шар, который в цикле имеет высший приоритет, просто запишет единицу в данную клетку ПЕРВЫМ, а второй, при проверке "свободна ли клетка дальше" получит -"нет" и, соответственно, должен будет оттолкнуться (а вот для того, чтобы и первый шар снизил скорость и поменял траекторию, надо чтобы второй "сообщил" ему об этом (я бы использовал массив указателей на шары, правда, при таком раскладе нужно еще идентифицировать нужный шар, но это тоже можно сделать). Вообще, такие штуки под DelphiX за пол-часа пишутся... smile.gif, но это халява. smile.gif


--------------------
Все в жизни ботва... Кроме пчел!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
VelarThind   Супер бильярд   11.04.2005 23:38
Altair   Вот этот пример думаю будет полезен. Код очень хор…   11.04.2005 23:58
mithquessir   Светлик, вот нашел pdfник описания какой-то лабора…   12.04.2005 0:26
AlienEmperor   А почему бы не представить игровое поле в виде мас…   12.04.2005 15:11
Бродяжник   С матричным полем возможны такие траблы: 1. Шары н…   12.04.2005 17:21
AlienEmperor   На самом деле я как раз недавно скидывал альфу игр…   12.04.2005 17:51
Atos   4. А если столкнутся больше двух шаров? :) Сейч…   12.04.2005 18:04
Бродяжник   AlienEmperor Поделитесь алгоритмом - как нужно обр…   12.04.2005 19:49
VelarThind   Тут ещё какой вопрос. Нужно то не просто их оттолк…   12.04.2005 21:18
AlienEmperor   На самом деле, в данном случае, придется немного…   13.04.2005 14:15
volvo   Ребята, вы вопрос внимательно читали? Мало ли ч…   13.04.2005 15:52
AlienEmperor   Volvo, ну так я же не спорю... И вариант решения п…   13.04.2005 15:56
VelarThind   Олег, спасибо за код, как раз то что нужно. Остало…   13.04.2005 16:15
Shura   Процедура TurnAfterHit неправильная!!…   23.04.2005 0:00
Altair   А в чем заключается неправильность? Втом, что не …   23.04.2005 0:11
Shura   Ну я ж привёл пример. Вот когда они в воздухе ста…   23.04.2005 0:22
Altair   Если не нравится, исправь!   23.04.2005 0:26
Shura   Хех, так если я б знал как, я бы не спрашивал - я…   23.04.2005 0:42
Altair   а понял :) насчет неправильности... l:=Arctan((y2-…   23.04.2005 0:49
Shura   Да не - нам то в радианах потом и нужно будет. Это…   23.04.2005 0:58
-Aleks-   Да не - нам то в радианах потом и нужно будет. Эт…   21.01.2010 13:04
Archon   Дак она и так под lazarus работает не плохо. Что п…   21.01.2010 14:34
TarasBer   Для шаров одной массы при идеально упругом столкно…   21.01.2010 23:12


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 8.09.2025 16:01
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name