Благодарности
Об авторе
Введение
Для кого эта книга
Как построена книга
Условные обозначения, используемые в книге
Исходный код к книге
Несколько слов о компиляторах
От издательства
Глава 1. Типы, переменные, стандартный ввод-вывод. Игра «Утраченный клад»
Введение в C++
Использование языка C++ при программировании игр
Создание исполняемого файла
Исправление ошибок
Понятие о стандарте ISO
Пишем первую программу на C++
Знакомство с программой Game Over
Комментирование кода
Использование пробелов
Включение других файлов
Определение функции main()
Отображение текста в стандартном выводе
Завершение инструкций
Возвращение значения от функции main()
Работа с пространством имен std
Знакомство с программой Game Over 2.0
Использование директивы using.
Знакомство с программой Game Over 3.0
Использование объявлений using
Когда следует использовать using
Работа с арифметическими операторами
Знакомство с программой Expensive Calculator
Сложение, вычитание, умножение
Понятие о делении без остатка и делении с плавающей запятой
Работа с оператором деления по модулю
Понятие о последовательности операций
Объявление и инициализация переменных
Знакомство с программой Game Stats
Понятие о примитивах
Понятие о модификаторах типов
Объявление переменных
Именование переменных
Присваивание значений переменным
Инициализация переменных
Отображение значений переменных
Получение пользовательского ввода
Определение новых имен для типов
Типы, которые следует использовать
Выполнение арифметических операций с применением переменных
Знакомство с программой Game Stats 2.0
Изменение значения переменной
Использование комбинированных операторов присваивания
Использование операторов инкремента и декремента
Что делать с целочисленным переполнением
Работа с константами
Знакомство с программой Game Stats 3.0
Использование констант
Работа с перечислениями
Игра «Утраченный клад»
Настройка параметров программы
Получение информации от игрока
Сюжет
Резюме
Вопросы и ответы
Вопросы для обсуждения
Упражнения
Глава 2. Истина, ветвление и игровой цикл. Игра «Угадай число»
Понятие об истине
Использование инструкции if
Знакомство с программой Score Rater
Проверка условий true и false
Интерпретация значения как истинного или ложного
Работа с реляционными операторами
Вложение инструкций if
Работа с условием else
Знакомство с программой Score Rater 2.0
Создание двух способов ветвления
Использование последовательности инструкций с помощью условий else
Знакомство с программой Score Rater 3.0
Создание последовательности инструкций if с применением условий else
Использование инструкции switch
Знакомство с программой Menu Chooser
Создание нескольких вариантов ветвления
Использование циклов while
Знакомство с программой Play Again
Работа с циклом while
Использование циклов do
Знакомство с программой Play Again 2.0
Работа с циклом do
Использование инструкций break и continue
Знакомство с программой Finicky Counter
Создание цикла while (true)
Использование инструкции break для выхода из цикла
Использование инструкции continue для перехода в начало цикла
Когда следует использовать инструкции break и continue
Использование логических операторов
Знакомство с программой Designers Network
Использование логического оператора «И»
Использование логического оператора «ИЛИ»
Использование логического оператора «НЕ»
Понятие о порядке операций
Генерирование случайных чисел
Знакомство с программой Die Roller
Вызов функции rand()
Посев генератора случайных чисел
Расчет числа в заданном диапазоне
Понятие об игровом цикле
Знакомство с игрой Guess My Number
Применение игрового цикла
Установка игровых параметров
Создание игрового цикла
Завершение игры
Резюме
Вопросы и ответы
Вопросы для обсуждения
Упражнения
Глава 3. Циклы for, строки и массивы. Игра «Словомеска»
Использование циклов for
Знакомство с программой Counter
Подсчеты с помощью циклов for
Использование пустых инструкций в циклах for
Вложение циклов for
Понятие об объектах
Работа со строковыми объектами
Знакомство с программой String Tester
Создание строковых объектов
Конкатенация строковых объектов
Использование функции-члена size()
Индексация объекта string
Перебор символов в объектах String
Использование функции-члена find()
Использование функции-члена erase()
Использование функции-члена empty()
Работа с массивами
Знакомство с программой Hero's Inventory
Создание массивов
Индексация массивов
Обращение к функциям-членам элемента массива
Следите за границами массива
Си-строки
Использование многомерных массивов
Знакомство с программой Tic-Tac-Toe Board
Создание многомерных массивов
Индексация многомерных массивов
Знакомство с игрой «Словомеска»
Приступаем к разработке программы
Выбор слова для перемешивания
Перемешивание слова
Приглашение игрока
Начало игрового цикла
Прощание
Резюме
Вопросы и ответы
Вопросы для обсуждения
Упражнения
Глава 4. Библиотека стандартных шаблонов. Игра «Виселица»
Знакомство с библиотекой стандартных шаблонов
Работа с векторами
Знакомство с программой Hero’s Inventory 2.0
Подготовка к работе с векторами
Объявление вектора
Работа с функцией-членом push_back()
Работа с функцией-членом size()
Индексация векторов
Вызов функций-членов элемента
Использование функции-члена pop_back()
Использование функции-члена clear()
Использование функции-члена empty()
Работа с итераторами
Знакомство с программой Hero’s Inventory 3.0
Объявление итераторов
Перебор содержимого вектора
Изменение значения элемента вектора
Доступ к функциям-членам элемента вектора
Использование векторной функции-члена insert()
Использование векторной функции-члена erase()
Использование алгоритмов
Знакомство с программой High Scores
Подготовка к использованию алгоритмов
Использование алгоритма find()
Использование алгоритма random_shuffle()
Использование алгоритма sort()
Понятие о производительности векторов
Подробнее о росте векторов
Подробнее о вставке и удалении элементов
Исследование других контейнеров библиотеки STL
Планирование программ
Использование псевдокода
Пошаговое усовершенствование программы
Знакомство с программой «Виселица»
Планирование игры
Подготовка программы
Инициализация переменных и констант
Начало основного цикла
Получение вариантов от пользователя
Конец игры
Резюме
Вопросы и ответы
Вопросы для обсуждения
Упражнения
Глава 5. Функции. Игра «Безумные библиотекари»
Создание функций
Знакомство с программой Instructions
Объявление функций
Определение функций
Вызов функций
Понятие об абстрагировании
Использование параметров и возвращаемых значений
Знакомство с программой Yes or No
Возврат значения
Запись значений в параметры
Понятие об инкапсуляции
Понятие о переиспользовании ПО
Работа с областями видимости
Знакомство с программой Scoping
Работа с отдельными областями видимости
Работа с вложенными областями видимости
Использование глобальных переменных
Знакомство с программой Global Reach
Объявление глобальных переменных
Доступ к глобальным переменным
Скрывание глобальных переменных
Изменение глобальных переменных
Минимизация использования глобальных переменных
Использование глобальных констант
Использование аргументов, задаваемых по умолчанию
Знакомство с программой Give Me a Number
Задание аргументов, применяемых по умолчанию
Присваивание параметрам аргументов, задаваемых по умолчанию
Переопределение аргументов, задаваемых по умолчанию
Перегрузка функций
Знакомство с программой Triple
Создание перегруженных функций
Вызов перегруженных функций
Подстановка вызова функций
Знакомство с программой Taking Damage
Задание функций для подстановки
Вызов подставленных функций
Знакомство с программой «Безумные библиотекари»
Подготовка программы
Функция main()
Функция askText()
Функция askNumber()
Функция tellStory()
Резюме
Вопросы и ответы
Вопросы для обсуждения
Упражнения
Глава 6. Ссылки. Игра «Крестики-нолики»
Использование ссылок
Знакомство с программой Referencing
Создание ссылок
Доступ к значениям по ссылкам
Изменение значений через указывающие на них ссылки
Передача ссылок для изменения аргументов
Знакомство с программой Swap
Передача по значению
Передача по ссылке
Передача ссылок для обеспечения эффективности
Знакомство с программой Inventory Displayer
Несколько слов о подводных камнях, связанных с передачей ссылок
Объявление параметров как константных ссылок
Передача константной ссылки
Решение о том, как передавать аргументы
Возврат ссылок
Знакомство с программой Inventory Referencer
Возврат ссылки
Отображение значения возвращенной ссылки
Присваивание возвращенной ссылки другой ссылке
Присваивание возвращенной ссылки переменной
Изменение объекта с помощью возвращенной ссылки
Знакомство с игрой «Крестики-нолики»
Планирование игры
Подготовка программы
Функция main()
Функция askYesNo()
Функция askNumber()
Функция humanPiece()
Функция opponent()
Функция displayBoard()
Функция winner()
Функция isLegal()
Функция humanMove()
Функция computerMove()
Функция announceWinner()
Резюме
Вопросы и ответы
Вопросы для обсуждения
Упражнения
Глава 7. Указатели. Игра «Крестики-нолики 2.0»
Основы работы с указателями
Знакомство с программой Pointing
Объявление указателей
Инициализация указателей
Присваивание адресов указателям
Разыменование указателей
Переприсваивание указателей
Использование указателей на объекты
Понятие об указателях и константах
Использование константного указателя
Использование указателя на константу
Использование константного указателя на константу
Константы и указатели: итог
Передача указателей
Знакомство с программой Swap Pointer Version
Передача по значению
Передача константного указателя
Возврат указателей
Знакомство с программой Inventory Pointer
Возврат указателя
Использование возвращенного указателя для отображения значения
Присваивание указателю возвращенного указателя
Присваивание переменной значения, на которое указывает возвращенный указатель
Изменение объекта посредством возвращенного указателя
Понятие о взаимоотношениях указателей и массивов
Знакомство с программой Array Passer
Использование имени массива в качестве константного указателя
Передача и возврат массивов
Знакомство с программой «Крестики-нолики 2.0»
Резюме
Вопросы и ответы
Вопросы для обсуждения
Упражнения
Глава 8. Классы. Игра «Тамагочи»
Определение новых типов
Знакомство с программой Simple Critter
Определение класса
Определение функций-членов
Инстанцирование объектов
Доступ к членам данных
Вызов функций-членов
Использование конструкторов
Знакомство с программой Constructor Critter
Объявление и определение конструктора
Автоматический вызов конструктора
Установка уровней доступа к членам
Знакомство с программой Private Critter
Задание открытых и закрытых уровней доступа
Определение функций доступа
Определение константных функций-членов
Использование статических членов данных и функций-членов
Объявление и инициализация статических членов данных
Обращение к статическим членам данных
Объявление и определение статических функций-членов
Вызов статических функций-членов
Знакомство с игрой «Тамагочи»
Планирование игры
Планирование псевдокода
Класс Critter
Функция main()
Резюме
Вопросы и ответы
Вопросы для обсуждения
Упражнения
Глава 9. Более сложные классы и работа с динамической памятью. Игровое лобби
Использование агрегирования
Знакомство с программой Critter Farm
Использование членов данных, являющихся объектами
Использование контейнерных членов данных
Использование дружественных функций и перегрузка операторов
Знакомство с программой Friend Critter
Создание дружественных функций
Перегрузка операторов
Динамическое выделение памяти
Знакомство с программой Heap
Использование оператора new
Использование оператора delete
Избегаем утечек памяти
Работа с членами данных и кучей
Знакомство с программой Heap Data Member
Объявление членов данных, которые указывают на значения в куче
Объявление и определение деструкторов
Объявление и определение конструкторов копирования
Перегрузка оператора присваивания
Знакомство с программой Game Lobby
Класс Player
Класс Lobby
Функция-член Lobby::AddPlayer()
Функция-член Lobby::RemovePlayer()
Функция-член Lobby::Clear()
Функция-член operator<<()
Функция main()
Резюме
Вопросы и ответы
Вопросы для обсуждения
Упражнения
Глава 10. Наследование и полиморфизм. Игра Blackjack
Знакомство с наследованием
Знакомство с программой Simple Boss
Наследование от базового класса
Создание объектов производного класса
Использование унаследованных членов
Управление доступом при работе с наследованием
Знакомство с программой Simple Boss 2.0
Использование модификаторов доступа для членов данных
Использование модификаторов доступа при создании производных классов
Вызов и переопределение функций-членов базового класса
Знакомство с программой Overriding Boss
Вызов конструкторов базового класса
Объявление виртуальных функций-членов базового класса
Переопределение виртуальных функций-членов базового класса
Вызов функций-членов базового класса
Использование перегруженных операторов присваивания и конструкторов копирования в производных классах
Знакомство с полиморфизмом
Знакомство с программой Polymorphic Bad Guy
Использование указателей базового класса для объектов производного класса
Определение виртуальных деструкторов
Использование абстрактных классов
Знакомство с программой Abstract Creature
Объявление чистых виртуальных функций
Наследование от абстрактного класса
Знакомство с игрой Blackjack
Разработка классов
Планирование логики игры
Класс Card
Класс Hand
Класс GenericPlayer
Класс Player
Класс House
Класс Deck
Класс Game
Функция main()
Перегрузка функции operator<<()
Резюме
Вопросы и ответы
Вопросы для обсуждения
Упражнения
Приложение 1. Создание первой программы на языке С++
Приложение 2. Приоритет операторов языка С++
Приложение 3. Ключевые слова языка С++
Приложение 4. Таблица символов ASCII
Приложение 5. Управляющие последовательности
Пусть эта книга и освещает только базовые элементы языка, её несомненный плюс в том, что она предлагает закреплять полученные знания путём создания небольших игр. В каждой главе дан определённый игровой проект, на примере которого поясняется, как можно использовать «фишки» «плюсов». Книга подойдёт и тем, кто до нее не был знаком с программированием.