Вопрос об игровом дизайне OO

Разметки CSS обычно намного лучше для доступности, если содержание прибывает в естественный порядок и имеет смысл без таблицы стилей. И это не просто программы экранного доступа, которые борются с основанными на таблице разметками: они также делают его намного тяжелее для мобильных браузеров для рендеринга страницы правильно.

кроме того, с основанным на отделении расположением можно очень легко сделать прохладные вещи с таблицей стилей печати такой как, исключая заголовки, нижние колонтитулы и навигацию от печатных страниц - я думаю, что это было бы невозможным, или по крайней мере намного более трудным, чтобы сделать это с основанным на таблице расположением.

, Если Вы сомневаетесь, что разделение содержания от расположения легче с отделениями, чем с таблицами, смотрите на основанный на отделении HTML в CSS Zen-Garden , посмотрите, как изменение таблиц стилей может решительно изменить расположение, и думать о том, могли ли Вы достигнуть того же множества разметок, если HTML был базирующейся таблицей... При выполнении основанного на таблице расположения Вы вряд ли будете использовать CSS для управления всем интервалом и дополнением в ячейках (если бы Вы были, Вы почти наверняка нашли бы легче использовать плавающие отделения и т.д. во-первых). Не используя CSS для управления всем этим, и из-за того, что таблицы определяют слева направо и порядок от начала до конца вещей в HTML таблицы имеют тенденцию означать, что расположение становится очень зафиксированным в HTML.

Реалистично я думаю, что очень трудно полностью изменить расположение дизайна div-and-CSS-based, не изменяя отделения немного. Однако с div-and-CSS-based расположением намного легче настроить вещи как интервал между различными блоками и их относительные размеры.

6
задан Ben Page 17 July 2009 в 20:09
поделиться

5 ответов

На мой взгляд, это будет зависеть от того, как взаимодействуют ваши классы. Запускает ли изменение положения мыши объекты в классе модели? или Является ли класс Model независимым от GamePanel и работает только с текущими значениями положения мыши?

Если позже, то в этом случае я согласен с тем, что Джефф сказал до меня. Передайте дескриптор GamePanel классу Model при его создании и позвольте каждой сущности использовать дескриптор для доступа к положению мыши, когда это необходимо. Таким образом, всегда используется обновленное положение мыши.

Если первое, я бы предложил использовать наблюдателей, чтобы класс Model знал, когда значение положения мыши изменилось. Тогда класс модели может использовать тот же дизайн (т.е. позволить классу модели всегда иметь дескриптор класса GamePanel) и получать доступ к текущим значениям в GamePanel. Рохан.

3
ответ дан 10 December 2019 в 00:42
поделиться

Распространенное решение - запускать события. В этом случае GamePanel будет запускать событие, информирующее все заинтересованные (подписанные на событие) объекты (Entity) в Model о новом положении мыши.

Таким образом, GamePanel не нужно явно знать, какие Entities сообщить, а Entities нет необходимости хранить экземпляр GamePanel.

Мой совет: читайте о слушателях событий. (Java.util)

3
ответ дан 10 December 2019 в 00:42
поделиться

Всегда ли модели нужно знать, где находится мышь. IE: Вам нужно положение мыши при каждом обновлении или только в определенных точках.

Если вам это нужно в каждой точке или во время каждого обновления, тогда либо решение, которое вы задокументировали, либо любое другое решение здесь должно быть надежным.

Если он вам нужен только в определенных точках, берите его только тогда. (IE: если ваша игра реагирует на щелчки мыши, делайте что-нибудь при щелчке.) Значение Прочтите о прослушивателях событий.

Удачи! Надеюсь, это поможет.

1
ответ дан 10 December 2019 в 00:42
поделиться

Вы всегда можете сделать текущие координаты общедоступным свойством GamePanel, чтобы сущности / модели могли просто получить к нему доступ оттуда.

2
ответ дан 10 December 2019 в 00:42
поделиться

Если вы хотите опросить текущую позицию мыши, вы можете запустить этот фрагмент кода в потоке отправки событий в любое время, когда захотите:

Point pt = MouseInfo.getPointerInfo().getLocation();
Point cpt = GamePanel.getLocationOnScreen();
Point rel = new Point(pt.x - cpt.x, pt.y - cpt.y);

И rel содержит относительное положение мыши.

В качестве альтернативы вы можете взглянуть на JInput , поскольку он предназначен для работы с клавиатурой / мышью / любыми вводами.

1
ответ дан 10 December 2019 в 00:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: