Рецензия на книгу
Учим Python, делая крутые игры

Свейгарт Эл

Обложка книги Учим Python, делая крутые игры (Свейгарт Эл)

Краткая рецензия

Большая часть книги посвящена небольшим текстовым играм на Питоне.

Ближе к середине начинаются проблемы с отступами и форматированием, что делает код не рабочим. Финальные игры делаются на PyGame, но они не такие интересные как в другой подобной литературе.

Полная рецензия

Мы продолжаем искать лучшие книги по питону и сегодня на обзоре «Учим Python, делая крутые игры» Эла Свейгарта.

И Эл Свегарт один из самых пишущих авторов про питон. Я уже делал обзор на его книгу «Автоматизация Рутинных задач» и она была классной.

Но вернемся к «Учим Python» и сразу скажу, что к ней я подошел подготовленным, ведь я уже сталкивался с книгами, в которых нужно было создавать игры на Python. И что самое важное я их реально создавал. Как минимум две. Также я видел книги с текстовыми играми, что не так захватывающее, но всё же. И Элу придется постараться, чтобы переплюнуть других авторов.

Давайте заглянем внутрь и здесь вы найдете 21 главу и примерно столько же игр, на базе которых автор предлагает научиться программировать. Причем Эл утверждает, что начинать можно с нуля, то есть книга подойдет для новичков в программировании.

Работать мы будем с Python 3.6, который немного подустарел, так как оригинальная книга написана в 2016 году. Российское же издание вышло только в 2021. Хотя для начинающего разработчика это не так важно. Вряд ли вам потребуются самые передовые возможности питона.

И по традиции, в первой главе, вы научитесь устанавливать интерпретатор и напишите свои первые простейшие программы.

При этом Эл приводит наглядные схемы, а также небольшие иллюстрации, которые позволяют лучше понять происходящее. Но пока без игр.

Схема из книги

Схема из книги.

Вторая глава знакомит нас со строками, а также вводом и выводом информации. И она тоже без игры. Первая игра будет только в третьей главе и это текстовая «Угадай число».

Для её реализации нам понадобится модуль random, а также циклы, условия и другие конструкции языка. То есть получив самый минимум в первых двух главах мы сразу окунаемся в реальное проектное программирование. Это смело и круто.

Похожий подход был у Эрика Фримена в «Учимся программировать на Python с примерами». А также в «Непрактичном Питоне» Ли Вогана и «Python без проблем» Даниэля Зингаро. То есть обучение через проекты — это вполне рабочая история. Это не обязательно должны быть игры, но конкретно у Эла Свейгарта именно они.

Итак, сперва автор даёт базовое описание условий игры, а после приводит её полный исходный код, который предлагает набрать вам самостоятельно, а затем и запустить.

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

Давайте немного поговорим о коде и он довольно чистый. В прошлом обзоре я разбирал книгу Васильева и там весь код был плохо оформлен. Тут же хороший выбор шрифтов и всё в порядке с отступами.

Пример кода из книги

Пример кода из книги.

Единственное автор использует lowerCamelCase нотацию для записи переменных, но об этой особенности Эла Свейгарта я знаю из прошлых обзоров. Эл это сам хорошо понимает и объясняет почему он делает именно так, поэтому я даже не буду придираться.

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

Следующая глава посвящена «шутнику» и это скорее обычная программа, чем игра.

Но зато в пятой главе мы снова возвращаемся к играм и на этот раз это «Царство драконов». Тут мы знакомимся с циклом while, созданием собственных функций и другими концепциями языка.

Здесь же вы встретите блок схему, которая раскрывает общий алгоритм игры.

Блок-схема игры Царство Драконов

Блок-схема игры Царство Драконов.

Далее снова идет полный текст программы, а после её объяснение на 16 страницах, на которых вы узнаете много интересного о питоне, но при этом без излишеств.

Шестая глава снова посвящена не игре, а использованию отладчика и это полезно знать. Это фишка Эла Свейгарта, редко кто из авторов освещает данную тему, особенно в литературе для новичков. Но Эл рассказывал про отладчик и в Автоматизации Рутинных задач.

Следующая глава посвящена описанию знаменитой игры «Виселица» и тут вы встретите более серьезные блок схемы:

Блок-схема игры Виселица

Блок-схема игры Виселица.

А далее, в 8 главе, идет непосредственно написание кода, который занимает три страницы. И затем еще 23 - это описание кода. А после еще одна глава выделена на доработку игры. И чем дальше вы продвигаетесь по книге, тем больше узнаете про питон и программирование. Это хороший способ научиться.

Далее вы напишите игру «Крестики Нолики», а также «Холодно Горячо». Пока это всё текстовые игры, но они довольно забавные.

12 глава посвящена декартовой системе координат, это звучит как намёк на 2D графику.

Первые проблемы

И в 13 главе мы начинаем писать код игры «Охотник за сокровищами». К сожалению она без графики, это всё также текстовая игра, которая выглядит как-то так:

Игра Охотник за сокровищами

Игра Охотник за сокровищами.

При этом мы встречаем тут проблемы с отступами, что делает код нерабочим:

Проблемы с отступами в книге

Проблемы с отступами.

Это похоже на косяк в верстке российского издания, но к сожалению на странице мы видим кашу. При том, что в исходниках, которые идут к книге всё ок. Речь про исходники, которые выложены на сайте автора.

Однако, в описании к исходникам, которые вы можете прочитать в книге после кода, опять каша:

Более серьезные проблемы с отступами в книге

Более серьезные проблемы с отступами.

Немного обидно, книга классная, но на каком-то этапе её запороли.

14 глава снова не про игры, а про шифрование, что делает отсылку к другой книге Эла Свейгарта — «Криптография и взлом шифров на python». Тут тоже исходники пошли в разнос, но не так сильно как в прошлый раз.

Далее мы переходим к игре «Реверси», которая на картинках выглядит так:

Игра реверси

Игра реверси.

Но в реальности вы будете запускать её в консоле и получите что-то вроде такого:

Игра реверси в реальности

Игра реверси в реальности.

Тут с кодом почти всё ок, и это всё-таки косяк верстальщиков. Потому что вы можете встретить вот такой фрагмент, когда попытались вставить весь комментарий в одну строку, хотя его можно было спокойно разбить на несколько. Но верстальщик не программист, он не понимает, что это важно.

Длинный комментарий в книге

Длинный комментарий в книге.

В общем, я решил эту игру запустить. Но разумеется набирать вручную я её не хотел, там 260 строк кода. Решил скачать с сайта и там не всё так как я ожидал. На сайте вы можете вставить ваш код игры, который предварительно написали и сайт покажет в чем отличия вашей реализации от правильной. Чтобы вы могли в случае чего скорректировать свою программу. При этом выводится полный текст финальной программы, но он копируется с номерами строк, что затрудняет его вставку.

Благо я знаю регулярные выражения и через пару минут мне удалось запустить игру и даже немного поиграть, но не скажу, что это было захватывающе. Плюс я немного почитал описание игры и не встретил практически ничего нового в плане питона. То есть мы использовали всё то, что изучили в прошлых главах. А мне бы хотелось какого-то развития.

Графические игры с PyGame

В следующей главе мы продолжаем разработку этой игры и далее в 17 доходим до создания графики с помощью PyGame. И это уже интересно.

Для тестов я собрал виртуалное окружение на Python 3.6 с PyGame 2.5 и попробовал запустить исходники из книги. Первая программа, которая демонстрирует возможности pygame зашла без проблем:

Первый подход к PyGame

Первый подход к PyGame.

Но мне интересно было посмотреть, что мы получим в конце и у меня получилась какая-то такая игра, где на ученика падают книги Эла Свейгарта, а студент от них уворачивается:

Финальная игра на PyGame

Финальная игра на PyGame.

Может быть не от всех, но от данной книги я бы рекомендовал увернуться.

Она называется «Учим Python, делая крутые игры», но по итогу игра получается не очень крутой. Мы видели более классные и захватывающие примеры в других книгах.

К тому же, часть кода тут записана с неверными отступами, а это для новичка недопустимо. Им и так тяжело.

Да и питон тут рассматривается на совсем элементарном уровне. Например, нет работы с файлами, хотя можно было добавить эту информацию, скажем для игр, которые запоминают ваши лучшие результаты между запусками. Это вполне логично и не так сложно.

Так что Эл, сегодня не твой день. Возможно настало время показать себя Дмитрию Кольцову, у которого тоже есть книга про игры, но про это будет в следующем обзоре.