Глава 1. Типы, переменные, стандартный ввод-вывод. Игра «Утраченный клад» 29
Введение в C++ 29
Использование языка C++ при программировании игр 30
Создание исполняемого файла 30
Исправление ошибок 31
Понятие о стандарте ISO 32
Пишем первую программу на C++ 33
Знакомство с программой Game Over 33
Комментирование кода 34
Использование пробелов 34
Включение других файлов 35
Определение функции main() 35
Отображение текста в стандартном выводе 36
Завершение инструкций 37
Возвращение значения от функции mainQ 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
Использование векторной функции-члена insertQ 137
Использование векторной функции-члена eraseQ 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
Знакомство с программой 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. Создание первой программы на языке C++ 341
Приложение 2. Приоритет операторов языка C++ 347
Приложение 3. Ключевые слова языка C++ 349
Приложение 4. Таблица символов ASCII 350
Приложение 5. Управляющие последовательности 352
Спасибо!