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

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

08.11.2018, 09:25. Показов 18849. Ответов 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
9948 / 2948 / 497
Регистрация: 05.10.2013
Сообщений: 8,019
Записей в блоге: 242
15.11.2018, 05:31
Лучший ответ Сообщение было отмечено Nishen как решение

Решение

Студворк — интернет-сервис помощи студентам
CyberGame, я вижу вы активно решаете задачи в разделе Python. Это очень похвально. Можно и на C++ время от времени решать. Можно одну задачу решить на Python, а следующую на C++.

Но что вас отпугнуло от продолжения писать змейку? Может те туторы, на которые я дал ссылки? Так они малюсенькие, микроскопические. В них не пишется игра с самого начала до конца. В них просто показаны самые базовые вещи, которые будут необходимы в других играх. Если вам не нравится, что за вас начинают делать змейку, то возьмите туториал ещё более простой, чем змейка: C++ 2D Pong Game. Там очень простой английский. За одно в английском потренируетесь. Нужно как можно быстрее становиться с английским на "ты". Стараться как можно больше читать на английском, смотреть английские туториалы. А если у вас английский в школе есть, так это вообще замечательно! У меня в школе и универе был немецкий, но ничего, я стал читать книги только на английском, смотреть только английские видео, пишу комментарии на английском, читаю/пишу на английских форумах. Сейчас я полностью отказался от любой информации на русском. Если у вас в школе тоже немецкий или французский и ваш английский на полном нуле, то можно нагуглить огромное количество туторов по OpenGL на русском.

В туторах, что я скинул выше показаны такие базовые вещи как:
  • создание окна
  • рисование и стирание цветных квадратов (это всё нужно знать об OpenGL на данный момент)
  • игровой цикл
  • обработчики нажатий клавиш
  • вывод текста для вывода: количества жизней, набранных очков, номера уровня, надписи "Game Over"
  • запуск фоновой музыки и звуки поедания еды с помощью библиотеки irrKlang (easy!)

Когда вы сделаете несколько первых играбельный уровней, то весь код у вас, скорее всего, будет в одном файле в main.cpp. Ничего страшного, с этого момента можно начать рефакторить код под ООП.

После переделки проекта под ООП можно перейти к следующему этапу. Либо сделать самому ещё одну игру, например, Арканойд, на базе полученных знаний. Должно получиться три игры: Понг, Змейка, Арканойд (можно ещё Тетрис, но он сложнее этих игр). Либо после Понга или Змейки заменить рисование квадрата со старого OpenGL (glBegin/glEnd) на рисование квадрата с помощью актуального шейдерного OpenGL. Есть много хороших туторов, где можно подглядеть, как рисовать треугольники и квадраты, например: https://learnopengl.com/ Моё мнение, что лучше как можно раньше перейти на актуальный шейдерный OpenGL 3. На OpenGL можно рисовать графику на разных языка: Python, JavaScript, TypeScript, C#, Java и т.д. Один раз вы поймёте базовые вещи OpenGL и и без проблем переведёте свой код на другой язык. На OpenGL можно делать игры и приложения с интерактивной графикой для различных платформ: Android, iOS, Mac, Window, Linux.

Свои игры можно и нужно развивать по мере роста полученных знаний. Можно будет в какие-то игры внедрять алгоритмы на графах, например, алгоритмы поиска пути (A*, волновой и т.д.). Можно экспериментировать с Паттернами, описывая их с помощью UML-диаграмм классов. Паттерны + UML = ООП.

Кстати, хорошая онлайн книга по игровым Паттернам:
CyberGame, если у вас возникнут какие-либо трудности или вопросы в процессе создания игр на OpenGL, то пишите здесь в своей теме. Постараюсь ответить на любые вопросы. Самое главное - практикуйтесь, пишите код руками, а не копируйте его. Пытайтесь понять, что делает команда, гуглите её описание, и примеры, как её использовать.
1
208 / 95 / 15
Регистрация: 27.07.2018
Сообщений: 323
15.11.2018, 09:26  [ТС]
8Observer8, решаю задачки по пайтон, потому что мне их задают. А про с++ вообще ничего не знаю.
Поставил себе цель написать змейку. Сразу встал вопрос, а что нужно знать чтобы ее написать. Смотрю разные туторы, там ничего не понятно.
0
9948 / 2948 / 497
Регистрация: 05.10.2013
Сообщений: 8,019
Записей в блоге: 242
15.11.2018, 09:37
Цитата Сообщение от CyberGame Посмотреть сообщение
Поставил себе цель написать змейку.
Я вам помогу её достигнуть, если вы будете следовать моим инструкциям.

Цитата Сообщение от CyberGame Посмотреть сообщение
Сразу встал вопрос, а что нужно знать чтобы ее написать.
Всё что нужно вы уже знаете.

Цитата Сообщение от CyberGame Посмотреть сообщение
Смотрю разные туторы, там ничего не понятно.
Давайте вместе разбираться.

Какая версия Visual Studio у вас установлена? У меня 2015.

Добавлено через 44 секунды
Главное, чтобы у вас было: 2012 - 2017
0
208 / 95 / 15
Регистрация: 27.07.2018
Сообщений: 323
15.11.2018, 09:40  [ТС]
8Observer8,
Тоже VS2017.
0
9948 / 2948 / 497
Регистрация: 05.10.2013
Сообщений: 8,019
Записей в блоге: 242
15.11.2018, 09:56
Чтобы нарисовать змейку нужно создать окно. Чтобы создать окно нужно подключить к VS библиотеку, например, FreeGLUT. Ещё нужно подключить библиотеку для звуков irrKlang. Сейчас вам рано разбираться как подключать библиотеки к VS - это не относится к змейке, это можно разобраться потом. Я подключил FreeGLUT и irrKlang сам, а вам скину архив проекта, который нужно будет открыть и запустить: 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
208 / 95 / 15
Регистрация: 27.07.2018
Сообщений: 323
15.11.2018, 10:14  [ТС]
8Observer8,
getchar() - индефекатор не определен.
0
9948 / 2948 / 497
Регистрация: 05.10.2013
Сообщений: 8,019
Записей в блоге: 242
15.11.2018, 10:17
Цитата Сообщение от CyberGame Посмотреть сообщение
У меня вопрос - зачем использовать std::, если уже есть using namespace std;
У меня нет. Там using irrKang

Цитата Сообщение от CyberGame Посмотреть сообщение
getchar() - индефекатор не определен.
Вот это поворот. А вы пробовали до этого какие-нибудь "hello, world" запускать?
0
208 / 95 / 15
Регистрация: 27.07.2018
Сообщений: 323
15.11.2018, 10:18  [ТС]
8Observer8, Да, я и программы писал. Правда я пустой проект создавал.
0
 Аватар для COKPOWEHEU
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,932
15.11.2018, 10:25
Цитата Сообщение от 8Observer8 Посмотреть сообщение
Ещё нужно подключить библиотеку для звуков irrKlang.
А стоит ли с самого начала распыляться на две незнакомых библиотеки? Может лучше было сначала графику, потом к ней прикручивать звук или наоборот?
Ну и чем примечательна именно ваша библиотека irrklang ? В каких случаях она предпочтительнее других звуковых библиотек?
0
208 / 95 / 15
Регистрация: 27.07.2018
Сообщений: 323
15.11.2018, 10:27  [ТС]
COKPOWEHEU, Я тоже думаю, то что эта библиотека пока не нужна.
8Observer8, Может начнем непосредственно с самой графики и логике?
0
9948 / 2948 / 497
Регистрация: 05.10.2013
Сообщений: 8,019
Записей в блоге: 242
15.11.2018, 10:38
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Ну и чем примечательна именно ваша библиотека irrklang ? В каких случаях она предпочтительнее других звуковых библиотек?
Она проще всего в использовании в FreeGLUT проекте из тех, что я нашёл. Я умею работать с OpenAL, то она требует больше кода.

Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
А стоит ли с самого начала распыляться на две незнакомых библиотеки? Может лучше было сначала графику, потом к ней прикручивать звук или наоборот?
А никто и не распылялся. Две строчки добавлены, музыка играет, она не мешает. Если надоест во время разработки, её можно временно закомментировать. Потом ещё одну строчку добавим при съедании еды. Про музыки и звуки можно забыть, это уже сделано.

Добавлено через 3 минуты
Цитата Сообщение от CyberGame Посмотреть сообщение
Я тоже думаю, то что эта библиотека пока не нужна.
Хорошо. Удалите пока эти строки. Точнее оставьте вот это:

C++
1
2
3
4
5
6
7
8
#include <iostream>
 
int main()
{
    std::cout << "hello, world" << std::endl;
    std::getchar();
    return 0;
}
Эта программа работает?
0
9948 / 2948 / 497
Регистрация: 05.10.2013
Сообщений: 8,019
Записей в блоге: 242
15.11.2018, 10:39
Цитата Сообщение от CyberGame Посмотреть сообщение
VS2017
Так как у вас 2017, а у меня 2015, то порядок следующий:
  • Скачиваете архив: Snake.zip
  • Извлекаете из архива
  • В папке кликаете два раза по файлу Snake.sln
  • После открытия проекта в VS вы кликаете правой кнопкой мыши по проекту, то есть по Snake
    Название: Snake Project.png
Просмотров: 106

Размер: 8.9 Кб
  • Выбираете "Свойства" (или "Properties" - в самом низу списка)
  • В свойствах меняете на вашу версию VS тут:
0
208 / 95 / 15
Регистрация: 27.07.2018
Сообщений: 323
15.11.2018, 10:45  [ТС]
8Observer8, нету у меня VS 2015 там. А ошибка вся та же.
0
9948 / 2948 / 497
Регистрация: 05.10.2013
Сообщений: 8,019
Записей в блоге: 242
15.11.2018, 10:51
Цитата Сообщение от CyberGame Посмотреть сообщение
нету у меня VS 2015 там.
Это потому что у меня 2015, а у вас 2017, поэтому вы должны там в списке выбрать 2017

Цитата Сообщение от CyberGame Посмотреть сообщение
Да, я и программы писал. Правда я пустой проект создавал.
Попробуйте создать новый пустой проект и вывести "hello, world", как у меня выше. Скорее всего, что-то испортилось. В общем, если не заработает нужно будет переустановить VS.

Добавлено через 3 минуты
Цитата Сообщение от CyberGame Посмотреть сообщение
нету у меня VS 2015 там. А ошибка вся та же.
Может даже заработает, когда вы выберите VS 2017.
0
208 / 95 / 15
Регистрация: 27.07.2018
Сообщений: 323
15.11.2018, 10:51  [ТС]
8Observer8,
Создал новый пустой проект.
C++ (Qt)
1
2
3
4
5
6
7
8
9
#include <iostream>
using namespace std;
 
int main()
{
    cout << "hello, world" << endl;
    getchar();
    return 0;
}
Работает.
0
9948 / 2948 / 497
Регистрация: 05.10.2013
Сообщений: 8,019
Записей в блоге: 242
15.11.2018, 10:52
Цитата Сообщение от CyberGame Посмотреть сообщение
Работает.
А если в моём проекте в настройках выбрать VS2017, работает?
0
261 / 111 / 53
Регистрация: 22.01.2017
Сообщений: 448
15.11.2018, 10:55
CyberGame, пиши на питоне, если язык знаком, в чем проблема?
PyGame самое то для начала.
0
208 / 95 / 15
Регистрация: 27.07.2018
Сообщений: 323
15.11.2018, 11:01  [ТС]
8Observer8, нет, я выбирал.
0
9948 / 2948 / 497
Регистрация: 05.10.2013
Сообщений: 8,019
Записей в блоге: 242
15.11.2018, 11:05
Можно скриншот ошибки?
0
208 / 95 / 15
Регистрация: 27.07.2018
Сообщений: 323
15.11.2018, 11:09  [ТС]
8Observer8,
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.11.2018, 11:09
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru