Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.92/48: Рейтинг темы: голосов - 48, средняя оценка - 4.92
CyberGame
146 / 33 / 14
Регистрация: 27.07.2018
Сообщений: 296
Завершенные тесты: 1
1

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

08.11.2018, 09:25. Просмотров 9328. Ответов 361

Изучил уже до ООП, вопрос что делать дальше? Могу ли я уже писать программы, с чего начинать?
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.11.2018, 09:25
Ответы с готовыми решениями:

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

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

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

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

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

361
COKPOWEHEU
2030 / 1243 / 285
Регистрация: 09.09.2017
Сообщений: 5,072
08.11.2018, 12:41 21
Придумать себе какую-нибудь задачу и начать наконец хоть что-то делать.
Хочешь писать игры - пиши. Тетрис там какой-нибудь, змейку, пакмана. В процессе наверняка возникнут вопросы. Не надо их тут же задавать на форуме, самостоятельный поиск решения куда полезнее.
0
Nishen
671 / 434 / 223
Регистрация: 26.02.2015
Сообщений: 2,012
Завершенные тесты: 3
08.11.2018, 22:56 22
Лучший ответ Сообщение было отмечено Manowar как решение

Решение

В общем, что делают качки, чтобы накачаться? Качаются. Что делают маляры, чтобы научиться красить? Красят. Что делают гонщики, чтобы научиться быстро ездить? Быстро ездят. Что делают программисты, чтобы программировать научиться?! ПРОГРАММИРУЮТ.
1
KimRomik
1 / 1 / 1
Регистрация: 18.08.2015
Сообщений: 56
08.11.2018, 23:05 23
Цитата Сообщение от CyberGame Посмотреть сообщение
Изучил уже до ООП, вопрос что делать дальше? Могу ли я уже писать программы, с чего начинать?
изучать библиотеку MFC
0
CyberGame
146 / 33 / 14
Регистрация: 27.07.2018
Сообщений: 296
Завершенные тесты: 1
08.11.2018, 23:34  [ТС] 24
KimRomik, вот этого я и ждал. После её изучения смогу ли я написать например такую игру как змейка?
0
08.11.2018, 23:34
SuperKir
464 / 417 / 290
Регистрация: 10.03.2015
Сообщений: 1,777
Завершенные тесты: 1
08.11.2018, 23:44 25
CyberGame, змейку можно и без ООП/MFC и прочих либ написать
0
KimRomik
1 / 1 / 1
Регистрация: 18.08.2015
Сообщений: 56
08.11.2018, 23:45 26
Цитата Сообщение от CyberGame Посмотреть сообщение
После её изучения смогу ли я написать например такую игру как змейка?
MFC - это для создания пользовательского интерфейса
для игр нужно смотреть в сторону GDI+, а если посложней то DirectX или OpenGL
особенно если речь идет о графической составляющей
0
TRam_
зомбяк
1311 / 993 / 290
Регистрация: 14.05.2017
Сообщений: 3,265
09.11.2018, 00:06 27
CyberGame, не сможешь. Для того, чтоб её написать, нужно разбить задачу на части, которые можно было бы последовательно решить. Наподобие того что "как отображать змейку и поле", "как управлять змейкой и что для этого нужно", "как создавать или загружать уровни прохождения" и т.д.

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


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

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

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

Если у вас не VS2015, а например, VS2017, то перейдите в настройки проекта и измените: "Configuration Properties" -> "General" -> "Platform Toolset" на вашу версию VS.
1
alexu_007
219 / 228 / 46
Регистрация: 29.05.2015
Сообщений: 1,406
09.11.2018, 11:40 29
А вдруг потом захочет другую игру написать, а видеоурока по ней не будет?
4
8Observer8
3438 / 1868 / 327
Регистрация: 05.10.2013
Сообщений: 5,665
Записей в блоге: 140
09.11.2018, 12:07 30
Цитата Сообщение от alexu_007 Посмотреть сообщение
А вдруг потом захочет другую игру написать, а видеоурока по ней не будет?
Здесь просто принцип показан, как быстренько создать окно, обработка нажатий клавиш, как просто и быстро научиться графику выводить в виде квадратов. Здесь змейка, так для примера. Так и автор урока говорит, что ему главное принцип показать. На квадратах можно много игр написать потом самому: понг, арканоид, тетрис, танчики и т.д.

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

На всякий случай исходники: speedprogramming-master.zip
1
Azazel-San
Mental handicap
1159 / 547 / 155
Регистрация: 24.11.2015
Сообщений: 2,222
Завершенные тесты: 1
09.11.2018, 12:54 32
Цитата Сообщение от KimRomik Посмотреть сообщение
для игр нужно смотреть в сторону GDI+
бред
CyberGame,
уважаемый TRam_, верно говорит и впрочем описал алгоритм написания, дальше смотрите в сторону ECS. А вообще просто читайте всегда что-то новое, я после прочтения Липпмана начал читать Танненбаума и его труды по ОС и архитектуре, еще досихпор не дочитал всего но такое знать надо, учите STL, читайте мейерса и пробуйте искать работу) Я примерно так и нашел) По поводу ООП, советовал бы очень не зацикливаться ибо там можно застрять на долго и так доконца всего не понять)
Цитата Сообщение от 8Observer8 Посмотреть сообщение
OpenGL - библиотека для вывода графики
я бы так не сказал
0
Nishen
671 / 434 / 223
Регистрация: 26.02.2015
Сообщений: 2,012
Завершенные тесты: 3
09.11.2018, 13:09 33
Цитата Сообщение от 8Observer8 Посмотреть сообщение
OpenGL - библиотека для вывода графики
Насколько я знаю, это всего лишь спецификация. Хотя я не силён в этой теме.
По теме OpenGL есть отличные статьи.
0
8Observer8
3438 / 1868 / 327
Регистрация: 05.10.2013
Сообщений: 5,665
Записей в блоге: 140
09.11.2018, 13:14 34
Цитата Сообщение от 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
671 / 434 / 223
Регистрация: 26.02.2015
Сообщений: 2,012
Завершенные тесты: 3
09.11.2018, 13:14 35
Цитата Сообщение от 8Observer8 Посмотреть сообщение
но возможно для начала достаточно будет вот этого
Для начала да, но мы ведь все хотим поиграть в какой-нибудь шутер от ТС.
0
Azazel-San
Mental handicap
1159 / 547 / 155
Регистрация: 24.11.2015
Сообщений: 2,222
Завершенные тесты: 1
09.11.2018, 13:16 36
8Observer8, это верно, усложнять не стоило бы, но я считаю что из-за этой простоты новичку может показатся что все так и есть на самом деле, просто, но это далеко не так, особенно с графикой типо OpenGL/DX

Не по теме:

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


0
8Observer8
3438 / 1868 / 327
Регистрация: 05.10.2013
Сообщений: 5,665
Записей в блоге: 140
09.11.2018, 13:43 37
Цитата Сообщение от 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
Azazel-San
Mental handicap
1159 / 547 / 155
Регистрация: 24.11.2015
Сообщений: 2,222
Завершенные тесты: 1
09.11.2018, 15:10 38
Цитата Сообщение от 8Observer8 Посмотреть сообщение
А вообще я бы лучше взял GLFW
Полностью согласен.
Цитата Сообщение от 8Observer8 Посмотреть сообщение
Но GLFW чаще всего используют с современным актуальным шейдерным OpenGL 3+.
Ну, тут без этого никак, если есть желание в дальнейшем связать свою деятельность с OpenGL.
Цитата Сообщение от 8Observer8 Посмотреть сообщение
Я на всякий случай для автора темы уточню, что когда он родился в 2003 году, то на следующий год вышел шейдерный OpenGL 2.0 (его ещё называют OpenGL с программируемым конвейером), а до этого с 1991 по 2003 был нешейдерный OpenGL (его называют OpenGL с фиксированным конвейером)
Думаю это уже тема для другого разговора
1
8Observer8
3438 / 1868 / 327
Регистрация: 05.10.2013
Сообщений: 5,665
Записей в блоге: 140
09.11.2018, 22:02 39
Даже для таких простых игр, которые выводятся квадратами, очень важен вывод текста:
  • Количество жизней
  • Количество очков
  • Номер уровня
  • и т.д.

У библиотеки 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
8Observer8
3438 / 1868 / 327
Регистрация: 05.10.2013
Сообщений: 5,665
Записей в блоге: 140
10.11.2018, 01:19 40
Не во обиду тем, кто не любит читать/смотреть уроки. Я считаю, очень хороший текстовый урок, как начать делать игру Понг на 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
10.11.2018, 01:19
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.11.2018, 01:19

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

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

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


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.