• Как передать по TCP несколько переменных?

    Teivaz
    @Teivaz
    Может и оверкилл, но для себя я использую формулу google protocolbuffer + boost asio = нет проблем с пересылкой структур. Только нужно идентифицировать пакеты.
    Ответ написан
    Комментировать
  • Как правильно подключать import'ы во Flask?

    Teivaz
    @Teivaz
    Я только вчера столкнулся с этой проблемой.
    Достаточно в одном месте написать не from A import B, а from A import *, например, в REST/books.py:
    from app import *
    Ответ написан
    Комментировать
  • Как в MVS разрешить файловый ввод в программе?

    Teivaz
    @Teivaz
    Проблема в рабочей директории.
    В Project -> Properties -> Debugging -> Working Directory ставим $(TargetDir)
    И текущая директория при запуске будет той, где лежит исполняемый файл. Ну или можно использовать абсолютный путь.
    Ответ написан
    Комментировать
  • Как подключенить ардуино к домофону?

    Teivaz
    @Teivaz
    Ответ написан
    Комментировать
  • Wave engine или Cocos2d-X?

    Teivaz
    @Teivaz
    Кокос очень сильный движок и сейчас активно развивается
    Ответ написан
    Комментировать
  • Как найти сумму углов n-многоугольника?

    Teivaz
    @Teivaz
    Он будет выпуклым даже если один угол больше 180 градусов.
    Ответ написан
    Комментировать
  • Возможна ли разработка iOS-игры на голом OpenGL ES?

    Teivaz
    @Teivaz
    Да, возможно конечно. Я и сам таким занимаюсь сейчас для общего развития.
    www.gamedev.ru

    И если интересно, то я уже отвечал на пару вопросов о самом процессе разработки игр, вот, например
    Ответ написан
    Комментировать
  • Какого формата файлы нужно создать, чтобы написать код на С++?

    Teivaz
    @Teivaz
    Данные можно хранить в json. А чтобы парсить есть библиотеки, например lib_json.
    Ответ написан
    Комментировать
  • Что необходимо знать, чтобы создать игру с 2D?

    Teivaz
    @Teivaz
    Ещё можно попробовать реализовать "Жизнь" Конвея. Я в своё время делал на опенжл. довольно просто и увлекательно.
    Ответ написан
    Комментировать
  • Что необходимо знать, чтобы создать игру с 2D?

    Teivaz
    @Teivaz
    Попробуй Cocos2dx. Это версия на С++ довольно популярного игрового движка. Под него есть удобные радакторы, например Cocostudio. Там можно и анимации делать и спрайты нарезать и GUI набросать и сцену собрать. А ещё он кроссплатформенный, так что можно будет и под иос и под андроид собрать без проблем.

    Ну и если создавать игру, то очень важно понимать что конретно должно быть в ней. Для этого обычно создают несколько так называемых фейков - картинок с изображением игрового процесса, меню, короче говоря того, как должна будет выглядеть игра. Также важно иметь список фич, которые планируются для первой версии, без него игру можно делать бесконечно и она врядли когда-нибудь будет закончена. Ну и всяческие диаграммы переходов между меню, игровой флоу тоже будут полезны. Всё это нужно для того, чтобы во время программирования точно знать что нужно реализовывать а не распыляться на кучу фич которые было бы круто иметь в будущем.
    Ответ написан
    Комментировать
  • Как определять прозрачные области спрайта, используя маску?

    Teivaz
    @Teivaz
    Шейдером в openGL это решается элементарно.
    Передаём в шейдер обе текстуры. Из первой текстуры берём r, g, b. Потом вычисляем яркость второй текстуры в точке и в прозрачку стави один минус это значение.
    vec4 tex1 = texture2D(texture1, position);
    vec4 tex2 = texture2D(texture2, position);
    float luma2 = (tex2.r + tex2.g + tex2.b)/3.0;
    gl_FragColor = vec4(tex1.r, tex1.g, tex1.b, 1.0 - luma2);
    Ответ написан
    1 комментарий
  • Как организовать игровые циклы?

    Teivaz
    @Teivaz
    Не знаю ка обстоит дело с играми на JS, но на C++ в функцию update передаётся время с прошлого апдейта, как правило, в милисекундах. Это время удобно учитывать для перемещения объекта.
    void update(float dt)
    {
    float traveled = getSpeed() * dt + getTravaledDistance();
    setTraveledDistance(traveled);
    }

    При этом функция отрисовки и функция обновления выполняются в одном потоке (иначе нужно будет синхронизировать потоки, лочить некоторые методы и т.д.).
    А если игра вдруг подвисла, то в апдейт может прийти довольно большое значение времени и тогда игровые элементы могут сделать резкий скачок. Чтобы избавиться от этого можно обрезать максимально возможное время в главном цикле:
    // main loop
    while(!done)
    {
    float dt = getTimeSinceLastUpdate();
    dt = min(33.3, dt); // equals 30 fps
    update(dt);
    render();
    }
    Ответ написан
    Комментировать
  • Ввод NULL-значения в С++?

    Teivaz
    @Teivaz
    getch()
    Ответ написан
    Комментировать
  • Подключение FTP проекта к koding.com?

    Teivaz
    @Teivaz
    Я нечасто занимаюсь сайтами, но когда занимаюсь - использую питоновый скрипт, который запускается в фоне и мониторит изменения в выбранной папке. Все изменения автоматически заливает на фтп. Могу дать скрипт если нужен.
    Ответ написан
    Комментировать
  • Как запускать .cpp в VS раздельно?

    Teivaz
    @Teivaz
    Следует понимать что именно делает ви;уал студия когда ты просишь скомпилить проект. Три основных этапа:
    Создание единиц трансляции
    На этом этапе каждый компилируемый файл (*.cpp включённый в проект) обрабатывает препроцессор: подставляет вместо "#include" код из файлов, убирает код в блоках игнорирумых "#if", подставляет все макросы "#define" и удалит комментарии.
    Кстати есть интересный финт с препроцессором, который немногие знают:
    // words.h
    "he", 
    "she", 
    "it"

    // main.cpp
    const std::string words[] = 
    {
    #include "words.h"
    };
    
    int main(int, char**)
    {
    std::cout << words[1];
    return 0;
    }

    в результате будет
    >>> she

    Компиляция ресурсов. На данном этапе каждая единица трансляции компилируется в объектный файл с расширением ".obj".

    Линковка. Она же компоновка. Исполняемый файл начинает выполнение с точки входа. Линковщику можно задать эту точку входа. По умолчанию в консольных приложениях винды это функция "main". Линковщик начнёт с того, что пройдётся по всем объектным файлам, найдёт эту функцию и начнёт с неё создавать ".exe" файл. Потом отыщет все функции, которые используются в программе, добавит их в исполняемый файл, а вызовы их имён заменит вызовами по соответствующим адресам.

    Исходя из этого можно предложить несколько вариантов:
    Использовать комментарии для переопределения точки входа.
    Использовать препроцессор (#if #elif #else #endif).
    Использовать разные точки входа линковщика.
    Во время исполнения программы отслеживать устройство ввода (клавиатура, файл) и выполнять соответствующий участок кода.
    Ответ написан
    Комментировать
  • Какие есть методы шифрования информации в спектральной области?

    Teivaz
    @Teivaz
    Навскидку, есть скремблирование спектра.
    Ответ написан
    Комментировать
  • Чем покрыть фототранзистор, чтобы он реагировал только на ИК-излучение?

    Teivaz
    @Teivaz
    Ещё можно попробовать слюду. Она плохо пропускает видимый спектр, но прозрачна для ИК излучения. Из неё делают, например, филтры для пожарных ИК сигнализацйи. Но я не уверен действительно ли её прозрачности будет достаточно для данной цели.
    Ответ написан
    Комментировать
  • Как в C++ красиво реализовать множество условий?

    Teivaz
    @Teivaz
    В подобных случаях я разделяю группы условий либо на временные пременные, либо на функции.
    Например:
    bool CanConsumePoint();
    bool IsPointValid(Point pt);
    
    bool pointInsideRectangle = (pointX > rectXMin) && (pointX < rectXMax) && (pointY > rectYMin) && (pointY < rectYMax);
    bool pointTypeCompatible = (pointType == compatible) || (pointType == force);
    bool pointValid = IsPointValid(currentPoint);
    if (pointInsideRectangle && pointTypeCompatible && CanConsumePoint() && pointValid)
    {
        ...
    }

    Так каждую переменную и метод можно отдельно рассматривать и легко понять за что каждая отвечает и при необходимости разобраться с логикой каждого элемента условия не вдаваясь в подробности остальных.
    Ответ написан
    Комментировать
  • Газовый паяльник: подойдет ли для освоения азов пайки?

    Teivaz
    @Teivaz
    Газовый паяльник не то с чего удобно начинать, если, конечно, не нужно паять медные трубы. Обычный паяльник за 15 баксов в этом плане намного лучше. Газовый паяльник сильно перегревает жало, у него нет нормального механизма поддержания температуры на требуемом уровне. Перегретый припой теряет свои качества, становится матовым. Перегретая канифоль кипит и тоже быстро теряет свои свойства, сильно кипит и брызжет. Перегретое жало быстро окисляется, его нужно постоянно очищать.
    У газового паяльника также есть отверстие для выхода продуктов горения, обычно оно на боковой стороне жала (у меня такой же дремель дома, там как раз так), что довольно неудобно так как необходимо следить чтобы при пайке оно не оплавило что-нибудь или не сдуло СМД компоненты (даже припаянные уносит вместе с капельками расплавленного припоя).
    Так что идеальный вариант для обычной пайки радиодеталей - простой электрический паяльник ватт на 40, бонусом будут сменные жала. А для начинающего и регулировка температуры особо не нужна.
    Газовый паяльник - приятный бонус когда нужно что-то припаять а электричества нет или розетка очень далеко. Ещё у него есть хорошая насадка нож. им очень удобно резать капроновые нити - концы получаются сразу подалвленными и не распускаются.
    Ответ написан
    Комментировать