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

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


Гость






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


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

 



- Текстовая версия 25.06.2025 19:00
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"