![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
Wowa |
|
|||
Эксперт ![]() Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: нет Всего: 290 |
Какой Layout выбрать для игры "колобок" ? Будет колобок, который передвигается по 2Д лабиринту.
|
|||
|
||||
boevik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1452 Регистрация: 31.5.2004 Где: Израиль Репутация: нет Всего: 35 |
Если не графика, то BorderLayot.
-------------------- Никогда не говори никогда |
|||
|
||||
Wowa |
|
|||
Эксперт ![]() Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: нет Всего: 290 |
Т.е. не графика? Графика конечно, хоть и примитивная. Добавлено @ 09:39 Если брать BorderLayot, то получается, что лабиринк и колобка надо в центр засовывать, но как сделать тогда передвижение рисунка. Можно ли как-то координаты его задавать?
|
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 38 Всего: 538 |
Если ты сам будешь двигать колобка, то от LayoutManager придется отказаться. И управлять координатами вручную.
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
Wowa |
|
|||
Эксперт ![]() Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: нет Всего: 290 |
А нельзя ли взять BorderLayot, но в центре(там где игровое поле будет) указывать координаты вручную?
Насколько кстати распространены случаи, когда приходится отказываться от LayoutManager? |
|||
|
||||
LSD |
|
||||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 38 Всего: 538 |
LayotManager все равно будет перераспределять компоненты сам. Как вариант можно засунуть в центр BorderLayot - JPanel, по краям другие элементы управления. А вот уже непосредсвенно у JPanel установить LayoutManager в null, и двигать там колобка.
Эсли это обычное приложение, то это редкость. А для игр, не в курсе. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
||||
|
|||||
Wowa |
|
||||
Эксперт ![]() Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: нет Всего: 290 |
Я тоже думал об этом, но идет ругань на строчку:
Exception in thread "main" java.lang.IllegalArgumentException: adding a window to a container at java.awt.Container.addImpl(Unknown Source) at java.awt.Container.add(Unknown Source) at GUI.init(GUI.java:97) at ххх.main(ххх.java:45) |
||||
|
|||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 38 Всего: 538 |
Он ругается не на это. Судя по всему у тебя game_frame окно (JFrame, JWindow или еще что подобное). А ты пытаешься засунуть его в контейнер, так делать нельзя. Окно нельзя добавить ни в какой другой компонент, оно должно самостоятельно отображаться на экране.
Замени окно на панель. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
Wowa |
|
|||
Эксперт ![]() Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: нет Всего: 290 |
||||
|
||||
LSD |
|
||||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 38 Всего: 538 |
С точки зрения производительности, лучше один раз отрендерить картинку с полем. А затем рисовать ее в качесве фона панели. Просто двигать колобка в контейнере с GridBagLayout, можно только меняе его GridBagConstraints. А так можно получить только движение по клеткам. Добавлено @ 15:51 Отрендерить картинку можно например так:
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
||||
|
|||||
Wowa |
|
|||
Эксперт ![]() Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: нет Всего: 290 |
А потом расставить элементы и колобка на поле без использования LayoutManager? Как мне тогда можно определить, что колобок движется, например, в стенку? В массиве нужно хранить все объекты на поле и их координаты получается. Так ? |
|||
|
||||
Goliath |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 246 Регистрация: 1.3.2005 Репутация: 3 Всего: 5 |
Я когда-то писал подобное. Я делал следующим образом:
1. Делал сетку из квадратов, если изометрия то из ромбиков. 2. Брал двухмерный массив индексы соответствовали каждому графическому квадратику, а значение тип преграды. Например 1 – стена, 2 вода и т.д 3. Определил передвижение юнита и делал проверку на его место положение. 4. Если он натыкался на преграду определял тип и делал необходимые действия Если нужен код могу поискать и выложить его. --------------------
Наша жизнь растрачивается на мелочи… Упрощайте, упрощайте. [Генри Торо] |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 38 Всего: 538 |
По идее да. У тебя есть некая карта, которая описывает как расставлены элементы лабиринта, на ее основе ты создаешь MazePanel и генерируешь "карту проходимости". В простейшем варианте, можно представить карту в виде клеток и для каждой простосто определить проходима она или нет. Колобок может находится, строго по центру одной клетки. Исключение момент перехода из одной клетки в другую, в этот момент он занимает 2 клетки и отображается где-то посередине. Приблизительно такая схема была реализована в WarCraft II. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
Goliath |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 246 Регистрация: 1.3.2005 Репутация: 3 Всего: 5 |
На самом деле передвижение делается легко и не нужно привязываться к карте, он просто движется плавно по ее поверхности, а при движение мы определяем на что он наткнулся и делаем обход или атаку и т.д --------------------
Наша жизнь растрачивается на мелочи… Упрощайте, упрощайте. [Генри Торо] |
|||
|
||||
Samuil |
|
|||
![]() в(Job)ываю ![]() ![]() Профиль Группа: Участник Сообщений: 705 Регистрация: 26.4.2006 Где: Uzbekistan.Tashke nt Репутация: нет Всего: 6 |
Блин а не проше все далать в методе pain()? и никаких проблем у Вас не будет
![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |