 |
Изучаем C++ через программирование игр
Доусон М.
Год выпуска: 2021
ISBN: 978-5-4461-1791-8
Переплёт: мягкий
352 страниц
Цена: 519.00 грн.
|
Если вы хотите научиться программировать первоклассные игры, вам просто необходимо изучить язык С++. Книга "Изучаем C++ через программирование игр" поможет вам освоить разработку игр с самых азов, независимо от того, есть ли у вас опыт программирования. Гораздо интересней учиться, когда обучение превращается в игру. Каждая глава книги описывает самостоятельный игровой проект. В заключительной главе вам предстоит написать сложную игру, которая объединяет все приемы программирования, рассмотренные в предыдущих главах. Книга, которую вы держите в руках, идеально подойдет для начинающего программиста, планирующего не только как следует освоить непростой язык С++, но и поупражняться в программировании игр.
Оглавление книги "Изучаем C++ через программирование игр"
Благодарности. 19 Об авторе. 20 Введение. 21 Для кого эта книга. 22 Как построена книга. 23 Условные обозначения, используемые в книге. 25 Исходный код к книге. 26 Несколько слов о компиляторах. 27 От издательства. 28 Глава 1. Типы, переменные, стандартный ввод-вывод. Игра "Утраченный клад". 29 Введение в C++. . . . . . . . . . . . . . . . . . . . . . 29 Использование языка C++ при программировании игр. 30 Создание исполняемого файла. 30 Исправление ошибок. 31 Понятие о стандарте ISO. 32 Пишем первую программу на C++. 33 Знакомство с программой Game Over. 33 Комментирование кода. 34 Использование пробелов. 34 Включение других файлов. 35 Определение функции main(). 35 Отображение текста в стандартном выводе. 36 Завершение инструкций. 37 Возвращение значения от функции main(). 37 Работа с пространством имен std. 37 Знакомство с программой Game Over 2.0. 38 Использование директивы using. 38 Знакомство с программой Game Over 3.0. 38 Использование объявлений using. 39 Когда следует использовать using. 39 Работа с арифметическими операторами. 39 Знакомство с программой Expensive Calculator. 40 Сложение, вычитание, умножение. 40 Понятие о делении без остатка и делении с плавающей запятой. 41 Работа с оператором деления по модулю. 41 Понятие о последовательности операций. 41 Объявление и инициализация переменных. 42 Знакомство с программой Game Stats. 42 Понятие о примитивах. 43 Понятие о модификаторах типов. 43 Объявление переменных. 44 Именование переменных. 45 Присваивание значений переменным. 46 Инициализация переменных. 47 Отображение значений переменных. 47 Получение пользовательского ввода. 48 Определение новых имен для типов. 48 Типы, которые следует использовать. 48 Выполнение арифметических операций с применением переменных. 49 Знакомство с программой Game Stats 2.0. 49 Изменение значения переменной. 50 Использование комбинированных операторов присваивания. 50 Использование операторов инкремента и декремента. 51 Что делать с целочисленным переполнением. 52 Работа с константами. 53 Знакомство с программой Game Stats 3.0. 53 Использование констант. 54 Работа с перечислениями. 55 Игра "Утраченный клад". 55 Настройка параметров программы. 56 Получение информации от игрока. 57 Сюжет. 57 Резюме. 58 Вопросы и ответы. 59 Вопросы для обсуждения. 60 Упражнения. 61 Глава 2. Истина, ветвление и игровой цикл. Игра "Угадай число". 62 Понятие об истине. 62 Использование инструкции if. 63 Знакомство с программой Score Rater. 63 Проверка условий true и false. 64 Интерпретация значения как истинного или ложного. 65 Работа с реляционными операторами. 66 Вложение инструкций if. 66 Работа с условием else. 67 Знакомство с программой Score Rater 2.0. 67 Создание двух способов ветвления. 69 Использование последовательности инструкций с помощью условий else. 69 Знакомство с программой Score Rater 3.0. 70 Создание последовательности инструкций if с применением условий else. 71 Использование инструкции switch. 71 Знакомство с программой Menu Chooser. 72 Создание нескольких вариантов ветвления. 74 Использование циклов while. 74 Знакомство с программой Play Again. 74 Работа с циклом while. 75 Использование циклов do. 75 Знакомство с программой Play Again 2.0. 76 Работа с циклом do. 77 Использование инструкций break и continue. 77 Знакомство с программой Finicky Counter. 78 Создание цикла while (true). 79 Использование инструкции break для выхода из цикла. 79 Использование инструкции continue для перехода в начало цикла. 79 Когда следует использовать инструкции break и continue. 80 Использование логических операторов. 80 Знакомство с программой Designers Network. 80 Использование логического оператора "И". 82 Использование логического оператора "ИЛИ". 83 Использование логического оператора "НЕ". 84 Понятие о порядке операций. 84 Генерирование случайных чисел. 85 Знакомство с программой Die Roller. 85 Вызов функции rand(). 86 Посев генератора случайных чисел. 87 Расчет числа в заданном диапазоне. 88 Понятие об игровом цикле. 88 Знакомство с игрой Guess My Number. 90 Применение игрового цикла. 90 Установка игровых параметров. 91 Создание игрового цикла. 92 Завершение игры. 92 Резюме. 93 Вопросы и ответы. 94 Вопросы для обсуждения. 95 Упражнения. 96 Глава 3. Циклы for, строки и массивы. Игра "Словомеска". 97 Использование циклов for. 97 Знакомство с программой Counter. 98 Подсчеты с помощью циклов for. 99 Использование пустых инструкций в циклах for. 100 Вложение циклов for. 101 Понятие об объектах. 102 Работа со строковыми объектами. 103 Знакомство с программой String Tester. 104 Создание строковых объектов. 105 Конкатенация строковых объектов. 106 Использование функции-члена size(). 106 Индексация объекта string. 106 Перебор символов в объектах String. 107 Использование функции-члена find(). 108 Использование функции-члена erase(). 108 Использование функции-члена empty(). 109 Работа с массивами. 109 Знакомство с программой Hero's Inventory. 109 Создание массивов. 111 Индексация массивов. 112 Обращение к функциям-членам элемента массива. 113 Следите за границами массива. 113 Си-строки. 114 Использование многомерных массивов. 115 Знакомство с программой Tic-Tac-Toe Board. 115 Создание многомерных массивов. 116 Индексация многомерных массивов. 117 Знакомство с игрой "Словомеска". 117 Приступаем к разработке программы. 118 Выбор слова для перемешивания. 118 Перемешивание слова. 119 Приглашение игрока. 120 Начало игрового цикла. 120 Прощание. 121 Резюме. 121 Вопросы и ответы. 122 Вопросы для обсуждения. 123 Упражнения. 124 Глава 4. Библиотека стандартных шаблонов. Игра "Виселица". 125 Знакомство с библиотекой стандартных шаблонов. 125 Работа с векторами. 126 Знакомство с программой Hero's Inventory 2.0. 127 Подготовка к работе с векторами. 128 Объявление вектора. 128 Работа с функцией-членом push_back( ). 129 Работа с функцией-членом size(). 129 Индексация векторов. 130 Вызов функций-членов элемента. 130 Использование функции-члена pop_back(). 130 Использование функции-члена clear(). 131 Использование функции-члена empty(). 131 Работа с итераторами. 131 Знакомство с программой Hero's Inventory 3.0. 131 Объявление итераторов. 133 Перебор содержимого вектора. 134 Изменение значения элемента вектора. 136 Доступ к функциям-членам элемента вектора. 136 Использование векторной функции-члена insert(). 137 Использование векторной функции-члена erase(). 138 Использование алгоритмов. 138 Знакомство с программой High Scores. 138 Подготовка к использованию алгоритмов. 140 Использование алгоритма find(). 140 Использование алгоритма random_shuffle(). 141 Использование алгоритма sort(). 141 Понятие о производительности векторов. 142 Подробнее о росте векторов. 142 Подробнее о вставке и удалении элементов. 144 Исследование других контейнеров библиотеки STL. 144 Планирование программ. 145 Использование псевдокода. 146 Пошаговое усовершенствование программы. 146 Знакомство с программой "Виселица". 147 Планирование игры. 147 Подготовка программы. 148 Инициализация переменных и констант. 148 Начало основного цикла. 149 Получение вариантов от пользователя. 149 Конец игры. 150 Резюме. 150 Вопросы и ответы. 151 Вопросы для обсуждения. 153 Упражнения. 153 Глава 5. Функции. Игра "Безумные библиотекари". 154 Создание функций. 154 Знакомство с программой Instructions. 154 Объявление функций. 155 Определение функций. 156 Вызов функций. 157 Понятие об абстрагировании. 157 Использование параметров и возвращаемых значений. 157 Знакомство с программой Yes or No. 158 Возврат значения. 159 Запись значений в параметры. 160 Понятие об инкапсуляции. 161 Понятие о переиспользовании ПО. 162 Работа с областями видимости. 163 Знакомство с программой Scoping. 163 Работа с отдельными областями видимости. 164 Работа с вложенными областями видимости. 165 Использование глобальных переменных. 166 Знакомство с программой Global Reach. 167 Объявление глобальных переменных. 168 Доступ к глобальным переменным. 168 Скрывание глобальных переменных. 168 Изменение глобальных переменных. 169 Минимизация использования глобальных переменных. 169 Использование глобальных констант. 170 Использование аргументов, задаваемых по умолчанию. 170 Знакомство с программой Give Me a Number. 171 Задание аргументов, применяемых по умолчанию. 172 Присваивание параметрам аргументов, задаваемых по умолчанию. 172 Переопределение аргументов, задаваемых по умолчанию. 173 Перегрузка функций. 173 Знакомство с программой Triple. 174 Создание перегруженных функций. 175 Вызов перегруженных функций. 175 Подстановка вызова функций. 176 Знакомство с программой Taking Damage. 176 Задание функций для подстановки. 177 Вызов подставленных функций. 177 Знакомство с программой "Безумные библиотекари". 178 Подготовка программы. 178 Функция main(). 179 Функция askText(). 179 Функция askNumber(). 180 Функция tellStory(). 180 Резюме. 181 Вопросы и ответы. 181 Вопросы для обсуждения. 183 Упражнения. 183 Глава 6. Ссылки. Игра "Крестики-нолики". 184 Использование ссылок. 184 Знакомство с программой Referencing. 184 Создание ссылок. 185 Доступ к значениям по ссылкам. 186 Изменение значений через указывающие на них ссылки. 187 Передача ссылок для изменения аргументов. 187 Знакомство с программой Swap. 188 Передача по значению. 189 Передача по ссылке. 190 Передача ссылок для обеспечения эффективности. 190 Знакомство с программой Inventory Displayer. 190 Несколько слов о подводных камнях, связанных с передачей ссылок. 192 Объявление параметров как константных ссылок. 192 Передача константной ссылки. 192 Решение о том, как передавать аргументы. 193 Возврат ссылок. 193 Знакомство с программой Inventory Referencer. 194 Возврат ссылки. 195 Отображение значения возвращенной ссылки. 196 Присваивание возвращенной ссылки другой ссылке. 196 Присваивание возвращенной ссылки переменной. 196 Изменение объекта с помощью возвращенной ссылки. 196 Знакомство с игрой "Крестики-нолики". 197 Планирование игры. 197 Подготовка программы. 200 Функция main(). 201 Функция askYesNo(). 202 Функция askNumber(). 202 Функция humanPiece(). 203 Функция opponent(). 203 Функция displayBoard(). 203 Функция winner(). 204 Функция isLegal(). 205 Функция humanMove(). 206 Функция computerMove(). 206 Функция announceWinner(). 209 Резюме. 209 Вопросы и ответы. 210 Вопросы для обсуждения. 212 Упражнения. 212 Глава 7. Указатели. Игра "Крестики-нолики 2.0". 213 Основы работы с указателями. 213 Знакомство с программой Pointing. 214 Объявление указателей. 215 Инициализация указателей. 216 Присваивание адресов указателям. 216 Разыменование указателей. 217 Переприсваивание указателей. 218 Использование указателей на объекты. 219 Понятие об указателях и константах. 219 Использование константного указателя. 220 Использование указателя на константу. 221 Использование константного указателя на константу. 221 Константы и указатели: итог. 222 Передача указателей. 223 Знакомство с программой Swap Pointer Version. 223 Передача по значению. 224 Передача константного указателя. 225 Возврат указателей. 226 Знакомство с программой Inventory Pointer. 226 Возврат указателя. 227 Использование возвращенного указателя для отображения значения. 228 Присваивание указателю возвращенного указателя . 229 Присваивание переменной значения, на которое указывает возвращенный указатель. 229 Изменение объекта посредством возвращенного указателя. 230 Понятие о взаимоотношениях указателей и массивов. 231 Знакомство с программой Array Passer. 231 Использование имени массива в качестве константного указателя. 232 Передача и возврат массивов. 233 Знакомство с программой "Крестики-нолики 2.0". 234 Резюме. 235 Вопросы и ответы. 236 Вопросы для обсуждения. 238 Упражнения. 238 Глава 8. Классы. Игра "Тамагочи". 239 Определение новых типов. 239 Знакомство с программой Simple Critter. 239 Определение класса. 241 Определение функций-членов. 242 Инстанцирование объектов. 242 Доступ к членам данных. 243 Вызов функций-членов. 243 Использование конструкторов. 244 Знакомство с программой Constructor Critter. 244 Объявление и определение конструктора. 245 Автоматический вызов конструктора. 246 Установка уровней доступа к членам. 246 Знакомство с программой Private Critter. 247 Задание открытых и закрытых уровней доступа. 248 Определение функций доступа. 249 Определение константных функций-членов. 250 Использование статических членов данных и функций-членов. 251 Объявление и инициализация статических членов данных. 252 Обращение к статическим членам данных. 253 Объявление и определение статических функций-членов. 254 Вызов статических функций-членов. 254 Знакомство с игрой "Тамагочи". 255 Планирование игры. 255 Планирование псевдокода. 257 Класс Critter. 257 Функция main(). 260 Резюме. 261 Вопросы и ответы. 262 Вопросы для обсуждения. 264 Упражнения. 264 Глава 9. Более сложные классы и работа с динамической памятью. Игровое лобби. 265 Использование агрегирования. 265 Знакомство с программой Critter Farm. 266 Использование членов данных, являющихся объектами. 268 Использование контейнерных членов данных. 268 Использование дружественных функций и перегрузка операторов. 269 Знакомство с программой Friend Critter. 269 Создание дружественных функций. 271 Перегрузка операторов. 272 Динамическое выделение памяти. . . . . . . . . . . . . . . 272 Знакомство с программой Heap. 273 Использование оператора new. 274 Использование оператора delete. 275 Избегаем утечек памяти. 276 Работа с членами данных и кучей. 278 Знакомство с программой Heap Data Member. 278 Объявление членов данных, которые указывают на значения в куче. 281 Объявление и определение деструкторов. 282 Объявление и определение конструкторов копирования. 283 Перегрузка оператора присваивания. 286 Знакомство с программой Game Lobby. 288 Класс Player. 289 Класс Lobby. 291 Функция-член Lobby::AddPlayer(). 292 Функция-член Lobby::RemovePlayer(). 294 Функция-член Lobby::Clear(). 295 Функция-член operator<<(). 295 Функция main(). 295 Резюме. 296 Вопросы и ответы. 297 Вопросы для обсуждения. 298 Упражнения. 299 Глава 10. Наследование и полиморфизм. Игра Blackjack. 300 Знакомство с наследованием. 300 Знакомство с программой Simple Boss. 302 Наследование от базового класса. 303 Создание объектов производного класса. 304 Использование унаследованных членов. 305 Управление доступом при работе с наследованием. 305 Знакомство с программой Simple Boss 2.0. 305 Использование модификаторов доступа для членов данных. 307 Использование модификаторов доступа при создании производных классов. 307 Вызов и переопределение функций-членов базового класса. 308 Знакомство с программой Overriding Boss. 308 Вызов конструкторов базового класса. 310 Объявление виртуальных функций-членов базового класса. . . . . 310 Переопределение виртуальных функций-членов базового класса. 311 Вызов функций-членов базового класса. 312 Использование перегруженных операторов присваивания и конструкторов копирования в производных классах. 313 Знакомство с полиморфизмом. 313 Знакомство с программой Polymorphic Bad Guy. 314 Использование указателей базового класса для объектов производного класса. 315 Определение виртуальных деструкторов. 317 Использование абстрактных классов. 317 Знакомство с программой Abstract Creature. 318 Объявление чистых виртуальных функций. 319 Наследование от абстрактного класса. 319 Знакомство с игрой Blackjack. 320 Разработка классов. 321 Планирование логики игры. 324 Класс Card. 325 Класс Hand. 326 Класс GenericPlayer. 328 Класс Player. 330 Класс House. 331 Класс Deck. 331 Класс Game. 333 Функция main(). 336 Перегрузка функции operator<<(). 336 Резюме. 338 Вопросы и ответы. 338 Вопросы для обсуждения. 340 Упражнения. 340 Приложение 1. Создание первой программы на языке С++. 341 Приложение 2. Приоритет операторов языка С++. 347 Приложение 3. Ключевые слова языка С++. 349 Приложение 4. Таблица символов ASCII. 350 Приложение 5. Управляющие последовательности. 352
|