Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Какой Layout выбрать для игры "колобок" ? 
:(
    Опции темы
Wowa
Дата 21.5.2006, 02:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: нет
Всего: 290



Какой Layout выбрать для игры "колобок" ? Будет колобок, который передвигается по 2Д лабиринту.
 
PM WWW   Вверх
boevik
Дата 21.5.2006, 07:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1452
Регистрация: 31.5.2004
Где: Израиль

Репутация: нет
Всего: 35



Если не графика, то BorderLayot. 


--------------------
Никогда не говори никогда
PM MAIL WWW   Вверх
Wowa
Дата 21.5.2006, 09:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: нет
Всего: 290



Цитата(boevik @  21.5.2006,  06:22 Найти цитируемый пост)
Если не графика, то BorderLayot.  

Т.е. не графика? Графика конечно, хоть и примитивная.

Добавлено @ 09:39 
Если брать BorderLayot, то получается, что лабиринк и колобка надо в центр засовывать, но как сделать тогда передвижение рисунка. Можно ли как-то координаты его задавать?

Код

        ImageIcon icon = new ImageIcon("Grafik-Daten/smile.gif");
        JLabel label = new JLabel("hello",icon,SwingConstants.RIGHT);
        frame.getContentPane().add(label, BorderLayout.CENTER);
 
PM WWW   Вверх
LSD
Дата 21.5.2006, 10:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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.
PM MAIL WWW   Вверх
Wowa
Дата 21.5.2006, 10:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: нет
Всего: 290



А нельзя ли взять BorderLayot, но в центре(там где игровое поле будет) указывать координаты вручную?

Насколько кстати распространены случаи, когда приходится отказываться от LayoutManager? 
PM WWW   Вверх
LSD
Дата 21.5.2006, 10:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 38
Всего: 538



Цитата(Wowa @  21.5.2006,  11:53 Найти цитируемый пост)
А нельзя ли взять BorderLayot, но в центре(там где игровое поле будет) указывать координаты вручную?

LayotManager все равно будет перераспределять компоненты сам. Как вариант можно засунуть в центр BorderLayot - JPanel, по краям другие элементы управления. А вот уже непосредсвенно у JPanel установить LayoutManager в null, и двигать там колобка.


Цитата(Wowa @  21.5.2006,  11:53 Найти цитируемый пост)
Насколько кстати распространены случаи, когда приходится отказываться от 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.
PM MAIL WWW   Вверх
Wowa
Дата 21.5.2006, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: нет
Всего: 290



Цитата(LSD @  21.5.2006,  09:58 Найти цитируемый пост)
Как вариант можно засунуть в центр BorderLayot - JPanel, по краям другие элементы управления.

Я тоже думал об этом, но идет ругань на строчку:
Код

frame.getContentPane().add(game_frame, BorderLayout.CENTER);


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)  
PM WWW   Вверх
LSD
Дата 21.5.2006, 12:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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.
PM MAIL WWW   Вверх
Wowa
Дата 21.5.2006, 15:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: нет
Всего: 290



Цитата(LSD @  21.5.2006,  09:35 Найти цитируемый пост)
Если ты сам будешь двигать колобка, то от LayoutManager придется отказаться. И управлять координатами вручную.  

В Лабиринте ведь будут стены, всякие сюрпризы и т.п. Не проще ли взять GridBagLayout  для JPanel с полем игры? 
PM WWW   Вверх
LSD
Дата 21.5.2006, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 38
Всего: 538



Цитата(Wowa @  21.5.2006,  16:07 Найти цитируемый пост)
В Лабиринте ведь будут стены, всякие сюрпризы и т.п. Не проще ли взять GridBagLayout  для JPanel с полем игры?

С точки зрения производительности, лучше один раз отрендерить картинку с полем. А затем рисовать ее в качесве фона панели. Просто двигать колобка в контейнере с GridBagLayout, можно только меняе его GridBagConstraints. А так можно получить только движение по клеткам.

Добавлено @ 15:51 
Отрендерить картинку можно например так:
Код
package wowa;

import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.*;

public class MazePanel
{
  public static void main(String[] args) throws IOException
  {
    JPanel panel = new JPanel();
    JFileChooser fileChooser = new JFileChooser("C:\\");
    JColorChooser colorChooser = new JColorChooser(Color.GREEN);
    panel.add(fileChooser);
    panel.add(colorChooser);

    JFrame frame = new JFrame();
    frame.getContentPane().add(panel);
    frame.pack();

    Dimension size = panel.getPreferredSize();
    BufferedImage img = new BufferedImage(size.width, size.height, BufferedImage.TYPE_INT_RGB);
    panel.paint(img.getGraphics());

    ImageIO.write(img, "PNG", new File("img.png"));

    frame.dispose();
  }
}
 


--------------------
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.
PM MAIL WWW   Вверх
Wowa
Дата 21.5.2006, 21:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: нет
Всего: 290



Цитата(LSD @  21.5.2006,  14:49 Найти цитируемый пост)

С точки зрения производительности, лучше один раз отрендерить картинку с полем. А затем рисовать ее в качесве фона панели.


А потом расставить элементы и колобка на поле без использования LayoutManager? Как мне тогда можно определить, что колобок движется, например, в стенку? В массиве нужно хранить все объекты на поле и их координаты получается. Так ? 
PM WWW   Вверх
Goliath
Дата 21.5.2006, 22:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 246
Регистрация: 1.3.2005

Репутация: 3
Всего: 5



Я когда-то писал подобное. Я делал следующим образом:
1. Делал сетку из квадратов, если изометрия то из ромбиков.
2. Брал двухмерный массив индексы соответствовали каждому графическому квадратику, а значение тип преграды. Например 1 – стена, 2 вода и т.д 
3. Определил передвижение юнита и делал проверку на его место положение.
4. Если он натыкался на преграду определял  тип и делал необходимые действия 
Если нужен код могу поискать и выложить его.
 
--------------------
Наша жизнь растрачивается на мелочи… Упрощайте, упрощайте. [Генри Торо] 
PM MAIL   Вверх
LSD
Дата 21.5.2006, 22:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 38
Всего: 538



Цитата(Wowa @  21.5.2006,  22:40 Найти цитируемый пост)
В массиве нужно хранить все объекты на поле и их координаты получается. Так ?

По идее да. У тебя есть некая карта, которая описывает как расставлены элементы лабиринта, на ее основе ты создаешь 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.
PM MAIL WWW   Вверх
Goliath
Дата 21.5.2006, 22:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 246
Регистрация: 1.3.2005

Репутация: 3
Всего: 5



Цитата(LSD @  21.5.2006,  22:08 Найти цитируемый пост)
В простейшем варианте, можно представить карту в виде клеток и для каждой простосто определить проходима она или нет. Колобок может находится, строго по центру одной клетки. Исключение момент перехода из одной клетки в другую, в этот момент он занимает 2 клетки и отображается где-то посередине.

На самом деле передвижение делается легко и не нужно привязываться к карте, он просто движется плавно по ее поверхности, а при движение мы определяем на что он наткнулся и делаем обход или атаку и т.д  
--------------------
Наша жизнь растрачивается на мелочи… Упрощайте, упрощайте. [Генри Торо] 
PM MAIL   Вверх
Samuil
Дата 24.5.2006, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


в(Job)ываю
**


Профиль
Группа: Участник
Сообщений: 705
Регистрация: 26.4.2006
Где: Uzbekistan.Tashke nt

Репутация: нет
Всего: 6



Блин а не проше все далать в методе pain()? и никаких проблем у Вас не будет smile  


--------------------
Выбор уже сделан, остается его только осознать   
smile    smile 
      smile  

user posted image
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   jk1
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема »


 




[ Время генерации скрипта: 0.1688 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.