Читать книгу «MINI DOOM Современный Python через игру Том 1 Учимся держать оружие» онлайн полностью📖 — Алексей Примак — MyBook.

Ставим Python

Нам нужен свежий Python — версии 3.15, она вышла в октябре 2026 года. Подойдёт и любая более новая. Ставить его будем через uv — это современный менеджер Python от команды, которая сделала линтер Ruff. Он ставит сам Python нужной версии, инструменты для него и библиотеки, и делает это быстро. Старый способ — скачать установщик с python.org и не забыть галочку Add python.exe to PATH — тоже работает, но с uv меньше граблей.

— Открой PowerShell (на Windows) или терминал (на Linux и macOS).

— Поставь uv. На Windows: powershell -c «irm https://astral.sh/uv/install.ps1 | iex». На Linux и macOS: curl -LsSf https://astral.sh/uv/install.sh | sh. Точные команды всегда есть на сайте docs.astral.sh/uv.

— Закрой терминал и открой заново, чтобы он увидел uv. Потом поставь Python: uv python install 3.15.

— Поставь двух сторожей: uv tool install ruff и uv tool install mypy. О них — чуть ниже.

Проверить, что всё на месте, можно командами python --version, ruff --version и mypy --version. Каждая должна напечатать номер версии, а не «команда не найдена».





Редактор и первый проект

Писать код можно хоть в «Блокноте», но мы возьмём Visual Studio Code — бесплатный редактор от Microsoft, стандарт для Python. Поставь его с сайта code.visualstudio.com, открой, слева на панели найди «Расширения» и поставь два: Python от Microsoft и Ruff от Astral. Первое учит редактор понимать Python, второе подсвечивает подозрительные места прямо по ходу набора.

Теперь проект. Создай где-нибудь папку mini_doom, в VS Code выбери «Файл → Открыть папку» и открой её. Создай файл main.py — в Python это обычное имя для главного файла программы. Запускать программу будем из встроенного терминала (меню «Терминал → Создать терминал») командой python main.py. Полезные клавиши собраны в таблице 1.1.




Таблица 1.1 — Горячие клавиши VS Code, которые понадобятся сразу



Hello, Doom

Набери в main.py код из листинга 1.1. Именно набери руками, не копируй: пальцы тоже должны учиться.




Листинг 1.1 — Первая программа


Запусти. В терминале появится ровно то, что в тёмной панели под кодом: строка Hello, Doom!. Поздравляю, ты программист. Ну, почти. Одна строчка — и программа готова: ни заголовков, ни функции main, ни точки с запятой. За это Python и любят.

Разберём эту строку по частям. print — это функция, готовая команда, которая печатает в терминал то, что ей дали. Круглые скобки после имени означают «вызвать функцию». Внутри скобок — то, что ей передают, аргумент. Здесь это строка «Hello, Doom!»: текст в кавычках. Кавычки говорят Python, что это не команда, а просто буквы, которые надо оставить как есть. После печати print сам переводит курсор на новую строку.

Функции print можно передать сразу несколько значений через запятую — она напечатает их через пробел. А два особых именованных аргумента меняют поведение: sep задаёт, чем разделять значения, а end — чем закончить строку. Всё это в листинге 1.2.




Листинг 1.2 — Возможности print: несколько значений, sep и end


Строка 1. Четыре значения через запятую — две строки и два числа. Числа пишутся без кавычек, и Python понимает, что это числа. print напечатал всё через пробел.

Строка 2. sep=»» — разделитель пустой, поэтому HEALTH: и 100 слиплись.

Строки 3–5. end=»» отменяет перевод строки в конце. Три вызова print напечатали одну строку Loading… OK — так рисуют индикаторы загрузки.

Строка 6. print без аргументов печатает пустую строку.

Строка 7. «2 + 2 =» в кавычках — это текст, его напечатали как есть. А 2 + 2 без кавычек — выражение: Python его посчитал и напечатал 4. Как print раскладывает значения по строке, показано на рисунке 1.2.




Рисунок 1.2 — Функция print: значения по очереди уезжают в терминал, между ними — разделитель



Рисуем титульный экран

Строка Hello, Doom! — это мило, но у настоящей игры должен быть титульный экран. Нарисуем его буквами, как делали в восьмидесятых, — это называется ASCII-арт. Код в листинге 1.3.




Листинг 1.3 — Титульный экран MINI DOOM из символов


Строки 1 и 2 начинаются с решётки. Это комментарии: всё от # до конца строки Python пропускает. Комментарии пишут для людей — для коллег и для себя через полгода, когда забудешь, что тут происходит. А забудешь обязательно.

Строка 3. TITLE =… — первая в книге переменная: имя, к которому привязано значение. Подробно о переменных — в следующей главе, а пока считай, что мы положили рисунок в коробку с надписью TITLE и в строке 11 достали его оттуда, чтобы напечатать. Имя написано заглавными буквами — так в Python договорились обозначать константы, значения, которые не меняются.

Сам рисунок — это строка в тройных кавычках «»»…»»». Обычная строка в одинарных кавычках должна уместиться в одну строку кода, а тройная может тянуться сколько угодно и сохраняет все переносы. Обрати внимание на первую строку вывода: она пустая. Это не баг: строка начинается сразу после открывающих кавычек, а там стоит перевод строки — он тоже попал в вывод.

Самое хитрое — буква r перед кавычками. В обычной строке обратный слэш \ — особый символ: \n означает перевод строки, \t — табуляцию. А в нашем рисунке слэшей полно. Буква r делает строку «сырой» (raw): все символы в ней — просто символы. Что будет, если её забыть, видно в листинге 1.4: там рисунок без r, и мы проверили файл линтером Ruff.




Листинг 1.4 — Забыли r: Ruff находит подозрительные слэши


Ruff говорит: в строке 3, в столбце 4 стоит неправильная escape-последовательность \/ — такой особой комбинации в Python нет. Таких мест в рисунке два, второе он нашёл в столбце 14, мы его сократили. Ниже Ruff даже подсказывает лекарство: поставить r перед кавычками. Сам Python в таком случае выдаст предупреждение SyntaxWarning, но картинку напечатает. А если бы в рисунке оказалось сочетание \n, на его месте молча появился бы перенос строки, и рисунок разъехался бы без всяких предупреждений.