Урок 15. Власні модулі та структура проєкту
Урок 15. Власні модулі та структура проєкту
Section titled “Урок 15. Власні модулі та структура проєкту”Тривалість: 45–55 хв
XP: 210
🎯 Місія
Section titled “🎯 Місія”Навчитися ділити програму на кілька .py файлів.
💡 Пояснення простою мовою
Section titled “💡 Пояснення простою мовою”Модуль — це як ящик з інструментами. Замість того, щоб тримати всі інструменти на столі (в одному файлі), ти складаєш кожен вид окремо: молоток у ящик «battle», викрутку у ящик «save». Коли потрібен молоток — дістаєш ящик battle. Так само в програмі: файл battle.py містить функції для бою, save.py — для збереження. Це допомагає не заплутатися, коли гра стає великою.
graph TD
A["main.py (запуск)"] -->|"import battle"| B["battle.py (бій)"]
A -->|"import save"| C["save.py (збереження)"]
C -->|"запис/читання"| D["data/save.txt"]
🧠 Власний модуль
Section titled “🧠 Власний модуль”battle.py:
import random
def attack(): return random.randint(5, 20)main.py:
import battle
print(battle.attack())Або:
from battle import attackprint(attack())🧩 Розбираємо по рядках
Section titled “🧩 Розбираємо по рядках”import battle # Імпортуємо модуль battle.pyprint(battle.attack()) # Викликаємо функцію через ім'я модуляАбо більш коротко:
from battle import attack # Імпортуємо ТІЛЬКИ функцію attackprint(attack()) # Можна викликати напряму, без battle.💡 Перший спосіб (
import battle) — корисний, коли модуль великий і є багато функцій. Другий (from ... import ...) — зручний, коли потрібна одна функція і не хочеш постійно писатиbattle.перед кожним викликом.
🗂 Структура
Section titled “🗂 Структура”my_game/├── main.py├── battle.py├── save.py└── data/ └── save.txt✏️ Вправи
Section titled “✏️ Вправи”- Створи
math_tools.pyзdouble(number). - Створи
dice.pyзroll_dice(). - Перенеси функцію атаки старої гри в
battle.py.
🐉 Boss — Mini RPG Structure
Section titled “🐉 Boss — Mini RPG Structure”Створи:
mini_rpg/├── main.py├── battle.py└── save.pybattle.py відповідає за бій, save.py — за збереження, main.py — за запуск.
✅ Готовий далі, якщо
Section titled “✅ Готовий далі, якщо”Марко може створити власний модуль, імпортувати його й пояснити, навіщо розділяти програму.
🔮 Далі
Section titled “🔮 Далі”Наступна місія — графічні програми з Pygame.
🏠 Домашня місія
Section titled “🏠 Домашня місія”Перетвори одну стару консольну гру на проєкт із кількох файлів.
⚡ Перевір себе
Section titled “⚡ Перевір себе”- Чим
import battleвідрізняється відfrom battle import attack? - Якщо у
battle.pyє функціяdef attack(), як її викликати зmain.pyчерезimport battle? - Навіщо розділяти програму на файли, якщо можна написати все в одному?
- Що станеться, якщо викликати
attack()без імпорту?