По тексту разбросаны цветные врезки четырёх видов. Вот они все.
— Компьютер с Windows, macOS или Linux. Игра работает везде, где есть Python.
— Python 3.15 и менеджер uv — как их поставить, расскажу в главе 1.
— Редактор Visual Studio Code с расширениями Python и Ruff. Можно и любой другой, но объяснять я буду на нём.
— Две библиотеки: numpy и pygame-ce. Их uv поставит одной командой в главе 9.
— Желание разобраться. Серьёзно, это важнее всего остального.
Мышь тоже пригодится: в Doom без мыши играть можно, но это как есть суп вилкой. И колонки — в главе 26 игра заговорит.
Весь код из книги лежит на GitHub: https://github.com/RushSex/MiniDoom-Python. Скачать его можно одним архивом — зелёная кнопка Code, затем Download ZIP — или командой git clone; дальше в книге я называю его просто архивом примеров. В папке examples там по папке на каждую главу — от ch01 до ch29, — и в каждой папке программы в том виде, в каком они должны быть в конце главы. Готовая игра целиком — в папке minidoom: uv sync, uv run main.py — и вперёд.
Но не превращай архив в копипасту. Код, набранный своими пальцами, запоминается в десять раз лучше, а опечатки, которые ты при этом наделаешь, научат читать трейсбеки. Это не баг обучения, это его фича.
Хватит предисловий. Ставим Python, пишем первую программу и заставляем компьютер сказать «Hello, Doom!». Переворачивай страницу.
Книга «MINI DOOM. Современный Python через игру» выходит в пяти томах — по одному на каждую часть. Каждый заканчивается работающей программой, и в каждом свои ответы, глоссарий и указатель.
— Том 1. Учимся держать оружие — главы 1–8: основы Python в консоли, от первой программы до ссылок и ресурсов.
— Том 2. Окно в ад — главы 9–13: окно pygame-ce, пиксели на numpy, игровой цикл, клавиатура и мышь, свой шрифт.
— Том 3. Третье измерение — главы 14–19: рейкастинг, стены, текстуры, пол и свет, профилировщик, двери.
— Том 4. Здесь кто-то есть — главы 20–25: спрайты, монстры, оружие, конечные автоматы, поиск пути, смерть.
— Том 5. Шум, свет и финальные титры — главы 26–29: звук, экраны, уровни в файлах, uv, ruff, mypy и pytest.
Все исходники серии — на GitHub: https://github.com/RushSex/MiniDoom-Python. Папка examples/chNN для каждой главы, готовая игра — папка minidoom. Там же README: uv sync, uv run main.py — и вперёд.
Прежде чем стрелять по демонам, надо научиться держать оружие. В этой части мы освоим основы Python в самой простой обстановке — в окне терминала. Никакой графики, никаких окон, только ты, код и интерпретатор. Зато к концу части у тебя будет консольный рогалик: герой бегает по карте, монстры бродят вокруг, а код устроен так, как пишут настоящие программисты.
Любое путешествие начинается с первого шага, а любой программист — с программы, которая печатает «Hello, World!». Мы поступим так же, только поздороваемся не с миром, а с Doom. В этой главе ты поставишь Python и редактор, создашь первый проект, настроишь его как профи, нарисуешь титульный экран игры буквами и, что не менее важно, научишься не бояться, когда Python начинает ругаться.
Процессор твоего компьютера — тупой, но очень быстрый исполнитель. Он понимает только машинный код: длинные последовательности чисел вроде «возьми число отсюда, прибавь вот это, положи туда». Писать так руками можно, люди так и делали в пятидесятых, но удовольствия примерно как от заполнения налоговой декларации на латыни.
Поэтому придумали языки программирования. Ты пишешь текст, понятный человеку, а специальная программа переводит его для машины. В языках вроде C++ переводчик — компилятор — переводит весь текст заранее и выдаёт готовый .exe. В Python всё устроено иначе: переводчик сидит рядом с поваром и читает ему рецепт вслух, строчка за строчкой, прямо во время готовки. Такой переводчик называется интерпретатор, и он тоже называется python.
Если заглянуть под капот, интерпретатор сначала быстро переводит твой файл в промежуточный байт-код — компактные команды для виртуальной машины Python — и потом выполняет их одну за другой. Весь путь показан на рисунке 1.1.
Рисунок 1.1 — Путь от текста программы до результата: перевод и выполнение идут сразу, при каждом запуске
У такого подхода есть плюс и минус, и оба нам важны. Плюс: написал строчку — сразу запустил, никакой долгой сборки. Минус: многие ошибки интерпретатор замечает, только когда до них дойдёт. Опечатка в пятой строке не помешает выполниться первым четырём, а программа упадёт посреди работы. В C++ такую ошибку поймал бы компилятор до запуска. Поэтому в Python мы позовём на помощь двух сторожей — линтер и проверку типов. Знакомство с ними — в этой же главе.
О проекте
О подписке
Другие проекты