Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.72/76: Рейтинг темы: голосов - 76, средняя оценка - 4.72
208 / 95 / 15
Регистрация: 27.07.2018
Сообщений: 323

Что изучать для совершенствования знаний по C++

08.11.2018, 09:25. Показов 19527. Ответов 361

Изучил уже до ООП, вопрос что делать дальше? Могу ли я уже писать программы, с чего начинать?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.11.2018, 09:25
Ответы с готовыми решениями:

Что изучать после получения базовых знаний по c#
В каком направлении дальше двигаться? Или попытаться устроиться стажером для начала? А там дальше скажут в каком направлении двигаться...

Какой язык и технологию изучать после получения средних знаний
Здравствуйте! Я сейчас в 9 классе, буду поступать в техникум...Хорошие знания C#.NET, LINQ, ADO.NET, скоро буду начинать учить ASP.NET, и...

Ссылки для изучения и совершенствования
Ha всякий случай, несколько ссылок, больше на Rutracker. He знаю других трекеров c поиском в этих категориях. Темы c наибольшим спросом...

361
 Аватар для COKPOWEHEU
4057 / 2692 / 432
Регистрация: 09.09.2017
Сообщений: 11,990
08.11.2018, 12:41
Придумать себе какую-нибудь задачу и начать наконец хоть что-то делать.
Хочешь писать игры - пиши. Тетрис там какой-нибудь, змейку, пакмана. В процессе наверняка возникнут вопросы. Не надо их тут же задавать на форуме, самостоятельный поиск решения куда полезнее.
0
 Аватар для Nishen
1359 / 857 / 366
Регистрация: 26.02.2015
Сообщений: 3,827
08.11.2018, 22:56
Лучший ответ Сообщение было отмечено Manowar как решение

Решение

В общем, что делают качки, чтобы накачаться? Качаются. Что делают маляры, чтобы научиться красить? Красят. Что делают гонщики, чтобы научиться быстро ездить? Быстро ездят. Что делают программисты, чтобы программировать научиться?! ПРОГРАММИРУЮТ.
1
1 / 1 / 1
Регистрация: 18.08.2015
Сообщений: 59
08.11.2018, 23:05
Цитата Сообщение от CyberGame Посмотреть сообщение
Изучил уже до ООП, вопрос что делать дальше? Могу ли я уже писать программы, с чего начинать?
изучать библиотеку MFC
0
208 / 95 / 15
Регистрация: 27.07.2018
Сообщений: 323
08.11.2018, 23:34  [ТС]
KimRomik, вот этого я и ждал. После её изучения смогу ли я написать например такую игру как змейка?
0
475 / 427 / 290
Регистрация: 10.03.2015
Сообщений: 1,782
08.11.2018, 23:44
CyberGame, змейку можно и без ООП/MFC и прочих либ написать
0
1 / 1 / 1
Регистрация: 18.08.2015
Сообщений: 59
08.11.2018, 23:45
Цитата Сообщение от CyberGame Посмотреть сообщение
После её изучения смогу ли я написать например такую игру как змейка?
MFC - это для создания пользовательского интерфейса
для игр нужно смотреть в сторону GDI+, а если посложней то DirectX или OpenGL
особенно если речь идет о графической составляющей
0
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
09.11.2018, 00:06
CyberGame, не сможешь. Для того, чтоб её написать, нужно разбить задачу на части, которые можно было бы последовательно решить. Наподобие того что "как отображать змейку и поле", "как управлять змейкой и что для этого нужно", "как создавать или загружать уровни прохождения" и т.д.

Без такого последовательного решения вопросов на практике будут всего лишь знания теории (в случае MFC о том, что можно строить окна и обрабатывать события их компонентов) и только.
0
9949 / 2950 / 497
Регистрация: 05.10.2013
Сообщений: 8,030
Записей в блоге: 242
09.11.2018, 11:08
Цитата Сообщение от CyberGame Посмотреть сообщение
смогу ли я написать например такую игру как змейка?
Видео урок: Создание игр на C++ : Змейка
youtube


Я сделал пустой проект для Visual Studio 2015 с подключённым OpenGL и FreeGLUT: Snake.zip

FreeGLUT - библиотека для окна, а OpenGL - библиотека для вывода графики. В змейке нужны только разноцветные квадраты.

Вы можете открыть проект в VS, смотреть видео, слушать объяснения, набирать код, запускать, всё должно работать.

Если у вас не VS2015, а например, VS2017, то перейдите в настройки проекта и измените: "Configuration Properties" -> "General" -> "Platform Toolset" на вашу версию VS.
1
737 / 704 / 110
Регистрация: 29.05.2015
Сообщений: 4,303
09.11.2018, 11:40
А вдруг потом захочет другую игру написать, а видеоурока по ней не будет?
4
9949 / 2950 / 497
Регистрация: 05.10.2013
Сообщений: 8,030
Записей в блоге: 242
09.11.2018, 12:07
Цитата Сообщение от alexu_007 Посмотреть сообщение
А вдруг потом захочет другую игру написать, а видеоурока по ней не будет?
Здесь просто принцип показан, как быстренько создать окно, обработка нажатий клавиш, как просто и быстро научиться графику выводить в виде квадратов. Здесь змейка, так для примера. Так и автор урока говорит, что ему главное принцип показать. На квадратах можно много игр написать потом самому: понг, арканоид, тетрис, танчики и т.д.

Добавлено через 6 минут
Кстати, чужой код тоже полезно бывает изучать. Разбираться, как работает, сравнивать разные варианты тех же змеек, черпать что-то для себя от более опытных товарищей. Учиться читать чужой код - это тоже полезный навык.
1
9949 / 2950 / 497
Регистрация: 05.10.2013
Сообщений: 8,030
Записей в блоге: 242
09.11.2018, 12:11
Я видел разные варианты змеек. С точки зрения организации кода и ООП в змейке мне больше всего понравился вариант этого гениального товарища, под видео можно скачать код: Writing Snake game in 10 minutes
youtube

На всякий случай исходники: speedprogramming-master.zip
1
Mental handicap
 Аватар для Azazel-San
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
09.11.2018, 12:54
Цитата Сообщение от KimRomik Посмотреть сообщение
для игр нужно смотреть в сторону GDI+
бред
CyberGame,
уважаемый TRam_, верно говорит и впрочем описал алгоритм написания, дальше смотрите в сторону ECS. А вообще просто читайте всегда что-то новое, я после прочтения Липпмана начал читать Танненбаума и его труды по ОС и архитектуре, еще досихпор не дочитал всего но такое знать надо, учите STL, читайте мейерса и пробуйте искать работу) Я примерно так и нашел) По поводу ООП, советовал бы очень не зацикливаться ибо там можно застрять на долго и так доконца всего не понять)
Цитата Сообщение от 8Observer8 Посмотреть сообщение
OpenGL - библиотека для вывода графики
я бы так не сказал
0
 Аватар для Nishen
1359 / 857 / 366
Регистрация: 26.02.2015
Сообщений: 3,827
09.11.2018, 13:09
Цитата Сообщение от 8Observer8 Посмотреть сообщение
OpenGL - библиотека для вывода графики
Насколько я знаю, это всего лишь спецификация. Хотя я не силён в этой теме.
По теме OpenGL есть отличные статьи.
0
9949 / 2950 / 497
Регистрация: 05.10.2013
Сообщений: 8,030
Записей в блоге: 242
09.11.2018, 13:14
Цитата Сообщение от Azazel-San Посмотреть сообщение
я бы так не сказал
Чем проще и понятнее автору темы, тем лучше. Формально OpenGL - это Open Graphics Library. Дословно переводится "открытая графическая библиотека". Я считаю, что лишнее вдаваться в подробности, что это спецификация или application programming interface (API). Здесь от OpenGL нужно очень мало - только квадраты рисовать и стирать.

Добавлено через 1 минуту
https://learnopengl.com/ - это отлично, но возможно для начала достаточно будет вот этого:
C++
1
2
3
4
5
6
7
8
void drawRect(float x, float y, float width, float height) {
    glBegin(GL_QUADS);
        glVertex2f(x, y);
        glVertex2f(x + width, y);
        glVertex2f(x + width, y + height);
        glVertex2f(x, y + height);
    glEnd();
}
Добавлено через 1 минуту
Хотя бы для первого первого прототипа змейки.
1
 Аватар для Nishen
1359 / 857 / 366
Регистрация: 26.02.2015
Сообщений: 3,827
09.11.2018, 13:14
Цитата Сообщение от 8Observer8 Посмотреть сообщение
но возможно для начала достаточно будет вот этого
Для начала да, но мы ведь все хотим поиграть в какой-нибудь шутер от ТС.
0
Mental handicap
 Аватар для Azazel-San
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
09.11.2018, 13:16
8Observer8, это верно, усложнять не стоило бы, но я считаю что из-за этой простоты новичку может показатся что все так и есть на самом деле, просто, но это далеко не так, особенно с графикой типо OpenGL/DX

Не по теме:

Имхо, все ще считаю glut ущербным, хотя и свой не сложный функционал он исполняет, не знаю, личная неприязнь


0
9949 / 2950 / 497
Регистрация: 05.10.2013
Сообщений: 8,030
Записей в блоге: 242
09.11.2018, 13:43
Цитата Сообщение от Azazel-San Посмотреть сообщение
Имхо, все ще считаю glut ущербным, хотя и свой не сложный функционал он исполняет, не знаю, личная неприязнь
Я лично считаю, что GLUT, конечно, ущербный потому что нет исходников и невозможно найти версию x64, а так как нет исходников, то невозможно собрать для x64. А есть такая особенность, что если подключаешь библиотеки локально к VS и скидываешь проект в архиве, то когда архив с проектом открывают в VS, то переключается сборка на x64. Если сразу запустить, то не запустится, потому что x64 версии GLUT нет в проекте.

Другое дело FreeGLUT, который является OpenSource версией GLUT и который можно скачать в x86 и x 64 сборках. Обновлялся он не так давно, в 2015. На Github есть клоны, которые обновляются. У меня пример выше на FreeGLUT. Просто в туториале, что я выше скинул GLUT. А вообще я бы лучше взял GLFW, потому что по ней больше всего туториалов и на форумах эту библиотека более популярно и почти все её знают. Но GLFW чаще всего используют с современным актуальным шейдерным OpenGL 3+.

Я на всякий случай для автора темы уточню, что когда он родился в 2003 году, то на следующий год вышел шейдерный OpenGL 2.0 (его ещё называют OpenGL с программируемым конвейером), а до этого с 1991 по 2003 был нешейдерный OpenGL (его называют OpenGL с фиксированным конвейером)
2
Mental handicap
 Аватар для Azazel-San
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
09.11.2018, 15:10
Цитата Сообщение от 8Observer8 Посмотреть сообщение
А вообще я бы лучше взял GLFW
Полностью согласен.
Цитата Сообщение от 8Observer8 Посмотреть сообщение
Но GLFW чаще всего используют с современным актуальным шейдерным OpenGL 3+.
Ну, тут без этого никак, если есть желание в дальнейшем связать свою деятельность с OpenGL.
Цитата Сообщение от 8Observer8 Посмотреть сообщение
Я на всякий случай для автора темы уточню, что когда он родился в 2003 году, то на следующий год вышел шейдерный OpenGL 2.0 (его ещё называют OpenGL с программируемым конвейером), а до этого с 1991 по 2003 был нешейдерный OpenGL (его называют OpenGL с фиксированным конвейером)
Думаю это уже тема для другого разговора
1
9949 / 2950 / 497
Регистрация: 05.10.2013
Сообщений: 8,030
Записей в блоге: 242
09.11.2018, 22:02
Даже для таких простых игр, которые выводятся квадратами, очень важен вывод текста:
  • Количество жизней
  • Количество очков
  • Номер уровня
  • и т.д.

У библиотеки FreeGLUT есть встроенные средства для вывода текста:
C++
1
2
3
    std::string text = "hello, world";
    glRasterPos2f(0, 0);
    glutBitmapString(GLUT_BITMAP_8_BY_13, (const unsigned char*)text.c_str());
glRasterPos2f - определяет координаты, где будет выведена первая буква текста. В данном случае в середину поля рисования, потому что в OpenGL поумолчанию начало координат в середине. Ось X направлена вправо. Ось Y направлена вверх. Начало координат можно изменить. Например, перенести в левый нижний угол или в левый верхний, при этом, поменять направление оси Y на противоположенное, чтобы она смотрела вниз.

glutBitmapString - выводит текст.

Рабочий пример:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <GL/freeglut.h>
#include <string>
 
void drawText(float x, float y, std::string text)
{
    glRasterPos2f(x, y);
    glutBitmapString(GLUT_BITMAP_8_BY_13, (const unsigned char*)text.c_str());
}
 
void draw()
{
    glClear(GL_COLOR_BUFFER_BIT);
    drawText(0, 0, "Hello, World!");
    glutSwapBuffers();
}
 
int main(int argc, char** argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
    glutInitWindowSize(256, 256);
    glutCreateWindow("Drawing Text");
    glutDisplayFunc(draw);
    glutMainLoop();
    return 0;
}
0
9949 / 2950 / 497
Регистрация: 05.10.2013
Сообщений: 8,030
Записей в блоге: 242
10.11.2018, 01:19
Не во обиду тем, кто не любит читать/смотреть уроки. Я считаю, очень хороший текстовый урок, как начать делать игру Понг на C++ и OpenGL на английском: C++ 2D Pong Game Много общего со змейкой в техническом плане. За одно и английский изучается. Здесь показывается начало создание игры, а всё остальное предлагается реализовать самостоятельно, как впрочем и в подавляющем большинстве текстовых и видео туториалов. Можно использовать технические детали из этих туторов для змейки и других "квадратных" игр. Вот тоже на OpenGL/FreeGLUT змейка, правда, на Python от тех же авторов: Python Snake Game. Кстати, по-моему, Python намного в понимании, чем C++, так что проблем в чтении кода на Python не должно быть. Можно сочетать с остальными примерами выше и c найденными примерами, чтобы сразу убрать технические детали, мешающие двигаться дальше, подглядеть, понять и усвоить какие-то необходимые идеи.

Ещё один замечательный урок, как добавить музыку и звуки в игру с помощью библиотеки irrKlang: https://learnopengl.com/In-Practice/2D-Game/Audio

Я добавил локальное подключение библиотеки irrKlang для воспроизведения аудио в VS-проект для Win32 и x64: Snake.zip

Всего несколько строк, чтобы добавить фоновую музыку в игру:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
 
#include <irrKlang.h>
using namespace irrklang;
 
int main()
{
    ISoundEngine *soundEngine = createIrrKlangDevice();
    soundEngine->play2D("Audio/background.mp3", true);
 
    std::getchar();
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.11.2018, 01:19

Какой язык изучать или что изучать?
Здравствуйте форумчане. какой язык программирования изучать чтоб работать дома через интернет? может 1с? я сам живу в деревне работы нет,о...

Подскажите, как лучше всего изучать язык, ежели в академии не дают достаточный объем знаний
хожу на курсы в академию уже 3 месяца, изучаем С++ по либерти, практики нету вообще, просто примеры по книге набираем...в общем туго идет,...

Какие паттерны можно использовать для совершенствования приложения
Доброго времени суток! У меня есть приложение реализованное на Qt C++ - тестирование студентов. Суть приложения заключается в...

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

Что изучать для создания сайтов
Привет всем, всех с новым годом! кто занимается web - разработкой, создание сайтов , хотелось у вас узнать ко э что. В каком порядки...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Программа для com-порта
Uhbif79 05.06.2026
Всем привет, давно хотел изучить Qt, начинал, бросал, потом снова начинал. И сейчас вот смог написать свою первую программу. До этого имел опыт программирования микроконтроллеров, писал прошивки на. . .
Транскрипция 55-минутного видео через Whisper: WhisperDesktop облажался, спас Google Colab[
anaschu 01.06.2026
Понадобилось получить текст из свежезагруженного видео на YouTube. Казалось бы, задача на пять минут. Заняла полтора часа. Делюсь опытом — может кому пригодится последовательность решений. . . .
21 мат мед. Планы на развитие модели здравоСохранения
anaschu 01.06.2026
AnyLogic: план развития симуляционной модели рабочего коллектива — динамический абсентеизм, реальные данные, три сценария сравнения Продолжаю серию постов о дискретно-событийной модели рабочего. . .
20. Мат мед. Абсентеизм как отдельный тип простоя
anaschu 29.05.2026
Апдейт модели: исправленные баги, абсентеизм и новые механизмы Продолжаю развивать ранее описанную модель рабочего коллектива на AnyLogic. За последние несколько дней был проведён серьёзный. . .
19. здоровье, усталость и психотип работника влияют на производительность предприятия, и наоборот, производительность на здоровье, усталось и психотип
anaschu 28.05.2026
Дискретно-событийная модель рабочего коллектива на AnyLogic: здоровье, выгорание, психотипы и микростимуляция Привет, коллеги. Хочу поделиться итогами нескольких недель работы над симуляционной. . .
"Прокси" для последовательного порта
Eddy_Em 28.05.2026
Эту штуку написал я достаточно давно. Но сейчас вот понадобилось настроить датчик грозы, но при этом не отключать его от "метеодемона". Соответственно, надо запустить этот "прокси": метеодемон будет. . .
Рефакторинг программы уравнивания.
Massaraksh7 26.05.2026
Пример по предыдущей записи в блоге. Но, надо заметить, что, во-первых, там оптимизация не только математики, но и работы с базой данных, и с графами, а во-вторых, это ещё не всё.
Использование TThread в Lazarus для математических вычислений.
Massaraksh7 25.05.2026
Производя рефакторинг своих программ на предмет ускорения их работы, обратил внимание на такой аспект, как сокращение времени матвычислений. Дело в том, что приходится работать с большими матрицами. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru