• Реализовать перетаскивание квадрата с помощью курсора мыши при нажатой левой кнопке мыши и нажатий на стрелки как можно реализовать?

    RabraBabr
    @RabraBabr
    MrRangerYT,
    Есть такой вариант:
    spoiler
    #include <SFML/Graphics.hpp>
     
    using namespace sf;
     
    int main()
    {
        int x = 200,y = 200;
        int delta_x=0;
        int delta_y=0;
        bool grabbed=false;
        RenderWindow window(VideoMode(800,800), "SFML works!");
     
        RectangleShape okolo(Vector2f(200,200));
        okolo.setFillColor(Color::Black);
        okolo.setPosition(Vector2f(x,y));
     
        while (window.isOpen())
        {
            Event event;
            while (window.pollEvent(event))
            {
                if(event.type == Event::KeyPressed)
                {
                    if(event.key.code == Keyboard::Left)
                    {
                        okolo.setPosition(Vector2f(x-200,y));
                        x-=200;
                    }
                }
                if(event.type == Event::KeyPressed)
                {
                    if(event.key.code == Keyboard::Right)
                    {
                        okolo.setPosition(Vector2f(x+200,y));
                        x+=200;
                    }
                }
                if(event.type == Event::KeyPressed)
                {
                    if(event.key.code == Keyboard::Up)
                    {
                        okolo.setPosition(Vector2f(x,y-200));
                        y-=200;
                    }
                }
                if(event.type == Event::KeyPressed)
                {
                    if(event.key.code == Keyboard::Down)
                    {
                        okolo.setPosition(Vector2f(x,y+200));
                        y+=200;
                    }
                }
                if (Mouse::isButtonPressed(Mouse::Left))
                {
                    if(okolo.getGlobalBounds().contains(Mouse::getPosition(window).x,Mouse::getPosition(window).y))
                    {
                    	if (!grabbed)
                    	{
                    		delta_x=Mouse::getPosition(window).x-okolo.getPosition().x;
                    		delta_y=Mouse::getPosition(window).y-okolo.getPosition().y;
                    	}
                    	grabbed=true;
                    }
                    if (grabbed)
                    {
                    	okolo.setPosition(Vector2f(Mouse::getPosition(window).x-delta_x, Mouse::getPosition(window).y-delta_y));
                    	x = Mouse::getPosition(window).x;
                    	y = Mouse::getPosition(window).y;
                    }
                }
                else
                {
                	grabbed=false;
                }
            }
     
            if (event.type == Event::Closed)
                window.close();
     
     
            window.clear(Color::White);
            window.draw(okolo);
            window.display();
     
     
        }
     
        return 0;
    }
  • Реализовать перетаскивание квадрата с помощью курсора мыши при нажатой левой кнопке мыши и нажатий на стрелки как можно реализовать?

    RabraBabr
    @RabraBabr
    MrRangerYT,

    Не работает?
    Попробуй заменить строчку:
    if (Mouse::isButtonReleased(Mouse::Left))

    на просто:
    else

    grabbed (захвачен) это булевская переменная как только отпускаем кнопку присваеваем ей значение false (не захвачен).
  • Реализовать перетаскивание квадрата с помощью курсора мыши при нажатой левой кнопке мыши и нажатий на стрелки как можно реализовать?

    RabraBabr
    @RabraBabr
    MrRangerYT,
    Ну может так:
    spoiler
    #include <SFML/Graphics.hpp>
     
    using namespace sf;
     
    int main()
    {
        int x = 200,y = 200;
        bool grabbed=false;
        RenderWindow window(VideoMode(800,800), "SFML works!");
     
        RectangleShape okolo(Vector2f(200,200));
        okolo.setFillColor(Color::Black);
        okolo.setPosition(Vector2f(x,y));
     
        while (window.isOpen())
        {
            Event event;
            while (window.pollEvent(event))
            {
                if(event.type == Event::KeyPressed)
                {
                    if(event.key.code == Keyboard::Left)
                    {
                        okolo.setPosition(Vector2f(x-200,y));
                        x-=200;
                    }
                }
                if(event.type == Event::KeyPressed)
                {
                    if(event.key.code == Keyboard::Right)
                    {
                        okolo.setPosition(Vector2f(x+200,y));
                        x+=200;
                    }
                }
                if(event.type == Event::KeyPressed)
                {
                    if(event.key.code == Keyboard::Up)
                    {
                        okolo.setPosition(Vector2f(x,y-200));
                        y-=200;
                    }
                }
                if(event.type == Event::KeyPressed)
                {
                    if(event.key.code == Keyboard::Down)
                    {
                        okolo.setPosition(Vector2f(x,y+200));
                        y+=200;
                    }
                }
                if (Mouse::isButtonPressed(Mouse::Left))
                {
                    if(okolo.getGlobalBounds().contains(Mouse::getPosition(window).x,Mouse::getPosition(window).y))
                    {
                    	grabbed=true;
                    }
                    if (grabbed)
                    {
                    	okolo.setPosition(Vector2f(Mouse::getPosition(window).x, Mouse::getPosition(window).y));
                    	x = Mouse::getPosition(window).x;
                    	y = Mouse::getPosition(window).y;
                    }
                }
                if (Mouse::isButtonReleased(Mouse::Left))
                {
                	grabbed=false;
                }
            }
     
            if (event.type == Event::Closed)
                window.close();
     
     
            window.clear(Color::White);
            window.draw(okolo);
            window.display();
     
     
        }
     
        return 0;
    }
  • Реализовать перетаскивание квадрата с помощью курсора мыши при нажатой левой кнопке мыши и нажатий на стрелки как можно реализовать?

    RabraBabr
    @RabraBabr
    MrRangerYT,
    Вот в этой строчке:
    if(okolo.getGlobalBounds().contains(Mouse::getPosition(window).x,Mouse::getPosition(window).y))

    судя по всему проверяется, принадлежат ли координаты мыши квадрату. Когда ты зажимаешь левую кнопку
    то в этой строчке:
    okolo.setPosition(Vector2f(Mouse::getPosition(window).x, Mouse::getPosition(window).y));

    координаты квадрата (верхнего левого угла) получают координаты мыши и его верхний левый угол оказывается под курсором.
    Теперь если ты двигаешь курсор вправо и вниз у тебя координаты курсора всегда будут принадлежать квадрату и все будет работать. Если двигаешь вверх и влево у тебя курсор выходит за пределы квадрата и работать перестает.
    Попробуй вот в этих строчках:
    okolo.setPosition(Vector2f(Mouse::getPosition(window).x, Mouse::getPosition(window).y));
    x = Mouse::getPosition(window).x;
    y = Mouse::getPosition(window).y

    Написать так:
    okolo.setPosition(Vector2f(Mouse::getPosition(window).x-100, Mouse::getPosition(window).y-100));
    x = Mouse::getPosition(window).x;
    y = Mouse::getPosition(window).y


    Курсор правда не в углу будет а в центре квадрата.
  • Плохо ли объявлять переменные в начале кода?

    RabraBabr
    @RabraBabr
    Noizefan, я присоединюсь
    Время жизни переменной должно быть как можно меньше иначе нарушается инкапсуляция. Если вы ее объявляете где то наверху листинга а используете глубоко внизу то вы увеличиваете ее время жизни, а это плохо так как ведет к лапшекоду.
  • Можно ли строго разграничить С и С++?

    RabraBabr
    @RabraBabr
    Saboteur, если задаться целью то можно наверное. Другое дело, что на asm'e законченную программу я писал еще в прошлом тысячелетии. Сейчас он мне может понадобиться только в контексте у меня где то frame rate просел, прошёлся профилировщиком, нашел узкое место в render'е не связанное с GPU, стал думать, что там поменять. Вот двадцать раз подумал, сотню раз погуглил, пообщался с товарищами, потом еще десяток раз подумал. Ну не могу ничего сделать. Ну что же повздыхал и полез смотреть, что за код компилятор выдает и что с этим можно сделать в этом конкретном месте. А писать какие то сложные программы на asm'e... Может инструмент с чуть большим уровнем абстракции надо взять.
  • Можно ли строго разграничить С и С++?

    RabraBabr
    @RabraBabr
    Saboteur, а что такого сложного в brainfuck'е запомнить три с половиной команды?
  • Можно ли строго разграничить С и С++?

    RabraBabr
    @RabraBabr
    Сергей Горностаев, ну почитать гайды это святое, я же не настолько буквально имел в виду, что прям сел и давай выдавать тонны кода на гора, получая инфу через третий глаз, напрямую из высшего разума. Я думал, что под дополнительной подготовкой имелось ввиду, что то серьезнее.
  • Можно ли строго разграничить С и С++?

    RabraBabr
    @RabraBabr
    Сергей Горностаев,

    Не знаю. Я вот недавно открыл в себе способность с ходу говнокодить на любом даже ранее невиданном до этого языке. Конечно не зная нюансов красиво и правильно писать не получится. Но работать будет. И думаю такая способность не уникальна. Наверно у каждого второго программиста. Просто объясняется она тем, что скорее всего у всех этих языков предположительно общий предок. Плюс во время развития они друг у друга многое перенимали.
  • Как в программе работает перегрузка?

    RabraBabr
    @RabraBabr
    Перестаньте давать имена переменным русскими словами. Ладно я ничего не скажу про всякие там a, k, i. j.
    Но когда начинают писать class Kvadrat, float storona и т.п. - это прям конкретно бесит. Это такой же моветон как мат в официальных документах.
  • Как поживают indie game dev? Есть ли смысл заниматься этим сейчас в одиночку?

    RabraBabr
    @RabraBabr
    Ну начинать конечно нужно с синглов. Мультиплей всегда сложнее в плане траты ресурсов на поддержку. Вообще наращивать сложность проекта можно итерационно. Написали сингл зашло, люди стали покупать, допилил мультиплей. Просто изначально заложите в свой проект такую возможность. Ну тут конечно все еще от жанра зависит. Не каждый жанр предполагает такую возможность.
    Вы учтите люди ведь не всегда хотят веселиться и соревноваться с друзьями. Многие хотят убить полчаса приятно проведя время. Люди книжки до сих пор читают.

    Вы должны четко понимать для кого вы делаете игру. Кто потребитель: возраст, пол, вес. Все.
    Вот приведу пример. Правда он из вр. Была такая игра PixelRift. Там в школе пока училка не видит в нинтеду надо играть под партой. Мне сорокалетнему дядьке оно сразу зашло. Плевалка из трубочки, самолетики бумажные. В общем ностальгия. Что мне жалко 30 баксов за то, чтоб попасть в детство хоть на пару вечеров? А дочь сказала фигня какая то. Ну правда зачем ей игра про школу когда она туда и так каждый день ходит?

    Знаете как приятно, в отзывах к своим играм, потом читать, что то вроде - "Думал перед сном гляну, что это такое, а потом очнулся в 5 утра только, уже скоро на работу собираться".
  • Как поживают indie game dev? Есть ли смысл заниматься этим сейчас в одиночку?

    RabraBabr
    @RabraBabr
    Я как разработчик со стажем сделавшим много игр. Скажу так. Не надо вам в тренды и миллионные аудитории. Вы там с профессиональными командами у которых маркетинг, денег немерено на их поле будете бесконечно проигрывать. Всегда они вас переиграют. Ну если вы конечно не супер гений какой. Ищите то, что им не интересно. Что то очень нишевое в которое будут играть несколько тысяч человек всего. Возможно очень странное. И да рассчитанное на платежеспособную аудиторию. Да вы там миллионов не заработаете но на кофе с печеньками свои несколько тысяч долларов всегда будете иметь.
  • Можно ли использовать свой код при разработке нескольких однотипных приложений?

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

    RabraBabr
    @RabraBabr
    Очевидно неправильно делает. Не надо рендер к таймеру привязывать. Надо изменение координат объекта к таймеру привязывать. А рендер обычно своей жизнью живет.
  • Как скомпилировать 3 файла в с++?

    RabraBabr
    @RabraBabr
    Возможно в этом дело:

    Во втором файле #include "date.h"
    Первый файл date.hpp
    Файл main.cpp про них вообще ничего не знает.
    А вообще я бы выбросил это все в помойку.
    Пользуйтесь этим https://www.boost.org/doc/libs/1_55_0/doc/html/dat...
  • Указатели и многомерные массивы (С++)?

    RabraBabr
    @RabraBabr
    res2001, Эмм. У вас в *end адрес чего то, что за пределами массива хранится, а вовсе не адрес последнего элемента массива. Не опасно ли так делать? Забудете и в коде отстрелите себе ногу.
  • Почему пробел заменяется на W?

    RabraBabr
    @RabraBabr
    Тут в функцию string space (string text) убирающую пробелы похоже не та строка передается. во всяком случае запись
    string result = "";
        space(result);

    выглядит странной. Пробелы не чистятся и в цикле по else превращаются с помощью result += (*i + key - 97) % 26 + 97; в 'W'.
  • Можно ли вывести список enum?

    RabraBabr
    @RabraBabr
    Ну вот я в расстройстве. Единственное годное решение с шаблоном map запрятано глубоко в коментарии. А дичь отмечена решением. Потом будет бездумно копипаститься отравляя код. И да на заданные вопросы я к сожалению не получил ответ. Если вы посмотрите описание типа float, то увидите, что это число с плавающей точкой. А слово мантисса должно вас насторожить, так как в ячейках памяти внезапно может храниться не то, что вы думаете. Это бомба в коде обязательно когда нибудь сработает. Использовать в денежных расчетах float преступление. К вам обязательно прилетит NaN.
  • Можно ли вывести список enum?

    RabraBabr
    @RabraBabr
    Если я правильно понял float это зарплата?
    Меня другое интересует. Является ли экономическим преступлением при работе с деньгами использование вещественного типа? Надо ли за это сажать пожизненно? И почему? Хорошенько подумайте.