mirror of
https://github.com/salmer/CppDeveloperRoadmap.git
synced 2025-12-18 04:54:38 +03:00
Added list of pet-projects to petprojects.md (#39)
* Added list of pet-projects to petprojects.md
This commit is contained in:
@@ -1,3 +1,68 @@
|
||||
# Пет-проекты
|
||||
|
||||
TODO: Add project ideas
|
||||
Пет-проекты - это отличная возможность получить практический опыт при изучении языка программирования, а также библиотек и/или фреймворков. Также пет-проекты могут стать отправной точкой для собеседований и приглашением к диалогу, если вы только начинаете свою карьеру.
|
||||
|
||||
Часто возникают трудности с поиском и выбором идеи пет-проекта. Мы попробовали собрать небольшую коллекцию ссылок и идей, которые могут стать началом для вашего вдохновения. Ознакомившись с ним, возможно получится выбрать наиболее подходящую тему, или же список вдохновит на какую-либо собственную идею!
|
||||
|
||||
## Сторонние ресурсы
|
||||
|
||||
* [Google Summer of Code](https://summerofcode.withgoogle.com/archive)
|
||||
|
||||
Коллекция проектов, которые предлагались различными компаниями или комьюнити в рамках ежегодной программы стажировки студентов от Google. Архив содержит проекты за последние несколько лет. Представлено большое количество проектов для языка C++. Возможно вы найдете для себя что-то интересное в архиве для практики, либо попробуете свои силы в будущих стажировках.
|
||||
|
||||
* [Project based learning - C++](https://github.com/practical-tutorials/project-based-learning#cc)
|
||||
|
||||
Репозиторий содержит коллекцию пет-проектов, собранные для различных языков программирования. Также включает обширный список идей для C++.
|
||||
|
||||
* [Programming challenges](https://programming-challenges.jeremyjaydan.dev/) - [PNG изображение](https://programming-challenges.jeremyjaydan.dev/media/programming-challenges-v4.0.png)
|
||||
|
||||
Рулетка с идеями для пет-проектов. Настраиваете ожидаемую сложность проекта и запускаете рулетку. Дальше случайность решит за вас, какую задачу придется решать :)
|
||||
|
||||
|
||||
## Список идей для пет-проектов
|
||||
|
||||
### Игры
|
||||
|
||||
Ниже представлен список классических видеоигр, которые не содержат в себе сложного ИИ или динамическую генерацию мира. Вы можете реализовывать одну из нижеперечисленных игр, а далее дорабатывать дополнительный функционал. В качестве графической библиотеки вы можете использовать [SFML](https://www.sfml-dev.org/). Это простая в использовании библиотека, которая предоставляет достаточный набор возможностей для создания несложных графических интерфейсов для 2D или 2.5D игр при помощи [спрайтов](https://ru.wikipedia.org/wiki/%D0%A1%D0%BF%D1%80%D0%B0%D0%B9%D1%82_(%D0%BA%D0%BE%D0%BC%D0%BF%D1%8C%D1%8E%D1%82%D0%B5%D1%80%D0%BD%D0%B0%D1%8F_%D0%B3%D1%80%D0%B0%D1%84%D0%B8%D0%BA%D0%B0)). Если же вы захотите сделать что-то более сложное, где применяется физика, то можете начать с простых движков, например: [Box2D](https://box2d.org/) или же освоить более продвинутые: [Cocos2D](https://www.cocos.com/en/), [Unreal Engine](https://www.unrealengine.com/en-US/) и т.п. Не забывайте о правиле: "от простого, к сложному". Начинайте с простого, и постепенно повышайте сложность.
|
||||
|
||||
* [Змейка](https://habr.com/ru/company/microsoftlumia/blog/136629/)
|
||||
* [Тетрис](https://ru.wikipedia.org/wiki/%D0%A2%D0%B5%D1%82%D1%80%D0%B8%D1%81)
|
||||
* [Жизнь](https://ru.wikipedia.org/wiki/%D0%98%D0%B3%D1%80%D0%B0_%C2%AB%D0%96%D0%B8%D0%B7%D0%BD%D1%8C%C2%BB)
|
||||
* [Пятнашки](https://ru.wikipedia.org/wiki/%D0%A2%D0%B5%D1%82%D1%80%D0%B8%D1%81)
|
||||
* [Арканоид](https://ru.wikipedia.org/wiki/Arkanoid)
|
||||
* [Сапер](https://ru.wikipedia.org/wiki/%D0%A1%D0%B0%D0%BF%D1%91%D1%80_(%D0%B8%D0%B3%D1%80%D0%B0))
|
||||
* [2048](https://ru.wikipedia.org/wiki/2048_(%D0%B8%D0%B3%D1%80%D0%B0))
|
||||
* [Пасьянс](https://ru.wikipedia.org/wiki/%D0%9F%D0%B0%D1%81%D1%8C%D1%8F%D0%BD%D1%81)
|
||||
* [Пасьянс-паук](https://ru.wikipedia.org/wiki/%D0%9F%D0%B0%D1%83%D0%BA_(%D0%BF%D0%B0%D1%81%D1%8C%D1%8F%D0%BD%D1%81))
|
||||
* [Пинг-понг](https://ru.wikipedia.org/wiki/Pong_(%D0%B8%D0%B3%D1%80%D0%B0))
|
||||
* [Donkey Kong](https://ru.wikipedia.org/wiki/Donkey_Kong)
|
||||
* [Лабиринт](https://ru.wikipedia.org/wiki/%D0%9B%D0%B0%D0%B1%D0%B8%D1%80%D0%B8%D0%BD%D1%82_(%D0%B6%D0%B0%D0%BD%D1%80))
|
||||
* [Сетевые игры для 2-4 игроков: пинг-понг, морской бой, покер, шашки, шахматы и т.д.](https://ru.wikipedia.org/wiki/%D0%9C%D0%BD%D0%BE%D0%B3%D0%BE%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%B0%D1%8F_%D0%B8%D0%B3%D1%80%D0%B0)
|
||||
|
||||
Рекомендуем ознакомиться с нижеперечисленными источниками, которые содержат больше информации о различных алгоритмах для игростроения. Они могут пригодиться для одной из вышеперечисленных игр, или же для собственных идей:
|
||||
* https://www.redblobgames.com/
|
||||
* http://www.squidi.net/three/
|
||||
|
||||
|
||||
---
|
||||
|
||||
### Приложения
|
||||
|
||||
При создании приложения начинайте с самой простой реализации консольного приложения. После каждого выполненного шага ставьте более сложную задачу, например: добавить графический интерфейс для приложения, научить приложение запрашивать данные из источника при помощи http-запроса, а затем записать/прочитать полученные данные в тестовый файл/базу данных и т.д. Не забывайте о принципе: "от простого к сложному".
|
||||
|
||||
* Сетевой чат (на чистых сокетах или при помощи [gRPC](https://grpc.io/docs/languages/cpp/quickstart/))
|
||||
* Калькулятор
|
||||
* Файловый менеджер
|
||||
* Конвертер валют
|
||||
* Получение списка Pull-Requests или Issues в любом Github репозитории
|
||||
* Автоматизация рутинных: различные вычисления и формирование отчетов в виде таблиц
|
||||
|
||||
---
|
||||
|
||||
### Студенческие приложения
|
||||
|
||||
Нижеперечисленные примеры больше подойдут для студентов, которые проходят или недавно проходили базовые дисциплины: линейная алгебра, аналитическая геометрия, математический анализ, физика и т.д. Задачи по применению изученной теории помогут одновременно "поймать двух зайцев": закрепить изученную теорию на практике, а также попрактиковаться в программировании. Этот путь не закрыт для остальных, но заведомо проще для студентов, т.к. ещё свежи знания по академическим дисциплинам.
|
||||
|
||||
* Библиотека линейной алгебры: матрицы, вектора, действия с ними
|
||||
* Моделирование различных процессов: физика, теоретическая механика и т.д.
|
||||
* Применение численных методов: интегрирование, дифференцирование, аппроксимация, интерполяция и т.д.
|
||||
Reference in New Issue
Block a user