Norfin85

Norfin85

На Пикабу
поставил 158 плюсов и 156 минусов
отредактировал 0 постов
проголосовал за 0 редактирований
Награды:
10 лет на Пикабу
32К рейтинг 18 подписчиков 3 подписки 342 поста 46 в горячем

Немного разогретого пукана по поводу сериала Нашествие варваров (Barbarians Rising)

Что за привычка у американских сериалов создавать каких-то супергероев...сравните, как в сериале Викинги показаны лидеры, и эту отрыжку американского кинематографа...

А чья это фотография у тебя в телефоне?

А чья это фотография у тебя в телефоне? Кот, Ревность, Юмор
Показать полностью 1

Интересная статья для тех, кто программирует в IntelliJ IDEA

http://info.javarush.ru/idea_help/2013/10/29/%D0%A0%D1%83%D0...


http://info.javarush.ru/idea_help/2013/08/07/IntelliJ-IDEA-%...


http://stackoverflow.com/questions/3320764/how-to-make-syste...

Реализация программы TankBattle с использованием Swing. Часть первая - создание окна приложения.

О да, я вернулся..)

Реализация программы TankBattle с использованием Swing. Часть первая - создание окна приложения. Java, Задача, Обучение, Программирование, Длиннопост

Проект находится по адресу: https://github.com/Norfin85/TankBattle

Вся графика реализована в файле: Graphics.java.

Открытие окна происходит через стандартную для Swing процедуру:

Реализация программы TankBattle с использованием Swing. Часть первая - создание окна приложения. Java, Задача, Обучение, Программирование, Длиннопост

С помощью SwingUtilities.invokeLater мы помещаем создание окна в очередь событий - event dispatch thread.

Основное окно использует компоновщик BoxLayout:

frame.setLayout(new BoxLayout(frame.getContentPane(), BoxLayout.Y_AXIS)

и размещает панели сверху-вниз.

Внутрь окна мы помещаем две панели: MainPanel и BottomPanel, которые будут содержать более детальные блоки программы, о чем будет рассказано ниже.


Примерная структура любого окна в Swing:

Реализация программы TankBattle с использованием Swing. Часть первая - создание окна приложения. Java, Задача, Обучение, Программирование, Длиннопост

Структура нашего окна:

Реализация программы TankBattle с использованием Swing. Часть первая - создание окна приложения. Java, Задача, Обучение, Программирование, Длиннопост

Параметры нашего окна определяются следующими командами:

Реализация программы TankBattle с использованием Swing. Часть первая - создание окна приложения. Java, Задача, Обучение, Программирование, Длиннопост

Структура MainPanel:

Реализация программы TankBattle с использованием Swing. Часть первая - создание окна приложения. Java, Задача, Обучение, Программирование, Длиннопост

На первый взгляд мудрено....

Реализация программы TankBattle с использованием Swing. Часть первая - создание окна приложения. Java, Задача, Обучение, Программирование, Длиннопост

Рассмотрим более детально.

Внутрь MainPanel помещаются три панели - LeftPanel, CenterPanel, RightPanel, для них задаются конкретные размеры с помощью функции setPreferredSize(new Dimension(X, Y)).  Дальше простая арифметика - сумма параметров по X и Y должна равняться параметрам

X и Y MainPanel.

Внутри MainPanel используется тоже компоновщик BoxLayout, но уже по оси X, размещающий панели слева-направо.

Внутрь панелей вносятся элементы. Для позиционирования элементов я выбрал способ - создание EmptyBorder(int top, int left, int bottom, int right) и задание конкретных размеров элементов через функцию setPreferredSize(new Dimension(X, Y)).


В BottomPanel помещаются две кнопки и разносятся по сторонам через:

setAlignmentX(Component.RIGHT_ALIGNMENT)

setAlignmentX(Component.LEFT_ALIGNMENT)


Внутри элементов TextPanel размещаются элементы JTextPane. Использование данных элементов позволило стилизовать текст через следующую конструкцию:

Реализация программы TankBattle с использованием Swing. Часть первая - создание окна приложения. Java, Задача, Обучение, Программирование, Длиннопост

StyleConstants.setAlignment(simpleAttributeSet, StyleConstants.ALIGN_LEFT)- выравнивание по левому краю.

StyleConstants.setFontSize(simpleAttributeSet, 12) - размер шрифта.

StyleConstants.setFontFamily(simpleAttributeSet, "Times New Roman, cursive") - семейство шрифта.

simpleAttributeSet.addAttribute(StyleConstants.CharacterConstants.Foreground, new Color(112, 126, 173)) - цвет шрифта.


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

Реализация программы TankBattle с использованием Swing. Часть первая - создание окна приложения. Java, Задача, Обучение, Программирование, Длиннопост

setMinimum(0) - минимальное значение в прогресс баре.

setMaximum(100) - максимальное значение.

setValue(100) - текущее значение.

setString("Легкий танк СССР " + (i + 1)) - аннотация.


BattleList (JTextPane) мы помещаем внутрь JScrollBar и назначаем параметр jsp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS)  - чтобы всегда отражался скролл.


Все блоки графики имеют статус private, т.е. изменения возможны только через специальный интерфейс - обычные правила хорошего тона в программировании (если судить по книжкам).


public static void setButton(String text, Boolean setActive) - меняет нашу кнопку buttom (меняет текст и делает активно/неактивной).


public static void setHealthes(Tank ussrTank, Tank germanTank) - меняет параметры здоровья в текстовых блоках слева и справа.


public static void setCurrentBattle(Tank ussrTank, Tank germanTank) - устанавливает текст текущей битвы в текстовом блоке CurrentBattle.


public static void updateFrame() - обновляем окно.


public static void updateBattleList() - обновляем battleList.


public static void startBattle() - запускает бой.


public static void setTankHealth(int id, int percent)  - устанавливает значение здоровья танка в соответствующем JProgressBar.


public static void showLog() - отображает окно лога битвы.


Лог битвы выведен на отдельную кнопку, открывающую окно лога, состоящего из JFrame и помещенного в него JScrollBar с вложенным в него JTextPane.


За сим на сегодня все..) Продолжение следует...)

Реализация программы TankBattle с использованием Swing. Часть первая - создание окна приложения. Java, Задача, Обучение, Программирование, Длиннопост
Показать полностью 9

Посмотрел на выходных сериал westworld...

Посмотрел на выходных сериал westworld... Сериалы, Юмор, Мнение

Отдельное спасибо кубикам за перевод, атмосферу создал)))

Странное совпадение...

Сравните песни:

Pete and the Pirates "Blood Gets Thin"

И

КиШ "Паника в селе".


Перепевка?

Не получается решить проблему

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

https://github.com/Norfin85/TankBattle

Много чего нового - добавлена графика, изменена система боя и т.д.

Буду благодарен за помощь.)

Отличная реклама маски для удаления прыщей...

Отличная реклама маски для удаления прыщей... Реклама, Ночной кошмар, Юмор

Еще и банк можно ограбить...

Отличная работа, все прочитано!