Java Качели без выдвижения - PullRequest
0 голосов
/ 26 мая 2020

Я пытаюсь создать свою первую 2D-игру в Java, и я застрял на самом последнем.
Я уже сделал все c логики в игре, и у меня есть класс с именем World, который содержит всю информацию о мире, делает повороты.
Проблема возникает, когда я пытаюсь реализовать некоторые методы, чтобы показать мир в GUI - я имею в виду: у меня есть родительский класс: World, а затем у меня есть дочерние классы WorldGraphic, в которых я хочу показать прекрасный мир, с изображениями и т.д. c и WorldStrategy, где упоминаются только самые важные аспекты (не так красиво, но много я бы сказал, более `` ясный ''), и я хотел бы, чтобы они были заменены в пользовательском интерфейсе.
И я решил выбрать Java библиотеку Swing для этого, но я столкнулся с большой проблемой - я не могу наследовать как World, так и JFrame (что было необходимо для выполнения GUI в моем руководстве по свингам), есть ли способ пропустить его? данные для печати, но я ч есть сомнения в его эффективности, я хотел бы сохранить его частным (защищенным) и сделать это каким-то образом на основе наследования, так как мой GUI также будет иметь некоторые другие варианты (возможно, мне придется сделать много методов publi c )

Мой вопрос больше о том, как должна выглядеть структура моего документа (так что код, вероятно, бесполезен). Как я уже упоминал, я новичок в Java, и я не уверен, правильно ли внезапно сделать каждый метод publi c только для того, чтобы ОДИН из моих классов (на самом деле GUI) мог их использовать.

1 Ответ

2 голосов

У вас есть несколько вопросов в одном вашем вопросе, который здесь разрешен не полностью, но, тем не менее, позвольте мне попытаться подойти к основным из них.

  • Прежде всего, о необходимости расширения JFrame: В этом нет необходимости и обычно не рекомендуется. Намного лучше использовать JFrames (и другие компоненты GUI) там, где это необходимо, но не расширять их без необходимости. Расширьте компонент, если вы расширяете его базовое поведение, другими словами, если вы переопределяете такой метод, как метод JPanel protected void paintComponent(Graphics g).
  • Должны ли WorldGraphi c и WorldStrategy расширять World? Не уверен, что это нужно или желательно. Похоже, что вы пытаетесь отделить часть GUI вашей программы, ее «представление», от ее logi c, «модели», и если да, то оба аспекта не нуждаются и, вероятно, не должны расширяться. из родительского класса, а скорее должен быть подключен классом контроллера.
  • Что касается, «Как я уже упоминал, я новичок в Java и не уверен, правильно ли внезапно сделать каждый метод publi c так, чтобы ОДИН из моих классов (на самом деле GUI) мог их использовать. «: создайте метод publi c только в том случае, если он должен быть вызван внешним классом.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...