Задать вопрос
  • Почему жалуется на преобразование double > float?

    @res2001
    Developer, ex-admin
    double у вас константы в выражении. По умолчанию вещественные константы - double. Поэтому все остальные компоненты выражения преобразовываются в double, а при присваивании необходимо снова преобразовать во float с потерей точности, об этом и сообщает компилятор.
    Чтоб сделать константы float, нужно использовать суффикс 'f': 9.0f. Тогда все выражение будет вычисляться во float.
    Ответ написан
    2 комментария
  • Как воспроизвести wav файл на чистом c++ без сторонних библиотек?

    Nipheris
    @Nipheris Куратор тега C++
    1. Курите формат wav-файлов, он не особо сложный, написать код чтения не должно составить проблем.
    2. Разбираетесь с аудио-API различных ОС. Убеждаетесь, что для разных ОС реализация будет разная.
    3. Обеспечиваете необходимые преобразования прочтенных из wav данных о звуковой волне в данные, готовые к передаче в аудио-API.
    4. Результат.
    Ответ написан
    1 комментарий
  • C++ при вводе в одно переменную меняеться вторая?

    @res2001
    Developer, ex-admin
    Похоже, что на данной платформе стек растет вниз (в сторону уменьшения адресов), поэтому введя в word
    6 символов (размер word - 5), произошел выход за пределы массива и последние 2 байта (не забываем, что строки в Си имеют еще дополнительный нулевой символ в конце) записались на соседние переменные, т.е. повредили содержащиеся в них значения.
    При этом не произошло никакого сбоя, потому что все переменные в стеке (а все пространство в стеке изначально уже выделено и к нему можно свободно обращаться). Если бы word был динамическим массивом, то скорее всего произошел бы seg fault. В отладочной версии возможно и не произошел бы.
    Си и С++ оставляет за программистом возможность управлять памятью, поэтому компилятор такие вещи не отслеживает.
    Если хотите избавиться от ошибки, используйте класс string или перепишите код так что бы не было возможности выхода за границы массива.
    Ответ написан
    5 комментариев
  • Как делают свои игры Supercell?

    GavriKos
    @GavriKos Куратор тега Разработка игр
    Как с помощью этих навыков они делают игру на android и ios ? Что используют ?

    Они используют C++ и OpenGL.
    И анроид и айось позволяют обращаться к библиотеке, написанной на плюсах. Например, на дроиде это делает NDK.
    Может над опенГЛ еще обертка в виде какой нить SDL.
    Есть конечно еще другие варианты - трансляция c++ во что то другое, но вряд ли.
    Ответ написан
    4 комментария
  • Какие макросы у линухи и винды?

    @res2001
    Developer, ex-admin
    Смотри тут.
    Ответ написан
    Комментировать
  • Хочу работать программистом в gamedev?

    saboteur_kiev
    @saboteur_kiev Куратор тега Разработка игр
    software engineer
    Первый необходимый навык - умение пользоваться поиском.

    gamedev ничем не отличается от любых других разработок - все тоже самое - нужно, чтобы человек умел работать, был достаточно самостоятельным, чтобы за ручку его не водить. Иначе через конкурентов будет пробиться сложно.

    План такой:

    * Ищете вакансии в gamedev
    * Смотрите требования, выбираете какое направление интересно вам - андроид/web/C++/QA
    * Учите то, что указывают в вакансиях
    * как выучите - пишете резюме и бомбардируете эти вакансии.

    5-10 (или если все плохо 50-100) собеседований и профит.

    P.S. Ну и еще, геймдев гораздо меньше, чем разработка вообще, поэтому вполне можно начать не с геймдев, а с любой разработки.
    Ответ написан
    2 комментария
  • Что такое бизнес логика android приложения?

    @Mercury13
    Программист на «си с крестами» и не только
    Бизнес-логика — это то, что программа делает с точки зрения пользователя. По-другому (и более понятно) — логика предметной отрасли.

    Например, у нас есть игра в шахматы. Бизнес-логика — это правила шахмат, принципы работы часов, команды «попросить ход назад», «сдаться» и «согласиться на ничью». Если нужно начинать не с исходной позиции, а с любой — то редактор.

    Крайне спорно, относить ли к бизнес-логике — анимация фигурок на манер Battle Chess и боты.

    Логика, которая не бизнес — это работа с сетью, графикой, конфигурационными файлами, сохранениями досок и партий, античит и многое другое. В общем, то, что нужно для жизнеобеспечения программы, а не для предметной отрасли. Сохранять партии в PGN или XML, как перекидываться пакетами по сети и какие настройки держать для совместимости…
    Ответ написан
    Комментировать
  • Разработка игр, как выбрать язык и движок?

    Tiendil
    @Tiendil
    Разработчик ПО.
    Движок — это инструмент. А значит он обладает всем общими для инструментов свойствами. Например, все отвёртки во много одинаковы, все молотки похожи (хотя киянка и отличается от кувалды). Не так важно какой первый движок будет, потому что надо знать парочку.

    ЯП — тоже инструмент. Для него справедливы те же рассуждения. Но, поскольку ЯП — более базовая штука, его изучение больше зависит от контекста и планов на будущее, особенно ближайшее.

    Если хочется начать быстро делать что-то законченное и зарабатывать какие-нибудь деньги этим, то C# + Unity выглядит лучше — они проще.

    Если хочется стать реальным профи и есть время на учёбу, то C++ будет более правильным выбором. Плюсы, при нормальном изучении, дают на много больше знаний о программировании в целом и о том, как программы работают. Человек, осиливший C++, на мой взгляд, осилит любой другой ЯП довольно быстро (за исключением Haskel, пожалуй :-) ). Обратное же неверно. Но времени на них надо куда больше.

    С другой стороны, учить всё равно можно в разном порядке. Смотрите по своим жизненным приоритетам и наличию работы в той области, где вы живёте.
    Ответ написан
    1 комментарий
  • Сколько можно зарабатывать на C++ в 14 лет?

    pro_co_ru
    @pro_co_ru
    Старший инженер-программист
    Оцени себя, например, пройдя бесплатные экзамены в онлайн университете intuit.ru или тут.
    Хотя бы поймёшь какого уровня твоё программирование.
    Ответ написан
    Комментировать
  • Можно ли и создать экземпляр класса (с++) с проинициализированными полями?

    maaGames
    @maaGames
    Погроммирую программы
    > поля класса не будут меняться в процессе
    значит, их нужно делать статическими константами и, возможно, вообще убрать класс, заменив на namespace.

    > "Говорят" можно через шаблон, но как не сказали)
    По сути, те же статические константы, только могут быть только целым числом и не имеют адреса.
    template< int X, int Y >
    class NAME
    {
    public:
        enum { field1 = X, field2 = Y };
    };
    
    typedef NAME<5,7> Name57;
    
    int a = Name57::field1;
    int b = Name57::field2;
    Ответ написан
    7 комментариев
  • В чем преимущества компиляции в 4 этапа, нежели в 1?

    15432
    @15432
    Системный программист ^_^
    gcc это набор инструментов, каждый из которых своим делом занимается. В первом случае все автоматически перенаправляется следующему в цепочке, во втором пошагово. Возможность полностью контролировать процесс компиляции полезна - может я хочу посмотреть на ассемблерный листинг, или посмотреть на результат оптимизатора и понять почему код в этих параметрах сборки вдруг перестал работать, поискать баги компилятора.. ну или банально пробовать разные параметры линковщика, не затрагивая остальные этапы компиляции.
    Ответ написан
    Комментировать
  • Что за ерунда с APi Level в Play Market? Как можно размещать 26 уровень если даже 7.0 Android пользуются всего 1,5% пользователей?

    iLLuzor
    @iLLuzor
    Java, Kotlin, Android Developer
    я чего-то не понимаю?
    Определённо. Не понимаете разницу между minimum api и target api.
    Ответ написан
  • Variadic template c++?

    @Mercury13
    Программист на «си с крестами» и не только
    Этот шаблон вычисляет при компиляции такое:
    rbv<false, false, true, true>() = 11002.

    И состоит из двух частей.
    1. Для одного параметра у нас напрямую написан шаблон.

    2. Для false, false, true, true — у нас используется второй шаблон: a=false, b=false, d = (true, true).
    И он равняется (rbv<false, true, true> << 1) + false.

    Чтобы вычислить новый rbv, снова работает второй шаблон: a = false, b = true, d = (true).
    И он равняется (rbv<true, true> << 1) + false.

    Для третьего rbv у нас a = true, b = true, d = ().
    Внимание, список d может быть и пусттым. Потому, чтобы не было конфликта с первым шаблоном, второй пишется для двух и более параметров.
    И третье наше значение равняется (rbv<true> << 1) + true.

    Вот тут работает первый шаблон и получается 112.
    Дальше уже можно вычислить все rbv по очереди и получить 11002.
    Ответ написан
    4 комментария
  • Как правильно применить функцию ко всем элементам двумерного вектора?

    myjcom
    @myjcom Куратор тега C++
    что то мудрено как то...
    for(auto &cellLine:matrix)
    {
        for(auto &cell:cellLine)
        {
            cell.showBody();
        }
    }

    foreach и лямбда-функции здесь явно лишние.
    про передачу по ссылке уже написал cppjunkie
    Ответ написан
    1 комментарий
  • Как упаковать файл в проект и затем извлечь на C++ в Visual Studio?

    @Mercury13
    Программист на «си с крестами» и не только
    Есть три способа хранения картинки в EXE-файле.
    1. Bitmap-ресурсом. Несжатая, большинство библиотек позволяют загрузить её в одну строчку.
    2. Двоичным ресурсом. Сжатие возможно любое, загрузка пишется несколько дольше.
    3. Массивом, const unsigned char picture[] = { };

    Я не знаю, с какой библиотекой для BMP вы работаете, и надо смотреть уже по месту.

    И наконец: для чего её распаковывать? Реально нужно? (Например, мне однажды нужно было распаковывать картинки, потому что не хотел писать просмотрщик графики и пользовался штатным.)
    Если нужно — то куда-нибудь во временный каталог, который тоже нужно сначала получить.
    Ответ написан
    4 комментария
  • Как упаковать файл в проект и затем извлечь на C++ в Visual Studio?

    @res2001
    Developer, ex-admin
    Это делается с помощью ресурсов. Последний раз работал с ресурсами года 3 назад - с текстовым файлом.
    Создаете в студии файл описания ресурсов (.rc), добавляете ваш файл туда. Какие конкретно кнопки жать при этом не скажу.
    Затем в коде с помощью WinAPI функций FindResource и LoadResource загружаете ресурс в память как байтовый массив.
    Дальше делайте с ним, что хотите.
    Смысла сохранять файл на диск нет, т.к. потом снова будете с диска читать.
    Ответ написан
    4 комментария
  • Очередь с приоритетами, скорость работы?

    longclaps
    @longclaps
    Вы меня извините, при всём уважении, вы - говнокодер. С этим надо что-то делать, для начала - признать этот факт. Возьмём самую длинную строку:
    reader = (tuple(map(str, line.split())) for line in stdin)
    чем она отличается от
    reader = (tuple(line.split()) for line in stdin)
    Ответ - вызовом map, который бессмысленно переводит str в str. Вы зачем это сделали? Там в задании (я не поленился, погуглил) был шаблон решения с рабочим проверочным кодом, а вы зачем-то заменили его странным не буду повторять чем.

    По существу: сложность алгоритма оценивается не измерениями, а мозгами. _heapify_max, комментарии в исходниках:
    """ Maxheap variant of heapify. """
    Смотрим heapify:
    """ Transform list into a heap, in-place, in O(len(heap)) time. """

    И где тут O(logn)?

    Попробуйте придумать нормальное решение.
    Ответ написан
    1 комментарий
  • Из-за чего ошибка чтения?

    @Mercury13
    Программист на «си с крестами» и не только
    Вы компилируете функцию в двоичный код и на месте же вызываете. Так что есть вопросы.
    1. Функции обеспечили правильное соглашение вызова?
    Мне что-то кажется, что при подобной ручной компиляции проще работать с соглашением PASCAL или STDCALL — ну, шут его знает.
    2. VirtualProtect работает с целыми страницами. Так что на куске памяти из сегмента данных (ну или из стека, полного кода не вижу) она в лучшем случае откажет, в худшем ничего не сделает. Проверьте, была ли ошибка.
    3. Первый параметр должен быть source, а не &source.
    Ответ написан
    Комментировать
  • Где почитать очень подробно о шаблонах?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    Вот отличная книга: C++ Templates: The Complete Guide (2nd Edition) 2n.... Она выгодно отличается тем, что покрывает даже 17ый стандарт.
    Ответ написан
    1 комментарий
  • Каков C++ в геймдеве?

    Tiendil
    @Tiendil
    Разработчик ПО.
    >За последние три месяца мне удалось освоить Python
    не удалось

    >Разобрался с гит
    не разобрались

    >линуксом на уровне пользователя
    не разобрались

    >Lua
    не разобрались

    Для начала приземлитесь. За 3 месяца вы ни в чём из этого разобраться на хорошем уровне не могли.

    >Где писать игры для портфолио
    Это делать не обязательно. Это, конечно, плюс, но не такой существенный чтобы прямо быть обязательным.

    Программистов (да и всех остальных) нанимают, ориентируясь не только на опыт (доступных людей с целевым опытом всегда почти нет), но и на навыки и знания. Их можно получать разными способами, писать законченные игры - один из них, но не самый эффективный. Хотя бы потому, что законченная игра требует навыков из очень разных областей, все из которых прокачивать нет никакой необходимости.

    Определитесь чем конкретно хотите заниматься: физика, графика, логика, сеть, утилиты, etc и делайте что-то именно в этой области (демки, например).

    А так, чтобы попась в геймдев достаточно просто навыков программирования и хорошей теоретической базы (графы, математика), демки не обязательны.
    Ответ написан
    3 комментария