Українська
Завдання
Відповідно до номера свого варіанта виконайте завдання обраного рівня складності.
Варіанти
Варіант 1. Калькулятор
1. Початковий рівень. Створити самостійний JavaFX-застосунок «Калькулятор»: сітка кнопок, історія обчислень, керування з клавіатури. Реалізувати основну дію через форму з підписаними полями й кнопкою, показати результат або помилку на тому самому екрані. Використати компонування без абсолютних координат і перевірити порожнє введення та межі значень. Ввести два скінченні числа й операцію +, −, × або ÷; показати результат, ділення на нуль відхилити.
2. Базовий рівень. Створити самостійний JavaFX-застосунок «Калькулятор»: сітка кнопок, історія обчислень, керування з клавіатури. Реалізувати повний сценарій теми, список історії дій зі стабільними ідентифікаторами, вибір режиму та діалог підтвердження очищення. Винести обчислення в окремий клас, додати CSS, роботу Enter і зміну розміру вікна; скасування діалогу залишає дані без змін. Ввести два скінченні числа й операцію +, −, × або ÷; показати результат, ділення на нуль відхилити.
3. Високий рівень. Створити самостійний JavaFX-застосунок «Калькулятор»: сітка кнопок, історія обчислень, керування з клавіатури. Відділити модель від UI, реалізувати FXML-форму, перевірку введення, збереження налаштувань і повідомлення про помилки. Додати --help, --config=path, --check=field:value,...; останній режим виконує предметну перевірку без відкриття GUI та друкує вирівняну таблицю з підсумком. Помилки до stderr, коди 0/2/1. Для звичайного запуску показати GUI; додати JUnit-тести моделі, перевірити клавіатурний фокус і підготувати локальний runtime без встановлення в систему. Ввести два скінченні числа й операцію +, −, × або ÷; показати результат, ділення на нуль відхилити.
Варіант 2. Конвертер одиниць
1. Початковий рівень. Створити самостійний JavaFX-застосунок «Конвертер одиниць»: категорії в ComboBox, миттєве перетворення, перевірка введення. Реалізувати основну дію через форму з підписаними полями й кнопкою, показати результат або помилку на тому самому екрані. Використати компонування без абсолютних координат і перевірити порожнє введення та межі значень. Перетворити довжину≥0 між m, cm і km; показати значення до 3 знаків, невідомі одиниці не дозволяти.
2. Базовий рівень. Створити самостійний JavaFX-застосунок «Конвертер одиниць»: категорії в ComboBox, миттєве перетворення, перевірка введення. Реалізувати повний сценарій теми, список історії дій зі стабільними ідентифікаторами, вибір режиму та діалог підтвердження очищення. Винести обчислення в окремий клас, додати CSS, роботу Enter і зміну розміру вікна; скасування діалогу залишає дані без змін. Перетворити довжину≥0 між m, cm і km; показати значення до 3 знаків, невідомі одиниці не дозволяти.
3. Високий рівень. Створити самостійний JavaFX-застосунок «Конвертер одиниць»: категорії в ComboBox, миттєве перетворення, перевірка введення. Відділити модель від UI, реалізувати FXML-форму, перевірку введення, збереження налаштувань і повідомлення про помилки. Додати --help, --config=path, --check=field:value,...; останній режим виконує предметну перевірку без відкриття GUI та друкує вирівняну таблицю з підсумком. Помилки до stderr, коди 0/2/1. Для звичайного запуску показати GUI; додати JUnit-тести моделі, перевірити клавіатурний фокус і підготувати локальний runtime без встановлення в систему. Перетворити довжину≥0 між m, cm і km; показати значення до 3 знаків, невідомі одиниці не дозволяти.
Варіант 3. Таймер Помодоро
1. Початковий рівень. Створити самостійний JavaFX-застосунок «Таймер Помодоро»: Timeline, перемикання фаз, прогрес і сповіщення. Реалізувати основну дію через форму з підписаними полями й кнопкою, показати результат або помилку на тому самому екрані. Використати компонування без абсолютних координат і перевірити порожнє введення та межі значень. Відлічувати 25 хв роботи і 5 хв перерви; Start/Pause/Reset змінюють стан, повторний Start не створює другий таймер.
2. Базовий рівень. Створити самостійний JavaFX-застосунок «Таймер Помодоро»: Timeline, перемикання фаз, прогрес і сповіщення. Реалізувати повний сценарій теми, список історії дій зі стабільними ідентифікаторами, вибір режиму та діалог підтвердження очищення. Винести обчислення в окремий клас, додати CSS, роботу Enter і зміну розміру вікна; скасування діалогу залишає дані без змін. Відлічувати 25 хв роботи і 5 хв перерви; Start/Pause/Reset змінюють стан, повторний Start не створює другий таймер.
3. Високий рівень. Створити самостійний JavaFX-застосунок «Таймер Помодоро»: Timeline, перемикання фаз, прогрес і сповіщення. Відділити модель від UI, реалізувати FXML-форму, перевірку введення, збереження налаштувань і повідомлення про помилки. Додати --help, --config=path, --check=field:value,...; останній режим виконує предметну перевірку без відкриття GUI та друкує вирівняну таблицю з підсумком. Помилки до stderr, коди 0/2/1. Для звичайного запуску показати GUI; додати JUnit-тести моделі, перевірити клавіатурний фокус і підготувати локальний runtime без встановлення в систему. Відлічувати 25 хв роботи і 5 хв перерви; Start/Pause/Reset змінюють стан, повторний Start не створює другий таймер.
Варіант 4. Графічний редактор
1. Початковий рівень. Створити самостійний JavaFX-застосунок «Графічний редактор»: малювання на Canvas, кольори, товщина, збереження PNG. Реалізувати основну дію через форму з підписаними полями й кнопкою, показати результат або помилку на тому самому екрані. Використати компонування без абсолютних координат і перевірити порожнє введення та межі значень. Малювати штрихи на Canvas кольором і товщиною 1..20; Clear очищує полотно, Undo прибирає останній штрих.
2. Базовий рівень. Створити самостійний JavaFX-застосунок «Графічний редактор»: малювання на Canvas, кольори, товщина, збереження PNG. Реалізувати повний сценарій теми, список історії дій зі стабільними ідентифікаторами, вибір режиму та діалог підтвердження очищення. Винести обчислення в окремий клас, додати CSS, роботу Enter і зміну розміру вікна; скасування діалогу залишає дані без змін. Малювати штрихи на Canvas кольором і товщиною 1..20; Clear очищує полотно, Undo прибирає останній штрих.
3. Високий рівень. Створити самостійний JavaFX-застосунок «Графічний редактор»: малювання на Canvas, кольори, товщина, збереження PNG. Відділити модель від UI, реалізувати FXML-форму, перевірку введення, збереження налаштувань і повідомлення про помилки. Додати --help, --config=path, --check=field:value,...; останній режим виконує предметну перевірку без відкриття GUI та друкує вирівняну таблицю з підсумком. Помилки до stderr, коди 0/2/1. Для звичайного запуску показати GUI; додати JUnit-тести моделі, перевірити клавіатурний фокус і підготувати локальний runtime без встановлення в систему. Малювати штрихи на Canvas кольором і товщиною 1..20; Clear очищує полотно, Undo прибирає останній штрих.
Варіант 5. Хрестики-нулики
1. Початковий рівень. Створити самостійний JavaFX-застосунок «Хрестики-нулики»: поле кнопок, перевірка перемоги, рахунок партій. Реалізувати основну дію через форму з підписаними полями й кнопкою, показати результат або помилку на тому самому екрані. Використати компонування без абсолютних координат і перевірити порожнє введення та межі значень. На полі 3×3 чергувати X/O, показати переможця або нічию; зайнята клітинка й хід після завершення недоступні.
2. Базовий рівень. Створити самостійний JavaFX-застосунок «Хрестики-нулики»: поле кнопок, перевірка перемоги, рахунок партій. Реалізувати повний сценарій теми, список історії дій зі стабільними ідентифікаторами, вибір режиму та діалог підтвердження очищення. Винести обчислення в окремий клас, додати CSS, роботу Enter і зміну розміру вікна; скасування діалогу залишає дані без змін. На полі 3×3 чергувати X/O, показати переможця або нічию; зайнята клітинка й хід після завершення недоступні.
3. Високий рівень. Створити самостійний JavaFX-застосунок «Хрестики-нулики»: поле кнопок, перевірка перемоги, рахунок партій. Відділити модель від UI, реалізувати FXML-форму, перевірку введення, збереження налаштувань і повідомлення про помилки. Додати --help, --config=path, --check=field:value,...; останній режим виконує предметну перевірку без відкриття GUI та друкує вирівняну таблицю з підсумком. Помилки до stderr, коди 0/2/1. Для звичайного запуску показати GUI; додати JUnit-тести моделі, перевірити клавіатурний фокус і підготувати локальний runtime без встановлення в систему. На полі 3×3 чергувати X/O, показати переможця або нічию; зайнята клітинка й хід після завершення недоступні.
Варіант 6. Анкета реєстрації
1. Початковий рівень. Створити самостійний JavaFX-застосунок «Анкета реєстрації»: форма з перевіркою полів і підсумковим діалогом. Реалізувати основну дію через форму з підписаними полями й кнопкою, показати результат або помилку на тому самому екрані. Використати компонування без абсолютних координат і перевірити порожнє введення та межі значень. Ввести ім’я 1..40 символів, email із одним @ і згоду з правилами; підтвердження показує підсумок лише для коректних даних.
2. Базовий рівень. Створити самостійний JavaFX-застосунок «Анкета реєстрації»: форма з перевіркою полів і підсумковим діалогом. Реалізувати повний сценарій теми, список історії дій зі стабільними ідентифікаторами, вибір режиму та діалог підтвердження очищення. Винести обчислення в окремий клас, додати CSS, роботу Enter і зміну розміру вікна; скасування діалогу залишає дані без змін. Ввести ім’я 1..40 символів, email із одним @ і згоду з правилами; підтвердження показує підсумок лише для коректних даних.
3. Високий рівень. Створити самостійний JavaFX-застосунок «Анкета реєстрації»: форма з перевіркою полів і підсумковим діалогом. Відділити модель від UI, реалізувати FXML-форму, перевірку введення, збереження налаштувань і повідомлення про помилки. Додати --help, --config=path, --check=field:value,...; останній режим виконує предметну перевірку без відкриття GUI та друкує вирівняну таблицю з підсумком. Помилки до stderr, коди 0/2/1. Для звичайного запуску показати GUI; додати JUnit-тести моделі, перевірити клавіатурний фокус і підготувати локальний runtime без встановлення в систему. Ввести ім’я 1..40 символів, email із одним @ і згоду з правилами; підтвердження показує підсумок лише для коректних даних.
Варіант 7. Аналоговий годинник
1. Початковий рівень. Створити самостійний JavaFX-застосунок «Аналоговий годинник»: годинник на Canvas з анімацією стрілок. Реалізувати основну дію через форму з підписаними полями й кнопкою, показати результат або помилку на тому самому екрані. Використати компонування без абсолютних координат і перевірити порожнє введення та межі значень. Показувати системний локальний час стрілками годин, хвилин і секунд; оновлювати щосекунди, зупинити анімацію при закритті.
2. Базовий рівень. Створити самостійний JavaFX-застосунок «Аналоговий годинник»: годинник на Canvas з анімацією стрілок. Реалізувати повний сценарій теми, список історії дій зі стабільними ідентифікаторами, вибір режиму та діалог підтвердження очищення. Винести обчислення в окремий клас, додати CSS, роботу Enter і зміну розміру вікна; скасування діалогу залишає дані без змін. Показувати системний локальний час стрілками годин, хвилин і секунд; оновлювати щосекунди, зупинити анімацію при закритті.
3. Високий рівень. Створити самостійний JavaFX-застосунок «Аналоговий годинник»: годинник на Canvas з анімацією стрілок. Відділити модель від UI, реалізувати FXML-форму, перевірку введення, збереження налаштувань і повідомлення про помилки. Додати --help, --config=path, --check=field:value,...; останній режим виконує предметну перевірку без відкриття GUI та друкує вирівняну таблицю з підсумком. Помилки до stderr, коди 0/2/1. Для звичайного запуску показати GUI; додати JUnit-тести моделі, перевірити клавіатурний фокус і підготувати локальний runtime без встановлення в систему. Показувати системний локальний час стрілками годин, хвилин і секунд; оновлювати щосекунди, зупинити анімацію при закритті.
Варіант 8. Переглядач зображень
1. Початковий рівень. Створити самостійний JavaFX-застосунок «Переглядач зображень»: FileChooser, масштабування, слайд-шоу теки. Реалізувати основну дію через форму з підписаними полями й кнопкою, показати результат або помилку на тому самому екрані. Використати компонування без абсолютних координат і перевірити порожнє введення та межі значень. Відкрити PNG/JPEG і змінювати масштаб 25..200 %; зберігати пропорції, скасування вибору не змінює зображення.
2. Базовий рівень. Створити самостійний JavaFX-застосунок «Переглядач зображень»: FileChooser, масштабування, слайд-шоу теки. Реалізувати повний сценарій теми, список історії дій зі стабільними ідентифікаторами, вибір режиму та діалог підтвердження очищення. Винести обчислення в окремий клас, додати CSS, роботу Enter і зміну розміру вікна; скасування діалогу залишає дані без змін. Відкрити PNG/JPEG і змінювати масштаб 25..200 %; зберігати пропорції, скасування вибору не змінює зображення.
3. Високий рівень. Створити самостійний JavaFX-застосунок «Переглядач зображень»: FileChooser, масштабування, слайд-шоу теки. Відділити модель від UI, реалізувати FXML-форму, перевірку введення, збереження налаштувань і повідомлення про помилки. Додати --help, --config=path, --check=field:value,...; останній режим виконує предметну перевірку без відкриття GUI та друкує вирівняну таблицю з підсумком. Помилки до stderr, коди 0/2/1. Для звичайного запуску показати GUI; додати JUnit-тести моделі, перевірити клавіатурний фокус і підготувати локальний runtime без встановлення в систему. Відкрити PNG/JPEG і змінювати масштаб 25..200 %; зберігати пропорції, скасування вибору не змінює зображення.
Варіант 9. Текстовий редактор
1. Початковий рівень. Створити самостійний JavaFX-застосунок «Текстовий редактор»: TextArea, меню, відкриття та збереження файлів. Реалізувати основну дію через форму з підписаними полями й кнопкою, показати результат або помилку на тому самому екрані. Використати компонування без абсолютних координат і перевірити порожнє введення та межі значень. Редагувати UTF-8 текст, відкривати й зберігати файл; перед втратою змін запитати збереження, Cancel залишає документ.
2. Базовий рівень. Створити самостійний JavaFX-застосунок «Текстовий редактор»: TextArea, меню, відкриття та збереження файлів. Реалізувати повний сценарій теми, список історії дій зі стабільними ідентифікаторами, вибір режиму та діалог підтвердження очищення. Винести обчислення в окремий клас, додати CSS, роботу Enter і зміну розміру вікна; скасування діалогу залишає дані без змін. Редагувати UTF-8 текст, відкривати й зберігати файл; перед втратою змін запитати збереження, Cancel залишає документ.
3. Високий рівень. Створити самостійний JavaFX-застосунок «Текстовий редактор»: TextArea, меню, відкриття та збереження файлів. Відділити модель від UI, реалізувати FXML-форму, перевірку введення, збереження налаштувань і повідомлення про помилки. Додати --help, --config=path, --check=field:value,...; останній режим виконує предметну перевірку без відкриття GUI та друкує вирівняну таблицю з підсумком. Помилки до stderr, коди 0/2/1. Для звичайного запуску показати GUI; додати JUnit-тести моделі, перевірити клавіатурний фокус і підготувати локальний runtime без встановлення в систему. Редагувати UTF-8 текст, відкривати й зберігати файл; перед втратою змін запитати збереження, Cancel залишає документ.
Варіант 10. Калькулятор ІМТ
1. Початковий рівень. Створити самостійний JavaFX-застосунок «Калькулятор ІМТ»: повзунки зросту й ваги, кольорова шкала результату. Реалізувати основну дію через форму з підписаними полями й кнопкою, показати результат або помилку на тому самому екрані. Використати компонування без абсолютних координат і перевірити порожнє введення та межі значень. Ввести масу 1..500 кг і зріст 0,5..2,5 м; показати маса/зріст² до 1 знака без медичних рекомендацій.
2. Базовий рівень. Створити самостійний JavaFX-застосунок «Калькулятор ІМТ»: повзунки зросту й ваги, кольорова шкала результату. Реалізувати повний сценарій теми, список історії дій зі стабільними ідентифікаторами, вибір режиму та діалог підтвердження очищення. Винести обчислення в окремий клас, додати CSS, роботу Enter і зміну розміру вікна; скасування діалогу залишає дані без змін. Ввести масу 1..500 кг і зріст 0,5..2,5 м; показати маса/зріст² до 1 знака без медичних рекомендацій.
3. Високий рівень. Створити самостійний JavaFX-застосунок «Калькулятор ІМТ»: повзунки зросту й ваги, кольорова шкала результату. Відділити модель від UI, реалізувати FXML-форму, перевірку введення, збереження налаштувань і повідомлення про помилки. Додати --help, --config=path, --check=field:value,...; останній режим виконує предметну перевірку без відкриття GUI та друкує вирівняну таблицю з підсумком. Помилки до stderr, коди 0/2/1. Для звичайного запуску показати GUI; додати JUnit-тести моделі, перевірити клавіатурний фокус і підготувати локальний runtime без встановлення в систему. Ввести масу 1..500 кг і зріст 0,5..2,5 м; показати маса/зріст² до 1 знака без медичних рекомендацій.
Варіант 11. Список справ
1. Початковий рівень. Створити самостійний JavaFX-застосунок «Список справ»: ListView з відмітками, фільтрами та збереженням у файл. Реалізувати основну дію через форму з підписаними полями й кнопкою, показати результат або помилку на тому самому екрані. Використати компонування без абсолютних координат і перевірити порожнє введення та межі значень. Додавати непорожню справу, перемикати виконання й видаляти вибрану; показати число незавершених, без вибору нічого не видаляти.
2. Базовий рівень. Створити самостійний JavaFX-застосунок «Список справ»: ListView з відмітками, фільтрами та збереженням у файл. Реалізувати повний сценарій теми, список історії дій зі стабільними ідентифікаторами, вибір режиму та діалог підтвердження очищення. Винести обчислення в окремий клас, додати CSS, роботу Enter і зміну розміру вікна; скасування діалогу залишає дані без змін. Додавати непорожню справу, перемикати виконання й видаляти вибрану; показати число незавершених, без вибору нічого не видаляти.
3. Високий рівень. Створити самостійний JavaFX-застосунок «Список справ»: ListView з відмітками, фільтрами та збереженням у файл. Відділити модель від UI, реалізувати FXML-форму, перевірку введення, збереження налаштувань і повідомлення про помилки. Додати --help, --config=path, --check=field:value,...; останній режим виконує предметну перевірку без відкриття GUI та друкує вирівняну таблицю з підсумком. Помилки до stderr, коди 0/2/1. Для звичайного запуску показати GUI; додати JUnit-тести моделі, перевірити клавіатурний фокус і підготувати локальний runtime без встановлення в систему. Додавати непорожню справу, перемикати виконання й видаляти вибрану; показати число незавершених, без вибору нічого не видаляти.
Варіант 12. Вгадай число
1. Початковий рівень. Створити самостійний JavaFX-застосунок «Вгадай число»: графічна гра з рекордами та рівнями складності. Реалізувати основну дію через форму з підписаними полями й кнопкою, показати результат або помилку на тому самому екрані. Використати компонування без абсолютних координат і перевірити порожнє введення та межі значень. Згенерувати ціле 1..100, приймати здогадки й показувати більше/менше та число спроб; позадіапазонний ввід не рахувати.
2. Базовий рівень. Створити самостійний JavaFX-застосунок «Вгадай число»: графічна гра з рекордами та рівнями складності. Реалізувати повний сценарій теми, список історії дій зі стабільними ідентифікаторами, вибір режиму та діалог підтвердження очищення. Винести обчислення в окремий клас, додати CSS, роботу Enter і зміну розміру вікна; скасування діалогу залишає дані без змін. Згенерувати ціле 1..100, приймати здогадки й показувати більше/менше та число спроб; позадіапазонний ввід не рахувати.
3. Високий рівень. Створити самостійний JavaFX-застосунок «Вгадай число»: графічна гра з рекордами та рівнями складності. Відділити модель від UI, реалізувати FXML-форму, перевірку введення, збереження налаштувань і повідомлення про помилки. Додати --help, --config=path, --check=field:value,...; останній режим виконує предметну перевірку без відкриття GUI та друкує вирівняну таблицю з підсумком. Помилки до stderr, коди 0/2/1. Для звичайного запуску показати GUI; додати JUnit-тести моделі, перевірити клавіатурний фокус і підготувати локальний runtime без встановлення в систему. Згенерувати ціле 1..100, приймати здогадки й показувати більше/менше та число спроб; позадіапазонний ввід не рахувати.
Варіант 13. Кредитний калькулятор
1. Початковий рівень. Створити самостійний JavaFX-застосунок «Кредитний калькулятор»: форма параметрів і таблиця платежів. Реалізувати основну дію через форму з підписаними полями й кнопкою, показати результат або помилку на тому самому екрані. Використати компонування без абсолютних координат і перевірити порожнє введення та межі значень. Ввести P>0, річні відсотки r≥0 і n місяців>0; показати ануїтет P*i/(1-(1+i)^(-n)), i=r/1200, для r=0 використовувати P/n.
2. Базовий рівень. Створити самостійний JavaFX-застосунок «Кредитний калькулятор»: форма параметрів і таблиця платежів. Реалізувати повний сценарій теми, список історії дій зі стабільними ідентифікаторами, вибір режиму та діалог підтвердження очищення. Винести обчислення в окремий клас, додати CSS, роботу Enter і зміну розміру вікна; скасування діалогу залишає дані без змін. Ввести P>0, річні відсотки r≥0 і n місяців>0; показати ануїтет P*i/(1-(1+i)^(-n)), i=r/1200, для r=0 використовувати P/n.
3. Високий рівень. Створити самостійний JavaFX-застосунок «Кредитний калькулятор»: форма параметрів і таблиця платежів. Відділити модель від UI, реалізувати FXML-форму, перевірку введення, збереження налаштувань і повідомлення про помилки. Додати --help, --config=path, --check=field:value,...; останній режим виконує предметну перевірку без відкриття GUI та друкує вирівняну таблицю з підсумком. Помилки до stderr, коди 0/2/1. Для звичайного запуску показати GUI; додати JUnit-тести моделі, перевірити клавіатурний фокус і підготувати локальний runtime без встановлення в систему. Ввести P>0, річні відсотки r≥0 і n місяців>0; показати ануїтет P*i/(1-(1+i)^(-n)), i=r/1200, для r=0 використовувати P/n.
Варіант 14. Світлофор
1. Початковий рівень. Створити самостійний JavaFX-застосунок «Світлофор»: анімація фаз і кнопки ручного керування. Реалізувати основну дію через форму з підписаними полями й кнопкою, показати результат або помилку на тому самому екрані. Використати компонування без абсолютних координат і перевірити порожнє введення та межі значень. Циклічно показувати червоний 5 с, жовтий 2 с, зелений 5 с; Stop заморожує стан, Reset повертає червоний.
2. Базовий рівень. Створити самостійний JavaFX-застосунок «Світлофор»: анімація фаз і кнопки ручного керування. Реалізувати повний сценарій теми, список історії дій зі стабільними ідентифікаторами, вибір режиму та діалог підтвердження очищення. Винести обчислення в окремий клас, додати CSS, роботу Enter і зміну розміру вікна; скасування діалогу залишає дані без змін. Циклічно показувати червоний 5 с, жовтий 2 с, зелений 5 с; Stop заморожує стан, Reset повертає червоний.
3. Високий рівень. Створити самостійний JavaFX-застосунок «Світлофор»: анімація фаз і кнопки ручного керування. Відділити модель від UI, реалізувати FXML-форму, перевірку введення, збереження налаштувань і повідомлення про помилки. Додати --help, --config=path, --check=field:value,...; останній режим виконує предметну перевірку без відкриття GUI та друкує вирівняну таблицю з підсумком. Помилки до stderr, коди 0/2/1. Для звичайного запуску показати GUI; додати JUnit-тести моделі, перевірити клавіатурний фокус і підготувати локальний runtime без встановлення в систему. Циклічно показувати червоний 5 с, жовтий 2 с, зелений 5 с; Stop заморожує стан, Reset повертає червоний.
Варіант 15. Піксель-арт
1. Початковий рівень. Створити самостійний JavaFX-застосунок «Піксель-арт»: сітка клітинок, палітра, експорт малюнка. Реалізувати основну дію через форму з підписаними полями й кнопкою, показати результат або помилку на тому самому екрані. Використати компонування без абсолютних координат і перевірити порожнє введення та межі значень. На сітці 16×16 змінювати колір клітинки вибраним кольором; очистити всі клітинки, експорт зберігає PNG 16×16.
2. Базовий рівень. Створити самостійний JavaFX-застосунок «Піксель-арт»: сітка клітинок, палітра, експорт малюнка. Реалізувати повний сценарій теми, список історії дій зі стабільними ідентифікаторами, вибір режиму та діалог підтвердження очищення. Винести обчислення в окремий клас, додати CSS, роботу Enter і зміну розміру вікна; скасування діалогу залишає дані без змін. На сітці 16×16 змінювати колір клітинки вибраним кольором; очистити всі клітинки, експорт зберігає PNG 16×16.
3. Високий рівень. Створити самостійний JavaFX-застосунок «Піксель-арт»: сітка клітинок, палітра, експорт малюнка. Відділити модель від UI, реалізувати FXML-форму, перевірку введення, збереження налаштувань і повідомлення про помилки. Додати --help, --config=path, --check=field:value,...; останній режим виконує предметну перевірку без відкриття GUI та друкує вирівняну таблицю з підсумком. Помилки до stderr, коди 0/2/1. Для звичайного запуску показати GUI; додати JUnit-тести моделі, перевірити клавіатурний фокус і підготувати локальний runtime без встановлення в систему. На сітці 16×16 змінювати колір клітинки вибраним кольором; очистити всі клітинки, експорт зберігає PNG 16×16.
Варіант 16. Обмінник валют
1. Початковий рівень. Створити самостійний JavaFX-застосунок «Обмінник валют»: курси, обмін, історія операцій у списку. Реалізувати основну дію через форму з підписаними полями й кнопкою, показати результат або помилку на тому самому екрані. Використати компонування без абсолютних координат і перевірити порожнє введення та межі значень. Ввести UAH≥0 і додатний ручний курс UAH/EUR; показати EUR до 2 знаків HALF_UP, нульовий курс відхилити.
2. Базовий рівень. Створити самостійний JavaFX-застосунок «Обмінник валют»: курси, обмін, історія операцій у списку. Реалізувати повний сценарій теми, список історії дій зі стабільними ідентифікаторами, вибір режиму та діалог підтвердження очищення. Винести обчислення в окремий клас, додати CSS, роботу Enter і зміну розміру вікна; скасування діалогу залишає дані без змін. Ввести UAH≥0 і додатний ручний курс UAH/EUR; показати EUR до 2 знаків HALF_UP, нульовий курс відхилити.
3. Високий рівень. Створити самостійний JavaFX-застосунок «Обмінник валют»: курси, обмін, історія операцій у списку. Відділити модель від UI, реалізувати FXML-форму, перевірку введення, збереження налаштувань і повідомлення про помилки. Додати --help, --config=path, --check=field:value,...; останній режим виконує предметну перевірку без відкриття GUI та друкує вирівняну таблицю з підсумком. Помилки до stderr, коди 0/2/1. Для звичайного запуску показати GUI; додати JUnit-тести моделі, перевірити клавіатурний фокус і підготувати локальний runtime без встановлення в систему. Ввести UAH≥0 і додатний ручний курс UAH/EUR; показати EUR до 2 знаків HALF_UP, нульовий курс відхилити.
Варіант 17. Змійка
1. Початковий рівень. Створити самостійний JavaFX-застосунок «Змійка»: AnimationTimer, керування клавіатурою, рахунок і швидкість. Реалізувати основну дію через форму з підписаними полями й кнопкою, показати результат або помилку на тому самому екрані. Використати компонування без абсолютних координат і перевірити порожнє введення та межі значень. На полі 20×20 рухати змійку щокроку на клітинку; їжа додає сегмент, зіткнення завершує гру, розворот на 180° заборонити.
2. Базовий рівень. Створити самостійний JavaFX-застосунок «Змійка»: AnimationTimer, керування клавіатурою, рахунок і швидкість. Реалізувати повний сценарій теми, список історії дій зі стабільними ідентифікаторами, вибір режиму та діалог підтвердження очищення. Винести обчислення в окремий клас, додати CSS, роботу Enter і зміну розміру вікна; скасування діалогу залишає дані без змін. На полі 20×20 рухати змійку щокроку на клітинку; їжа додає сегмент, зіткнення завершує гру, розворот на 180° заборонити.
3. Високий рівень. Створити самостійний JavaFX-застосунок «Змійка»: AnimationTimer, керування клавіатурою, рахунок і швидкість. Відділити модель від UI, реалізувати FXML-форму, перевірку введення, збереження налаштувань і повідомлення про помилки. Додати --help, --config=path, --check=field:value,...; останній режим виконує предметну перевірку без відкриття GUI та друкує вирівняну таблицю з підсумком. Помилки до stderr, коди 0/2/1. Для звичайного запуску показати GUI; додати JUnit-тести моделі, перевірити клавіатурний фокус і підготувати локальний runtime без встановлення в систему. На полі 20×20 рухати змійку щокроку на клітинку; їжа додає сегмент, зіткнення завершує гру, розворот на 180° заборонити.
Варіант 18. Замовлення піци
1. Початковий рівень. Створити самостійний JavaFX-застосунок «Замовлення піци»: CheckBox, RadioButton, розрахунок вартості. Реалізувати основну дію через форму з підписаними полями й кнопкою, показати результат або помилку на тому самому екрані. Використати компонування без абсолютних координат і перевірити порожнє введення та межі значень. Обрати діаметр 25/30/35 см з цінами 150/200/250 грн і добавки сир 30, гриби 20; показати суму та склад.
2. Базовий рівень. Створити самостійний JavaFX-застосунок «Замовлення піци»: CheckBox, RadioButton, розрахунок вартості. Реалізувати повний сценарій теми, список історії дій зі стабільними ідентифікаторами, вибір режиму та діалог підтвердження очищення. Винести обчислення в окремий клас, додати CSS, роботу Enter і зміну розміру вікна; скасування діалогу залишає дані без змін. Обрати діаметр 25/30/35 см з цінами 150/200/250 грн і добавки сир 30, гриби 20; показати суму та склад.
3. Високий рівень. Створити самостійний JavaFX-застосунок «Замовлення піци»: CheckBox, RadioButton, розрахунок вартості. Відділити модель від UI, реалізувати FXML-форму, перевірку введення, збереження налаштувань і повідомлення про помилки. Додати --help, --config=path, --check=field:value,...; останній режим виконує предметну перевірку без відкриття GUI та друкує вирівняну таблицю з підсумком. Помилки до stderr, коди 0/2/1. Для звичайного запуску показати GUI; додати JUnit-тести моделі, перевірити клавіатурний фокус і підготувати локальний runtime без встановлення в систему. Обрати діаметр 25/30/35 см з цінами 150/200/250 грн і добавки сир 30, гриби 20; показати суму та склад.
Варіант 19. Секундомір
1. Початковий рівень. Створити самостійний JavaFX-застосунок «Секундомір»: кола, пауза, експорт результатів у файл. Реалізувати основну дію через форму з підписаними полями й кнопкою, показати результат або помилку на тому самому екрані. Використати компонування без абсолютних координат і перевірити порожнє введення та межі значень. Start/Pause/Reset керують виміром монотонного часу; показати хвилини, секунди й соті, повторний Start не прискорює відлік.
2. Базовий рівень. Створити самостійний JavaFX-застосунок «Секундомір»: кола, пауза, експорт результатів у файл. Реалізувати повний сценарій теми, список історії дій зі стабільними ідентифікаторами, вибір режиму та діалог підтвердження очищення. Винести обчислення в окремий клас, додати CSS, роботу Enter і зміну розміру вікна; скасування діалогу залишає дані без змін. Start/Pause/Reset керують виміром монотонного часу; показати хвилини, секунди й соті, повторний Start не прискорює відлік.
3. Високий рівень. Створити самостійний JavaFX-застосунок «Секундомір»: кола, пауза, експорт результатів у файл. Відділити модель від UI, реалізувати FXML-форму, перевірку введення, збереження налаштувань і повідомлення про помилки. Додати --help, --config=path, --check=field:value,...; останній режим виконує предметну перевірку без відкриття GUI та друкує вирівняну таблицю з підсумком. Помилки до stderr, коди 0/2/1. Для звичайного запуску показати GUI; додати JUnit-тести моделі, перевірити клавіатурний фокус і підготувати локальний runtime без встановлення в систему. Start/Pause/Reset керують виміром монотонного часу; показати хвилини, секунди й соті, повторний Start не прискорює відлік.
Варіант 20. Підбір кольору
1. Початковий рівень. Створити самостійний JavaFX-застосунок «Підбір кольору»: ColorPicker, повзунки RGB, генерування CSS. Реалізувати основну дію через форму з підписаними полями й кнопкою, показати результат або помилку на тому самому екрані. Використати компонування без абсолютних координат і перевірити порожнє введення та межі значень. Три Slider 0..255 задають RGB; показати зразок і HEX #RRGGBB, зміна кожного каналу оновлює обидва результати.
2. Базовий рівень. Створити самостійний JavaFX-застосунок «Підбір кольору»: ColorPicker, повзунки RGB, генерування CSS. Реалізувати повний сценарій теми, список історії дій зі стабільними ідентифікаторами, вибір режиму та діалог підтвердження очищення. Винести обчислення в окремий клас, додати CSS, роботу Enter і зміну розміру вікна; скасування діалогу залишає дані без змін. Три Slider 0..255 задають RGB; показати зразок і HEX #RRGGBB, зміна кожного каналу оновлює обидва результати.
3. Високий рівень. Створити самостійний JavaFX-застосунок «Підбір кольору»: ColorPicker, повзунки RGB, генерування CSS. Відділити модель від UI, реалізувати FXML-форму, перевірку введення, збереження налаштувань і повідомлення про помилки. Додати --help, --config=path, --check=field:value,...; останній режим виконує предметну перевірку без відкриття GUI та друкує вирівняну таблицю з підсумком. Помилки до stderr, коди 0/2/1. Для звичайного запуску показати GUI; додати JUnit-тести моделі, перевірити клавіатурний фокус і підготувати локальний runtime без встановлення в систему. Три Slider 0..255 задають RGB; показати зразок і HEX #RRGGBB, зміна кожного каналу оновлює обидва результати.
Варіант 21. Гра «Пам’ять»
1. Початковий рівень. Створити самостійний JavaFX-застосунок «Гра „Пам’ять“»: картки, пошук пар, лічильник ходів. Реалізувати основну дію через форму з підписаними полями й кнопкою, показати результат або помилку на тому самому екрані. Використати компонування без абсолютних координат і перевірити порожнє введення та межі значень. На полі 4×4 сховати 8 пар; відкривати максимум дві картки, збіг лишається відкритим, перемога після 8 пар.
2. Базовий рівень. Створити самостійний JavaFX-застосунок «Гра „Пам’ять“»: картки, пошук пар, лічильник ходів. Реалізувати повний сценарій теми, список історії дій зі стабільними ідентифікаторами, вибір режиму та діалог підтвердження очищення. Винести обчислення в окремий клас, додати CSS, роботу Enter і зміну розміру вікна; скасування діалогу залишає дані без змін. На полі 4×4 сховати 8 пар; відкривати максимум дві картки, збіг лишається відкритим, перемога після 8 пар.
3. Високий рівень. Створити самостійний JavaFX-застосунок «Гра „Пам’ять“»: картки, пошук пар, лічильник ходів. Відділити модель від UI, реалізувати FXML-форму, перевірку введення, збереження налаштувань і повідомлення про помилки. Додати --help, --config=path, --check=field:value,...; останній режим виконує предметну перевірку без відкриття GUI та друкує вирівняну таблицю з підсумком. Помилки до stderr, коди 0/2/1. Для звичайного запуску показати GUI; додати JUnit-тести моделі, перевірити клавіатурний фокус і підготувати локальний runtime без встановлення в систему. На полі 4×4 сховати 8 пар; відкривати максимум дві картки, збіг лишається відкритим, перемога після 8 пар.
Варіант 22. Графіки функцій
1. Початковий рівень. Створити самостійний JavaFX-застосунок «Графіки функцій»: LineChart функцій із параметрами та масштабом. Реалізувати основну дію через форму з підписаними полями й кнопкою, показати результат або помилку на тому самому екрані. Використати компонування без абсолютних координат і перевірити порожнє введення та межі значень. Побудувати sin(x) і cos(x) на введеному інтервалі a<b у межах -100..100 з кроком 0,1; підписати осі й серії.
2. Базовий рівень. Створити самостійний JavaFX-застосунок «Графіки функцій»: LineChart функцій із параметрами та масштабом. Реалізувати повний сценарій теми, список історії дій зі стабільними ідентифікаторами, вибір режиму та діалог підтвердження очищення. Винести обчислення в окремий клас, додати CSS, роботу Enter і зміну розміру вікна; скасування діалогу залишає дані без змін. Побудувати sin(x) і cos(x) на введеному інтервалі a<b у межах -100..100 з кроком 0,1; підписати осі й серії.
3. Високий рівень. Створити самостійний JavaFX-застосунок «Графіки функцій»: LineChart функцій із параметрами та масштабом. Відділити модель від UI, реалізувати FXML-форму, перевірку введення, збереження налаштувань і повідомлення про помилки. Додати --help, --config=path, --check=field:value,...; останній режим виконує предметну перевірку без відкриття GUI та друкує вирівняну таблицю з підсумком. Помилки до stderr, коди 0/2/1. Для звичайного запуску показати GUI; додати JUnit-тести моделі, перевірити клавіатурний фокус і підготувати локальний runtime без встановлення в систему. Побудувати sin(x) і cos(x) на введеному інтервалі a<b у межах -100..100 з кроком 0,1; підписати осі й серії.
Варіант 23. Опитування
1. Початковий рівень. Створити самостійний JavaFX-застосунок «Опитування»: вибір варіантів і PieChart результатів. Реалізувати основну дію через форму з підписаними полями й кнопкою, показати результат або помилку на тому самому екрані. Використати компонування без абсолютних координат і перевірити порожнє введення та межі значень. Дати одне питання та три взаємовиключні відповіді; рахувати голоси й відсотки, без вибору голос не додавати.
2. Базовий рівень. Створити самостійний JavaFX-застосунок «Опитування»: вибір варіантів і PieChart результатів. Реалізувати повний сценарій теми, список історії дій зі стабільними ідентифікаторами, вибір режиму та діалог підтвердження очищення. Винести обчислення в окремий клас, додати CSS, роботу Enter і зміну розміру вікна; скасування діалогу залишає дані без змін. Дати одне питання та три взаємовиключні відповіді; рахувати голоси й відсотки, без вибору голос не додавати.
3. Високий рівень. Створити самостійний JavaFX-застосунок «Опитування»: вибір варіантів і PieChart результатів. Відділити модель від UI, реалізувати FXML-форму, перевірку введення, збереження налаштувань і повідомлення про помилки. Додати --help, --config=path, --check=field:value,...; останній режим виконує предметну перевірку без відкриття GUI та друкує вирівняну таблицю з підсумком. Помилки до stderr, коди 0/2/1. Для звичайного запуску показати GUI; додати JUnit-тести моделі, перевірити клавіатурний фокус і підготувати локальний runtime без встановлення в систему. Дати одне питання та три взаємовиключні відповіді; рахувати голоси й відсотки, без вибору голос не додавати.
Варіант 24. Нотатки на вкладках
1. Початковий рівень. Створити самостійний JavaFX-застосунок «Нотатки на вкладках»: TabPane нотаток, збереження у файли. Реалізувати основну дію через форму з підписаними полями й кнопкою, показати результат або помилку на тому самому екрані. Використати компонування без абсолютних координат і перевірити порожнє введення та межі значень. Створювати вкладки з назвою та текстом; при закритті зміненої вкладки запитати збереження, скасування лишає вкладку.
2. Базовий рівень. Створити самостійний JavaFX-застосунок «Нотатки на вкладках»: TabPane нотаток, збереження у файли. Реалізувати повний сценарій теми, список історії дій зі стабільними ідентифікаторами, вибір режиму та діалог підтвердження очищення. Винести обчислення в окремий клас, додати CSS, роботу Enter і зміну розміру вікна; скасування діалогу залишає дані без змін. Створювати вкладки з назвою та текстом; при закритті зміненої вкладки запитати збереження, скасування лишає вкладку.
3. Високий рівень. Створити самостійний JavaFX-застосунок «Нотатки на вкладках»: TabPane нотаток, збереження у файли. Відділити модель від UI, реалізувати FXML-форму, перевірку введення, збереження налаштувань і повідомлення про помилки. Додати --help, --config=path, --check=field:value,...; останній режим виконує предметну перевірку без відкриття GUI та друкує вирівняну таблицю з підсумком. Помилки до stderr, коди 0/2/1. Для звичайного запуску показати GUI; додати JUnit-тести моделі, перевірити клавіатурний фокус і підготувати локальний runtime без встановлення в систему. Створювати вкладки з назвою та текстом; при закритті зміненої вкладки запитати збереження, скасування лишає вкладку.
Варіант 25. Планувальник дня
1. Початковий рівень. Створити самостійний JavaFX-застосунок «Планувальник дня»: DatePicker, події дня, сортування списку. Реалізувати основну дію через форму з підписаними полями й кнопкою, показати результат або помилку на тому самому екрані. Використати компонування без абсолютних координат і перевірити порожнє введення та межі значень. Додавати подію з назвою та часом початку/кінця одного дня; показати за часом, перетин інтервалів відхилити.
2. Базовий рівень. Створити самостійний JavaFX-застосунок «Планувальник дня»: DatePicker, події дня, сортування списку. Реалізувати повний сценарій теми, список історії дій зі стабільними ідентифікаторами, вибір режиму та діалог підтвердження очищення. Винести обчислення в окремий клас, додати CSS, роботу Enter і зміну розміру вікна; скасування діалогу залишає дані без змін. Додавати подію з назвою та часом початку/кінця одного дня; показати за часом, перетин інтервалів відхилити.
3. Високий рівень. Створити самостійний JavaFX-застосунок «Планувальник дня»: DatePicker, події дня, сортування списку. Відділити модель від UI, реалізувати FXML-форму, перевірку введення, збереження налаштувань і повідомлення про помилки. Додати --help, --config=path, --check=field:value,...; останній режим виконує предметну перевірку без відкриття GUI та друкує вирівняну таблицю з підсумком. Помилки до stderr, коди 0/2/1. Для звичайного запуску показати GUI; додати JUnit-тести моделі, перевірити клавіатурний фокус і підготувати локальний runtime без встановлення в систему. Додавати подію з назвою та часом початку/кінця одного дня; показати за часом, перетин інтервалів відхилити.
Варіант 26. Лічильник калорій
1. Початковий рівень. Створити самостійний JavaFX-застосунок «Лічильник калорій»: продукти, порції, діаграма нутрієнтів. Реалізувати основну дію через форму з підписаними полями й кнопкою, показати результат або помилку на тому самому екрані. Використати компонування без абсолютних координат і перевірити порожнє введення та межі значень. Ввести продукт, грами>0 і ккал на 100 г≥0; показати калорії рядків та добову суму, порожню назву відхилити.
2. Базовий рівень. Створити самостійний JavaFX-застосунок «Лічильник калорій»: продукти, порції, діаграма нутрієнтів. Реалізувати повний сценарій теми, список історії дій зі стабільними ідентифікаторами, вибір режиму та діалог підтвердження очищення. Винести обчислення в окремий клас, додати CSS, роботу Enter і зміну розміру вікна; скасування діалогу залишає дані без змін. Ввести продукт, грами>0 і ккал на 100 г≥0; показати калорії рядків та добову суму, порожню назву відхилити.
3. Високий рівень. Створити самостійний JavaFX-застосунок «Лічильник калорій»: продукти, порції, діаграма нутрієнтів. Відділити модель від UI, реалізувати FXML-форму, перевірку введення, збереження налаштувань і повідомлення про помилки. Додати --help, --config=path, --check=field:value,...; останній режим виконує предметну перевірку без відкриття GUI та друкує вирівняну таблицю з підсумком. Помилки до stderr, коди 0/2/1. Для звичайного запуску показати GUI; додати JUnit-тести моделі, перевірити клавіатурний фокус і підготувати локальний runtime без встановлення в систему. Ввести продукт, грами>0 і ккал на 100 г≥0; показати калорії рядків та добову суму, порожню назву відхилити.
Варіант 27. Тренажер друку
1. Початковий рівень. Створити самостійний JavaFX-застосунок «Тренажер друку»: швидкість друку, помилки, таймер вправи. Реалізувати основну дію через форму з підписаними полями й кнопкою, показати результат або помилку на тому самому екрані. Використати компонування без абсолютних координат і перевірити порожнє введення та межі значень. Показати заданий еталон, виміряти час введення й число невідповідних позицій; швидкість=символи/хв, порожній ввід не завершувати.
2. Базовий рівень. Створити самостійний JavaFX-застосунок «Тренажер друку»: швидкість друку, помилки, таймер вправи. Реалізувати повний сценарій теми, список історії дій зі стабільними ідентифікаторами, вибір режиму та діалог підтвердження очищення. Винести обчислення в окремий клас, додати CSS, роботу Enter і зміну розміру вікна; скасування діалогу залишає дані без змін. Показати заданий еталон, виміряти час введення й число невідповідних позицій; швидкість=символи/хв, порожній ввід не завершувати.
3. Високий рівень. Створити самостійний JavaFX-застосунок «Тренажер друку»: швидкість друку, помилки, таймер вправи. Відділити модель від UI, реалізувати FXML-форму, перевірку введення, збереження налаштувань і повідомлення про помилки. Додати --help, --config=path, --check=field:value,...; останній режим виконує предметну перевірку без відкриття GUI та друкує вирівняну таблицю з підсумком. Помилки до stderr, коди 0/2/1. Для звичайного запуску показати GUI; додати JUnit-тести моделі, перевірити клавіатурний фокус і підготувати локальний runtime без встановлення в систему. Показати заданий еталон, виміряти час введення й число невідповідних позицій; швидкість=символи/хв, порожній ввід не завершувати.
Варіант 28. Салон літака
1. Початковий рівень. Створити самостійний JavaFX-застосунок «Салон літака»: вибір місць кнопками, класи та вартість. Реалізувати основну дію через форму з підписаними полями й кнопкою, показати результат або помилку на тому самому екрані. Використати компонування без абсолютних координат і перевірити порожнє введення та межі значень. На схемі 10 рядів по 4 місця обрати вільне місце й підтвердити бронювання; зайняті недоступні, Cancel знімає вибір.
2. Базовий рівень. Створити самостійний JavaFX-застосунок «Салон літака»: вибір місць кнопками, класи та вартість. Реалізувати повний сценарій теми, список історії дій зі стабільними ідентифікаторами, вибір режиму та діалог підтвердження очищення. Винести обчислення в окремий клас, додати CSS, роботу Enter і зміну розміру вікна; скасування діалогу залишає дані без змін. На схемі 10 рядів по 4 місця обрати вільне місце й підтвердити бронювання; зайняті недоступні, Cancel знімає вибір.
3. Високий рівень. Створити самостійний JavaFX-застосунок «Салон літака»: вибір місць кнопками, класи та вартість. Відділити модель від UI, реалізувати FXML-форму, перевірку введення, збереження налаштувань і повідомлення про помилки. Додати --help, --config=path, --check=field:value,...; останній режим виконує предметну перевірку без відкриття GUI та друкує вирівняну таблицю з підсумком. Помилки до stderr, коди 0/2/1. Для звичайного запуску показати GUI; додати JUnit-тести моделі, перевірити клавіатурний фокус і підготувати локальний runtime без встановлення в систему. На схемі 10 рядів по 4 місця обрати вільне місце й підтвердити бронювання; зайняті недоступні, Cancel знімає вибір.
Варіант 29. Сапер
1. Початковий рівень. Створити самостійний JavaFX-застосунок «Сапер»: ігрове поле, прапорці, таймер і рекорди. Реалізувати основну дію через форму з підписаними полями й кнопкою, показати результат або помилку на тому самому екрані. Використати компонування без абсолютних координат і перевірити порожнє введення та межі значень. На полі 8×8 розмістити 10 мін; відкривати клітини й ставити прапорці, міна завершує гру, перший хід зробити безпечним.
2. Базовий рівень. Створити самостійний JavaFX-застосунок «Сапер»: ігрове поле, прапорці, таймер і рекорди. Реалізувати повний сценарій теми, список історії дій зі стабільними ідентифікаторами, вибір режиму та діалог підтвердження очищення. Винести обчислення в окремий клас, додати CSS, роботу Enter і зміну розміру вікна; скасування діалогу залишає дані без змін. На полі 8×8 розмістити 10 мін; відкривати клітини й ставити прапорці, міна завершує гру, перший хід зробити безпечним.
3. Високий рівень. Створити самостійний JavaFX-застосунок «Сапер»: ігрове поле, прапорці, таймер і рекорди. Відділити модель від UI, реалізувати FXML-форму, перевірку введення, збереження налаштувань і повідомлення про помилки. Додати --help, --config=path, --check=field:value,...; останній режим виконує предметну перевірку без відкриття GUI та друкує вирівняну таблицю з підсумком. Помилки до stderr, коди 0/2/1. Для звичайного запуску показати GUI; додати JUnit-тести моделі, перевірити клавіатурний фокус і підготувати локальний runtime без встановлення в систему. На полі 8×8 розмістити 10 мін; відкривати клітини й ставити прапорці, міна завершує гру, перший хід зробити безпечним.
Варіант 30. Метроном
1. Початковий рівень. Створити самостійний JavaFX-застосунок «Метроном»: темп, розмір такту, анімація долей. Реалізувати основну дію через форму з підписаними полями й кнопкою, показати результат або помилку на тому самому екрані. Використати компонування без абсолютних координат і перевірити порожнє введення та межі значень. Ввести темп 40..200 ударів/хв; показувати візуальний імпульс кожні 60/темп секунд, Stop припиняє імпульси.
2. Базовий рівень. Створити самостійний JavaFX-застосунок «Метроном»: темп, розмір такту, анімація долей. Реалізувати повний сценарій теми, список історії дій зі стабільними ідентифікаторами, вибір режиму та діалог підтвердження очищення. Винести обчислення в окремий клас, додати CSS, роботу Enter і зміну розміру вікна; скасування діалогу залишає дані без змін. Ввести темп 40..200 ударів/хв; показувати візуальний імпульс кожні 60/темп секунд, Stop припиняє імпульси.
3. Високий рівень. Створити самостійний JavaFX-застосунок «Метроном»: темп, розмір такту, анімація долей. Відділити модель від UI, реалізувати FXML-форму, перевірку введення, збереження налаштувань і повідомлення про помилки. Додати --help, --config=path, --check=field:value,...; останній режим виконує предметну перевірку без відкриття GUI та друкує вирівняну таблицю з підсумком. Помилки до stderr, коди 0/2/1. Для звичайного запуску показати GUI; додати JUnit-тести моделі, перевірити клавіатурний фокус і підготувати локальний runtime без встановлення в систему. Ввести темп 40..200 ударів/хв; показувати візуальний імпульс кожні 60/темп секунд, Stop припиняє імпульси.
Порядок виконання та захисту роботи
- Створити Maven-проєкт із зафіксованою версією JavaFX.
- Спроєктувати дерево вузлів і поведінку на вузькому вікні.
- Відокремити обчислення від обробників контролів.
- Перевірити коректний, порожній і граничний ввід.
- Перевірити Enter, Tab, скасування діалогу та закриття.
- Показати звіт тестів і результати запуску зібраного проєкту.