Содержание

Уроки программирования на языке C++

Здесь представлены более 200 бесплатных уроков по программированию на языке С++. Онлайн курсы программирования с нуля для начинающих, где рассматриваются основы и тонкости языка программирования C++. Бесплатное обучение программированию, а именно учебник с практическими заданиями и тестами. Неважно, имеете ли Вы опыт или нет, эти уроки по программированию помогут Вам начать создавать, компилировать и отлаживать программы на языке C++ в разных средах разработки: Visual Studio, Code::Blocks, Xcode или Eclipse.

Множество примеров и подробных разъяснений. Отлично подойдут как для новичков (чайников), так и для более продвинутых. Объясняется всё с нуля и до самых деталей абсолютно бесплатно!

Также рассматривается пошаговое создание игры на С++ и 70+ заданий для проверки своих навыков программирования. 

Глава №0. Введение. Начало работы

Глава №1. Основы C++

Глава №2. Переменные и основные типы данных в C++

Глава №3. Операторы в C++

Глава №4. Область видимости и другие типы переменных в C++

Глава №5. Порядок выполнения кода в программе. Циклы, ветвления в C++

Глава №6. Массивы, Строки, Указатели и Ссылки в C++

Глава №7. Функции в C++

Глава №8. Основы ООП в C++

Глава №9. Перегрузка операторов в C++

Глава №10. Введение в связи между объектами в C++

Глава №11. Наследование в C++

Глава №12. Виртуальные функции в C++

Глава №13. Шаблоны в C++

Глава №14. Исключения в C++

Глава №15. Умные указатели и Семантика перемещения в C++

Глава №16. Стандартная библиотека шаблонов (STL) в С++

Глава №17. std::string в С++

Глава №18. Ввод/Вывод в С++

Дополнительные уроки

Финал

Адаптированный перевод с LearnCpp.com.

Пошаговое создание игры на С++/MFC

Отдельное спасибо Дмитрию Бушуеву за помощь в переводе с cprogramming. com.

Задания по С++

языки, движки и все, что нужно знать начинающему разработчику — руководства на Skillbox

Игровая механика — это то, какими способами игрок взаимодействует с миром. Совокупность игровых механик составляет игровой процесс. Например, вы уже реализовали возможность ходьбы и прыжков. Эта игра, скорее, платформер.

А если добавите механику получения опыта, повышения уровней, прокачки навыков, — игра станет походить на RPG. Механика — такая же важная составляющая игры, как и сюжет или графика.

Ещё один пример: вы написали сценарий к игре, в которой нужно сбежать из тюрьмы. Даже если игра будет самой линейной в мире, игровая механика может всё изменить:

  • если добавить стрельбу, то будет экшн;
  • если игрок будет безоружен, — стелс;
  • если ещё и замки нужно взламывать, то это уже головоломка или пазл.

Будучи программистом, придётся уделять много времени механике.

Раньше графика создавалась с помощью программного кода, потом придумали текстуры и спрайты, а для 3D-игр используются модели. Подготовив все текстуры и модели, нужно добавить их в игру.

В движке достаточно просто загрузить нужные файлы и прикрепить их к нужным моделям. Иначе — прописывать всё вручную, в том числе и анимацию.

Пример анимации двумерного персонажа

Для анимации 2D-объектов создаётся текстура по типу той, что на изображении выше. Она разбивается на равные части, которые сменяют друг друга. То есть игрок сначала видит первый кадр, который потом сменяется на второй, а затем на третий — это создает иллюзию движения.

Анимация в действии

Если брать 3D-модель, то используется скелетная анимация — модель как бы нанизывается на специальный каркас (скелет) с подвижными частями. Движение этих частей прописывается в коде.

На скриншоте видно, как персонаж сгибает руку в местах с точками (вершинами). Таких точек может быть очень много, если требуется сложная анимация — жесты, мимика и так далее.

Создаётся анимация так: прописываются точки координат или захватываются движения реального актера.

Первый способ сложный, но дешёвый, потому что от программиста требуется только прописать движения — сдвинуть точку A1 на координаты (50,240).

Второй проще, потому что достаточно одеть актеров в специальные костюмы с маячками, отснять это и перенести в игру. Но тут, конечно, придётся оплатить костюмы, павильон, работу операторов, постановщиков и актёров.

Программирование с нуля — как научиться

Быть программистом престижно, и многие мечтают о такой работе. Действительно, зарплаты их около 2-3 тысячи долларов, и даже начинающие имеют доход выше среднего российского. Но реально ли стать программистом с нуля, особенно, если вы гуманитарий по образованию?

Какое требуется образование

Сразу успокою, что для того, чтоб достигнуть хорошего уровня в программировании, достаточно и 11 классов школы. Да, есть задачи, требующие высшей математики, но в 90% случаев этого не требуется. Вы спокойно научитесь и без математики программировать пользовательские интерфейсы, да и стандартную серверную часть. Подтверждением этой возможности является то, что, например, компания EPAM набирала в вечернюю школу людей в том числе с гуманитарным образованием; правда, уже отошла от этой практики.

Для программирования нужен особый склад ума, причем это даже не математический склад. Бывает, что на курсе учатся люди, отлично знающие математику, но им плохо дается программирование (часто это девушки). А бывает, наоборот. Кстати, после “Прикладной математики” многие идут работать программистами и не понимают, зачем пять лет брали интегралы.

Но все же специальные курсы по информатике, которые входят в программу высшего образования по специальности, не будут лишними. Они хоть и не используются в работе напрямую, но косвенно облегчают будущую работу  – это архитектура ЭВМ, сети, базы данных, структуры данных и алгоритмы обработки. Они не предлагаются на онлайн-курсах, поскольку это не непосредственно язык, который нужен в работе, но их стоит изучить. Хотя все эти толстые учебники могут показаться занудными:

  • Эндрю Таненбаум, Компьютерные сети
  • Эндрю Таненбаум, Архитектура компьютера
  • Эндрю Таненбаум, Операционные системы
  • Кнут, Искусство программирования

Особенности отрасли

Второе, что нужно знать – если вы даже изучили все эти толстые учебники, для работы их недостаточно. Надо еще хорошо изучить конкретный язык программирования, на котором вы будете писать, а это огромный объем информации, причем эта информация очень быстро меняется. Например, Java 5, на которой писали в 2010 году уже не та, что Java 8, на которой пишут в 2018. Поменялось много всего, и даже опытный программист вынужден переучиваться.

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

В чем состоит работа

Обычно вам подбрасывают готовый проект, в котором есть “баги”, то есть ошибки, которые надо исправить. Код писали не вы, и чтобы вникнуть в задачи, придется потрудиться. И так постоянно, ничего автоматически не делается, во все надо вникать и постигать с начала.

Также стандартна ситуация, когда требуется написать что-то новое – “фитчи”, но тоже в рамках готового проекта, то есть от знакомства с кодом никуда не уйти.

И всему этому не учат в институте, программист вынужден прокапывать большие объемы прямо на рабочем месте.

Редко, но бывает пишут проект с нуля – обычно это достается опытным и наиболее сообразительным. Если начать писать с нуля плохо, проект потом никто не сможет поддерживать и дописывать, поэтому важно знать шаблоны проектирования, это отдельная книга:

  • Э. Гамма Р. Хелм Р. Джонсон Дж. Влиссидес, Паттерны проектирования

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

Тут сотрудник Google рассказывает о своей работе