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

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

08.11.2018, 09:25. Показов 19917. Ответов 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
9953 / 2954 / 497
Регистрация: 05.10.2013
Сообщений: 8,053
Записей в блоге: 242
15.11.2018, 11:15
Студворк — интернет-сервис помощи студентам
Я понял в чём ошибка. Сейчас найду решение.
0
9953 / 2954 / 497
Регистрация: 05.10.2013
Сообщений: 8,053
Записей в блоге: 242
15.11.2018, 11:26
Исправил, должно работать: Snake.zip

Вы мне помогли решить потенциальную проблему, если в пути проекта есть пробелы. Я в настройках путей к либам не заключал их в ковычки.
0
208 / 95 / 15
Регистрация: 27.07.2018
Сообщений: 323
15.11.2018, 11:30  [ТС]
8Observer8,
Вам спасибо большое, что помогаете раскрыть мне крылья!
Всё работает. Я сейчас ухожу в школу. Скажите что мне пока что сделать. К часам 6-и вернусь.

Добавлено через 35 секунд
n1b1ru,
Для игр с++ лучше, как язык. И мне он по душе, хочу его полностью выучить.
0
9953 / 2954 / 497
Регистрация: 05.10.2013
Сообщений: 8,053
Записей в блоге: 242
15.11.2018, 11:33
Цитата Сообщение от CyberGame Посмотреть сообщение
Скажите что мне пока что сделать. К часам 6-и вернусь.
До 6 я напишу, что дальше сделаем.
0
 Аватар для TrollHammer
1216 / 709 / 336
Регистрация: 22.02.2018
Сообщений: 2,095
Записей в блоге: 2
15.11.2018, 11:45
CyberGame, Если Вас привлекает игростроение, могу порекомендовать приобрести (или скачать) книги Андре Ламота "Программирование игр для Windows" и "Программирование трехмерных игр. Советы профессионала". Очень доходчиво описана работа с DirectX, справочные сведение по математике и физике, примеры использования инструментов игродела. Сам пытался писать игры, но дальше "Змейки" и "Тетрис" дело не пошло - нет фантазии. Но из этих книг почерпнул очень много интересных решений для создания картографических и геоинформационных систем (в плане отображения графической информации)
0
261 / 111 / 53
Регистрация: 22.01.2017
Сообщений: 448
15.11.2018, 11:45
Цитата Сообщение от CyberGame Посмотреть сообщение
Для игр с++ лучше, как язык.
После этого утверждения у меня столько вопросов возникает, что не буду и начинать. Откланяемся )
0
9953 / 2954 / 497
Регистрация: 05.10.2013
Сообщений: 8,053
Записей в блоге: 242
15.11.2018, 18:57
Начнём с нулевой программы:
C++
1
2
3
4
5
6
7
8
#include <iostream>
using namespace std;
 
int main()
{
 
    return 0;
}
Нужно создать и показать пустое окно с помощью FreeGLUT. Эти команды не нужно запоминать. Они стандартные из проекта в проект. Нужно примерно понимать для чего они нужны. Пробежимся по ним.

В скобках main() напишем аргументы, которые необходимы для функции инициализации FreeGLUT. Такие требования у функции инициализации glutInit

Чтобы использовать функции FreeGLUT нужно подключить написать:
C++
1
#include <GL/freeglut.h>
Получится такой код:
C++
1
2
3
4
5
6
7
8
9
10
#include <GL/freeglut.h>
 
#include <iostream>
using namespace std;
 
int main(int argc, char** argv)
{
    glutInit(&argc, argv);
    return 0;
}
Как придёте, то в коде ниже прочитайте комментарии, как создаётся окно. Наберите этот код вручную. В голове прокручивайте комментарии, которые здесь написаны, чтобы примерно понимать, что здесь происходит. Эти команды, на самом деле, не нужно запоминать, они копируются из проекта в проект. Напишите, или лучше скриншот покажите, что вы создали первое в жизни окно.
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
27
28
29
30
31
32
#include <GL/freeglut.h>
 
#include <iostream>
using namespace std;
 
void draw()
{
    // Здесь будем писать код для рисования на внутри окна
}
 
int main(int argc, char** argv)
{
    // Инициализация FreeGLUT
    glutInit(&argc, argv);
 
    // Необходимые стандартные настройки
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
    // Следующая команда задаёт размер будущего окна
    glutInitWindowSize(256, 256); // 256x256 пикселей
    // С помощью данной команды создаётся окно
    // Строка будет отображаться в заголовке окна
    glutCreateWindow("Snake");
 
    // С помощью этой команды указывается функция, которая
    // будет вызываться когда окну нужно перерисовать своё содержимое
    glutDisplayFunc(draw);
 
    // Команда запускает созданное окно
    glutMainLoop();
 
    return 0;
}
Добавлено через 7 часов 1 минуту
Давайте выведем "Hello, World" на поверхность окна. Для этого нужно две команды. Запоминать их не нужно.
Просто прочитайте комментарии. Скопируйте эти команды (не нужно их перепечатывать). Задача у вас вывести в одном верхнем углу "Lives = ", а в другом "Score = ". Покажите весь код (по желанию скриншот), что получилось.

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
27
28
#include <GL/freeglut.h>
 
#include <iostream>
using namespace std;
 
void draw()
{
    string text = "Hello, World";
    int x = 0, y = 0;
 
    // Команда задаёт координату, где будет выводиться текст
    glRasterPos2f(x, y);
    // Эта команда выводит текст
    glutBitmapString(GLUT_BITMAP_8_BY_13, (const unsigned char*)text.c_str());
 
    glutSwapBuffers();
}
 
int main(int argc, char** argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
    glutInitWindowSize(256, 256); // 256x256 пикселей
    glutCreateWindow("Snake");
    glutDisplayFunc(draw);
    glutMainLoop();
    return 0;
}
0
208 / 95 / 15
Регистрация: 27.07.2018
Сообщений: 323
15.11.2018, 19:01  [ТС]
8Observer8, так-с
Есть вопросы, что это за библиотека "FreeGlut"

Открывается окно и сразу закрывается, выходит такое:
C++ (Qt)
1
2
3
4
5
6
Поток 0x1068 завершился с кодом 1 (0x1).
Поток 0x4a4 завершился с кодом 1 (0x1).
Поток 0x14c8 завершился с кодом 1 (0x1).
Поток 0x1f98 завершился с кодом 1 (0x1).
Поток 0x8c4 завершился с кодом 1 (0x1).
Поток 0x878 завершился с кодом 1 (0x1).
0
208 / 95 / 15
Регистрация: 27.07.2018
Сообщений: 323
15.11.2018, 19:27  [ТС]
8Observer8, решил проблему сам.
Что означают параметры glutBitmapString(GLUT_BITMAP_8_BY_13, (const unsigned char*)text.c_str());?
Как он будет узнавать где x а где y?
0
15.11.2018, 19:52

Не по теме:

8Observer8, я тоже хочу игры писать. :( Да с учителем, как ты!

0
9953 / 2954 / 497
Регистрация: 05.10.2013
Сообщений: 8,053
Записей в блоге: 242
15.11.2018, 20:03
Цитата Сообщение от CyberGame Посмотреть сообщение
Что означают параметры glutBitmapString(GLUT_BITMAP_8_BY_13, (const unsigned char*)text.c_str());?
Нужно в гугл скопировать: glutBitmapString docs

Первая ссылка: http://freeglut.sourceforge.ne... tRendering

На этой странице нажимаем "Ctrl+F" для вызова окошка поиска. Вставляем glutBitmapString

Читаем:
The glutBitmapString function renders a string of bitmapped characters in the current window using the specified font.

Usage

void glutBitmapString ( void *font, char *string );

font The bitmapped font to use in rendering the character string
string String of characters to be rendered
Перевод примерно такой. Функция glutBitmapString рисует строку растровых символов в текущем окне, используя установленный шрифт.

Первый парамент - это константа, название шрифта. Второй параметр - это текст, который нужно вывести.

Такая запись "char *string" означает, что string - это указатель (или адрес) первого символа в последовательности символов сишной строки. "Сишной" - это значит из языка Си. Неплохо бы вам прочитать об указателях в книге Язык программирования C. Или в другой книге, по C++

Так как удобно использовать std::string в программах (std::string - строка C++), а glutBitmapString требует указатель на первый символ в сишной строки, то нужно такое преобразование:
C++
1
 (const unsigned char*)text.c_str()
Метод c_str() переводит строку С++ в строку С.

А оператор приведения типа: (const unsigned char*) переводит тип указаиеля из "const char*" в "const unsigned char*"

Добавлено через 1 минуту

Не по теме:

Цитата Сообщение от Nishen Посмотреть сообщение
я тоже хочу игры писать. :( Да с учителем, как ты!
Есть такое правило, что если хочешь чему-то научиться, начни этому учить. Вот я и учусь на самом деле то.



Добавлено через 55 секунд
Цитата Сообщение от CyberGame Посмотреть сообщение
Как он будет узнавать где x а где y?
С помощью этой команды, которая устанавливает место вывода текста:
C++
1
glRasterPos2f(x, y);
0
 Аватар для Nishen
1359 / 857 / 366
Регистрация: 26.02.2015
Сообщений: 3,831
15.11.2018, 20:05
8Observer8, почему ты ТС не дал потрогать какое-нибудь SFML? Там же всё просто и быстро, есть форумы русскоязычные.
0
9953 / 2954 / 497
Регистрация: 05.10.2013
Сообщений: 8,053
Записей в блоге: 242
15.11.2018, 20:11
CyberGame, нужно будет вам понять, как поумолчанию задана система координат в OpenGL. Точка (0,0) находится в середине (то есть в центре) внутреннего пространства окна. Я всё нарисовал, посмотрите внимательно:
Название: Snake Coords.png
Просмотров: 52

Размер: 3.8 Кб
0
208 / 95 / 15
Регистрация: 27.07.2018
Сообщений: 323
15.11.2018, 20:18  [ТС]
8Observer8, понятно, я помню читал и учил (указатели, ссылки), в теории понял, а как в практике. Нет.

Добавлено через 16 секунд
8Observer8, что дальше?
0
9953 / 2954 / 497
Регистрация: 05.10.2013
Сообщений: 8,053
Записей в блоге: 242
15.11.2018, 20:31
Цитата Сообщение от Nishen Посмотреть сообщение
почему ты ТС не дал потрогать какое-нибудь SFML?
Я совсем немного изучал создание 2D игр на SFML и SDL2. Я умею использовать SFML и SDL2, вместо FreeGLUT - только в целях создания окна и обработки клавиатуры/мыши. Я сосредоточен на шейдерном OpenGL, потому что его без изменения можно использовать на Python, C#, JavaScript (WebGL) и т.д.

Добавлено через 35 секунд
Цитата Сообщение от CyberGame Посмотреть сообщение
что дальше?
Сейчая я скриншот нарисую, куда добавить надписи.
0
9953 / 2954 / 497
Регистрация: 05.10.2013
Сообщений: 8,053
Записей в блоге: 242
15.11.2018, 20:32
А "Hello, World" нужно убрать:
Изображения
 
0
9953 / 2954 / 497
Регистрация: 05.10.2013
Сообщений: 8,053
Записей в блоге: 242
15.11.2018, 20:34
Вы когда надписи добавите, то код покажите.
0
208 / 95 / 15
Регистрация: 27.07.2018
Сообщений: 323
15.11.2018, 20:40  [ТС]
8Observer8, сразу возникла проблема.
C++ (Qt)
1
int x = -1, y = 1;
При указывании таких координат, он не выводит ничего.
0
9953 / 2954 / 497
Регистрация: 05.10.2013
Сообщений: 8,053
Записей в блоге: 242
15.11.2018, 20:48
Цитата Сообщение от CyberGame Посмотреть сообщение
При указывании таких координат, он не выводит ничего.
Текст вывелся за пределам окна. Подсказка:
Название: ScoreAndLives.png
Просмотров: 50

Размер: 3.1 Кб
0
9953 / 2954 / 497
Регистрация: 05.10.2013
Сообщений: 8,053
Записей в блоге: 242
15.11.2018, 20:52
Это я показал стрелкой, какая точка текста переносится в точку с координатой (-1, 1)

Да я забыл написать, что координаты (x, y) нужно изменить с типа int на float, чтобы можно было написать так: (-0.9f, 0.9f)

Добавлено через 1 минуту
Вот так:
C++
1
2
3
4
5
6
7
8
9
10
void draw()
{
    string text = "Hello, World";
    float x = -0.9f, y = 0.9f;
 
    glRasterPos2f(x, y);
    glutBitmapString(GLUT_BITMAP_8_BY_13, (const unsigned char*)text.c_str());
 
    glutSwapBuffers();
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.11.2018, 20:52

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
80
Ответ Создать тему
Новые блоги и статьи
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась. Первый вариант. . .
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2. Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет. Но обычно это 50 лет и более. Наверное, закисление почвы происходит сезонно в средней. . .
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи. Через несколько переработок от PHP кода к C89 (надеюсь, 89). Но довольно запутанно получилось. Код для Linux. Но если убрать time и то, что с ним. . .
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы Всем привет! Хочу поделиться свежим (и довольно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru