Мы продолжаем искать лучшие книги по питону и сегодня на обзоре «Учим 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 зашла без проблем:
Но мне интересно было посмотреть, что мы получим в конце и у меня получилась какая-то такая игра, где на ученика падают книги Эла Свейгарта, а студент от них уворачивается:
Может быть не от всех, но от данной книги я бы рекомендовал увернуться.
Она называется «Учим Python, делая крутые игры», но по итогу игра получается не очень крутой. Мы видели более классные и захватывающие примеры в других книгах.
К тому же, часть кода тут записана с неверными отступами, а это для новичка недопустимо. Им и так тяжело.
Да и питон тут рассматривается на совсем элементарном уровне. Например, нет работы с файлами, хотя можно было добавить эту информацию, скажем для игр, которые запоминают ваши лучшие результаты между запусками. Это вполне логично и не так сложно.
Так что Эл, сегодня не твой день. Возможно настало время показать себя Дмитрию Кольцову, у которого тоже есть книга про игры, но про это будет в следующем обзоре.