image
Если вы хотите научиться программировать первоклассные игры, вам просто необходимо изучить язык С++. Эта книга поможет вам освоить разработку игр с самых азов, независимо от того, есть ли у вас опыт программирования. Гораздо интересней учиться, когда обучение превращается в игру. Каждая глава книги описывает самостоятельный игровой проект. В заключительной главе вам предстоит написать сложную игру, которая объединяет все приемы программирования, рас-смотренные в предыдущих главах. Книга идеально подойдет для начинающего программиста, планирующего не только как следует освоить непростой язык С++, но и поупражняться в программировании игр. Цель данной книги — познакомить вас с языком С++ в контексте программирования игр. Хотя невозможно представить себе такую книгу, которая сделала бы вас мастером в двух столь объемных темах, как программирование игр и язык C++, это издание пригодится вам в качестве вводного курса.


Для кого эта книга

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

Как построена книга

Я начинаю рассказ о программировании игр на C++ с азов, предполагая, что читатель не имеет никакого опыта ни в программировании игр, ни в C++. В каждой новой главе рассматриваются все более сложные темы, каждая последующая глава основывается на материале из предыдущих.

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

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

Глава 1. Типы, переменные, стандартный ввод-вывод. Игра «Утраченный клад». Здесь вы познакомитесь с основами C++ — важнейшего языка программирования, который применяется в игровой индустрии. Вы научитесь отображать вывод в окне консоли, выполнять арифметические вычисления, работать с переменными и получать пользовательский ввод, набранный на клавиатуре.

Глава 2. Истина, ветвление и игровой цикл. Игра «Угадай число». Многие интересные игры основаны на программах, которые выполняют, пропускают или повторно выполняют определенные блоки кода в зависимости от тех или иных условий. Вы научитесь генерировать случайные числа, что позволит добавить в ваши игры элемент непредсказуемости. Кроме того, вы познакомитесь с фундаментальным феноменом, называемым «игровой цикл». Именно этот цикл позволяет организовать игру и выстроить в ней череду событий.

Глава 3. Циклы for, строки и массивы. Игра «Словомеска». Вы узнаете об игровых последовательностях и научитесь работать со строками. Строка — это последовательность символов, незаменимая при игре в слова. Кроме того, вы познакомитесь с программными объектами — сущностями, позволяющими представлять в вашей игре существ или предметы. Примеры сущностей — инопланетный космический корабль, горшочек с лечебным зельем или сам персонаж.

Глава 4. Библиотека стандартных шаблонов. Игра «Виселица». Здесь вы познакомитесь с мощной библиотекой — инструментарием для разработчиков игр (и не только игр). Эта библиотека позволяет объединять элементы в коллекции и хранить их в таком виде, например, как снаряжение в рюкзаке у персонажа. Кроме того, здесь будут рассмотрены приемы, позволяющие создавать более крупные игровые программы.

Глава 5. Функции. Игра «Безумные библиотекари». В этой главе вы научитесь разбивать игровые программы на компактные блоки, с которыми удобно работать. Для этого вы познакомитесь с функциями — элементарными логическими единицами, применяемыми в программах.

Глава 6. Ссылки. Игра «Крестики-нолики». Здесь мы поговорим о том, как одновременно использовать определенную информацию в разных частях вашей программы, причем делать это четко и эффективно. Кроме того, здесь вы познакомитесь с искусственным интеллектом и узнаете, как сделать компьютерного соперника немного изобретательнее.

Глава 7. Указатели. Игра «Крестики-нолики 2.0». В этой главе вы познакомитесь с некоторыми наиболее низкоуровневыми и мощными возможностями языка C++. В частности, мы поговорим о том, как обращаться непосредственно к компьютерной памяти и манипулировать ею.

Глава 8. Классы. Игра «Тамагочи». Здесь вы научитесь создавать собственные объекты и описывать, как они должны взаимодействовать друг с другом. Для этого применяется парадигма объектно-ориентированного программирования. Вы создадите собственного любимца-тамагочи, о котором будете заботиться.

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

Глава 10. Наследование и полиморфизм. Игра Blackjack. В этой главе мы поговорим о том, как создавать объекты с помощью других объектов. Затем обобщим весь изученный материал в большой заключительной игре. Вы увидите, как проектируется и реализуется довольно объемная игра, а именно виртуальный симулятор классической азартной карточной игры Blackjack (без потертого сукна на ломберном столе как-нибудь обойдемся).

Исходный код к книге

Весь исходный код к примерам из этой книги доступен в Интернете по адресу www.cengageptr.com/downloads

Об авторе

Майкл Доусон — автор, пишущий о компьютерных играх, а также преподаватель, обучающий студентов искусству и науке создания компьютерных игр. Майкл разрабатывал и читал курсы по программированию игр на факультете UCLA Extension в Калифорнийском университете Лос-Анджелеса (студенты этого факультета получают второе высшее образование). Также Майкл читал лекции в Академии цифровых и медиатехнологий (DMA) и в Кинематографической школе Лос-Анджелеса. Книги Доусона входят в обязательную программу многих университетов и колледжей в США.

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

В реальности Майкл известен как автор нескольких книг: Beginning C++ Through Game Programming, Python Programming for the Absolute Beginner, C++ Projects: Programming with Text-Based Games и Guide to Programming with Python. Доусон получил степень бакалавра кибернетики в университете Южной Калифорнии. Подробнее почитать об авторе и его книгах можно на персональном сайте автора, здесь же вы найдете ответы на многие вопросы по книгам Майкла.

Более подробно с книгой можно познакомиться на сайте издательства
Оглавление
Отрывок

Для Хаброжителей скидка 25% по купону — Изучаем C++

Комментарии (19)


  1. laphroaig
    12.11.2015 12:39
    +1

    Давно подыскиваю интересную книжку для сына, что-бы сразу можно было «пощупать», что это такое, а не тривиальный «Hello, world!». Особенно радует, что такая книга появилась для C++


    1. BloodJohn
      12.11.2015 14:34

      Отчего не хотите с Си начинать? (без плюсов)


      1. splatt
        13.11.2015 02:19

        Мне кажется, лучше сразу с Ассемблера.


      1. AndreyDmitriev
        13.11.2015 11:38
        +1

        Если вы заглянете в обсуждаемую здесь книжку, то увидите, что «плюсы» там начинаются примерно с середины, а до этого там почти что чистый «Керниган и Ричи» с той лишь разницей, что не фаренгейты в градусы пересчитываются, а делаются простые консольные игрушки типа «угадай номер». Ну и printf походу на cout << заменен. В принципе книжка вполне годная. Я помню, как я в середине девяностых читал классику Страуструпа в несколько попыток и чуть не сломал себе голову. Если б у меня тогда была книжка подобная этой, то все было бы куда как проще.


      1. poxu
        13.11.2015 11:42
        +1

        Если целью является изучение С++, то изучать Си перед этим попросту вредно.


  1. ptitca_zu
    12.11.2015 12:56
    +1

    Читал на английском. Неплохо с ней освежить свои знания по плюсам, но ничего специфично игрового там нет. Единственное отличие от, скажем, «Tier 1 Beginner's Guide» в том, что в качестве примеров консольные игры.


  1. MTonly
    12.11.2015 13:14
    +5

    Когда уже издательства начнут использовать для кода более плотные моноширинные шрифты вместо трудновоспринимаемых шрифтов типа Courier New с патологически тонкими штрихами? Например, в PDF-примере данной книги штрихи букв во фрагментах кода почти вдвое (!) тоньше штрихов основного текста — это автоматически делает книгу значительно менее ценной.


    1. roman_kashitsyn
      15.11.2015 11:55

      Заметил, что в последнее время в зарубежных книгах всё чаще используется Ubuntu Mono. Вроде бы ничего не мешает использовать его и в русских книгах…


  1. snegovikufa
    13.11.2015 08:58

    Что-то ссылка на загрузку исходников не туда ведет.


  1. avdept
    13.11.2015 14:16

    А электронного варианта нету? Бумажный вариант в другую страну будет идти долго


    1. Olej
      13.11.2015 14:43

      Вот отсюда books.ru — приходит и быстро и без проблем.
      Только цена кусачая — 599 руб.… по моему мнению (IMHO) не адекватная.


      1. avdept
        13.11.2015 15:36

        Там тоже не вижу электронного варианта


        1. Olej
          13.11.2015 17:56

          да нет там электронного варианта, да и быть не может, для недавно вышедших изданий — это сайт издательства (их эл. магазин), а не холивар ;-)


          1. MTonly
            13.11.2015 18:00
            +1

            7-страничный PDF-фрагмент существует, значит есть и полная версия, из которой этот фрагмент вырезан. ;-)


            1. monah_tuk
              13.11.2015 18:25

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


          1. avdept
            13.11.2015 19:07

            Не ради холивара пишу. Мне книгу ждать прийдется думаю минимум месяца 3-4 и то не факт что дойдет. Торрент-эдишна тоже нету пока, только старый


            1. Olej
              13.11.2015 19:22

              Я тоже не ради холивара пишу: мне все книги Р.Стивенса (по 1000 стр.каждая) издательства «Питер» (того самого) с магазина «Символ-Плюс» (того самого, что на ссылке) прислали за 2 недели (это с учётом того, что шли они кругами через таможенный контроль в Киеве).


              1. avdept
                13.11.2015 19:25

                А когда последний раз вы заказывали? Учитывая отношения между странами какая вероятность что она вообще дойдет?


                1. Olej
                  13.11.2015 21:55

                  Заказывал более-менее давно… но — ходит.