MicroSDA

Созданные ответы форума

Просмотр 15 сообщений - с 46 по 60 (из 64 всего)
  • Автор
    Сообщения
  • в ответ на: Пример реализации SFML Network #697
    MicroSDA
    MicroSDA
    Участник
    Сообщений:64

    Зарегистрирован:
    24.04.2015

    Репутация:22

    точка останова здесь cin >> ip;

     

    Необработанное исключение по адресу 0x62B5F958 (msvcp120.dll) в SFML Network.exe: 0xC0000005: нарушение прав доступа при чтении по адресу 0xCDCDCDCD.

    в ответ на: Пример реализации SFML Network #696
    +1
    MicroSDA
    MicroSDA
    Участник
    Сообщений:64

    Зарегистрирован:
    24.04.2015

    Репутация:22

    Крашится то клиент то вместе с сервером на моменте выбора режима клиент.

    MicroSDA
    MicroSDA
    Участник
    Сообщений:64

    Зарегистрирован:
    24.04.2015

    Репутация:22

    Vector2i localPosition = Mouse::getPosition(window); // подчеркивает

    Скорей всего не Mouse инициализирован.

    MicroSDA
    MicroSDA
    Участник
    Сообщений:64

    Зарегистрирован:
    24.04.2015

    Репутация:22

    if (localPosition.x < 3) { view.move(-0.2*time, 0); }//влево
    if (localPosition.x > window.getSize().x – 3) { view.move(0.2*time, 0); }//вправо
    if (localPosition.y > window.getSize().y – 3) { view.move(0, 0.2*time); }//вниз
    if (localPosition.y < 3) { view.move(0, -0.2*time); }//ввех
    Если это у вас класс то наверно нужно этот код описать в методе класса, что то типо update();
    А так просто не видно к чему он относиться.

    Если честно то у вас странный класс получился

    в ответ на: Взаимодействие объектов #668
    MicroSDA
    MicroSDA
    Участник
    Сообщений:64

    Зарегистрирован:
    24.04.2015

    Репутация:22

    В принципе я сделал функцию, она работает.

    Передал в класс силку на массив, внутри класса функция которая проходит по циклу минуя индекс самого себя (чтоб не проверять столкновение с самим собой ). Но пока проблемы с отталкиванием (.

    MicroSDA
    MicroSDA
    Участник
    Сообщений:64

    Зарегистрирован:
    24.04.2015

    Репутация:22

    Я такой схемой пользуюсь

    Вложения:
    You must be logged in to view attached files.
    MicroSDA
    MicroSDA
    Участник
    Сообщений:64

    Зарегистрирован:
    24.04.2015

    Репутация:22

    Про горизонтальную и вертикальную плоскость трудно представить что ты имеешь в виду, но по поводу куда попал шар по препятствию можно определить углом вектора положения шарика и препятствия. Только вектор и угол должно определять препятствие. В последних уроках посмотри там есть по этому поводу информация. Лично я таким образом определяю положение себя по отношению к мобу и тем самым гружу анимацию мобу тоесть если я внизу него – это некий диапазон от столько до столько градусов, значит анимация такая та.

    Попробуй может поможет.

    в ответ на: Интерфейсы управления textbox, button #619
    MicroSDA
    MicroSDA
    Участник
    Сообщений:64

    Зарегистрирован:
    24.04.2015

    Репутация:22

    Сори ) мельком смотрел не заметил.

    Про Threads я сам не чего не знаю но думаю да, это распараллеливание.

    Пока я не могу передать нормально аргументы функции в этот поток threads. Могу передать значение числа (int ,double, итд…), могу передать хендл окна (RenderWindow &window), но кода дело доходить до аргумента типо (int x, RenderWindow &window, Sprite &sprite)- то есть не один а несколько аргументов, возникают не понятные мне ошибки.

    в ответ на: Интерфейсы управления textbox, button #616
    MicroSDA
    MicroSDA
    Участник
    Сообщений:64

    Зарегистрирован:
    24.04.2015

    Репутация:22

    Я мельком просмотрел код и заметил массив символов  думаю лучше все же использовать

    std::string или String

    И ввод текста в игре к примеру чата или что то ешё – выводить на отдельный поток.

    Надеюсь по поводу Threads будут уроки.

    А насчет алгоритма ввода если я не ошибся то у SFML есть некое sf::Event::TextEntered .

    MicroSDA
    MicroSDA
    Участник
    Сообщений:64

    Зарегистрирован:
    24.04.2015

    Репутация:22

    В твоем цикле переменная i только объявлена но не инициализирована.
    void Collision(float Dx,float Dy)
    for(int i;i<(y+h)/32;i++)// дай значение переменой i.
    for(int j;j<(x+w)/32;j++)// и тут тоже j не известна .

    MicroSDA
    MicroSDA
    Участник
    Сообщений:64

    Зарегистрирован:
    24.04.2015

    Репутация:22

    Хотя скорой всего я не прав

    MicroSDA
    MicroSDA
    Участник
    Сообщений:64

    Зарегистрирован:
    24.04.2015

    Репутация:22

    Скорость персонажа у нас динамическая относительно времени а время в свою очередь динамическое относительно скорости процессора. Скорость меняется в зависимости от нашего времени прошедшего цикла и потом эта скорость прибавляется  к координатам то ли посредством move(); то ли setPosition(); . Обработка нажатий клавиш у нас происходит посредством множеств
    if (Keyboard::isKeyPressed(Keyboard::Кнопка){// и тут  уже происходит смешение нашего персонажа и добавление к нему нашей скорости.}

    Мне кажется что проблема возникает потому что все происходит за один цикл.

    Пример :

    Наша функция обработки нажатий кнопок()

    {
    //пример смещения про х.
    if (Keyboard::isKeyPressed(Keyboard::Up){ move(0.1*speed/*или сразу * на time*/,0)}
    if (Keyboard::isKeyPressed(Keyboard::Down){ move(0.1*speed/*или сразу * на time*/,0)}
    if (Keyboard::isKeyPressed(Keyboard::Left){ move(0.1*speed/*или сразу * на time*/,0)}
    if (Keyboard::isKeyPressed(Keyboard::Right){ move(0.1*speed/*или сразу * на time*/,0)}
    }

    Тут и возникает наша проблема потому что при нажатии любой кнопки не что не мешает проверке нажатия другой кнопки. И происходит дополнительное домножение скорости к нашим координатам.
    Как мне кажется нужно сделать так что бы выполнялось одно условия за цикл. Или посредством if else или switch.
    Возможны глюки похожие на зиг загное хождение!
    Или же можно перемножать на скорость вконце циклов if keyboard is pressed.

    MicroSDA
    MicroSDA
    Участник
    Сообщений:64

    Зарегистрирован:
    24.04.2015

    Репутация:22

    #include <SFML/Graphics.hpp>
    #include <SFML/Audio.hpp>
    //Для этих библиотек потребовалось вписать
    sfml-graphics-s.lib
    sfml-window-s.lib
    sfml-system-s.lib
    sfml-audio-s.lib
    opengl32.lib
    winmm.lib
    gdi32.lib
    ws2_32.lib
    glew.lib
    freetype.lib
    jpeg.lib
    openal32.lib
    sndfile.lib
    // Возможно есть и лишние, но у меня работает

    MicroSDA
    MicroSDA
    Участник
    Сообщений:64

    Зарегистрирован:
    24.04.2015

    Репутация:22

    Либы имеют три категории  d, s , и просто .lib

    Для того чтобы убрать dll ки нужно в разделе Компоновщик; Ввод прописать все либы(все что есть в папке либ!!!) с препиской( Для релиз версии просто -s.lib)(Для дебаг версии s-d.lib) и закинуть их в папку с проектом где лежит main.cpp.

    В препроцессоре прописать SFML_STATIC.

    Почему все либы а не 3 -4(по крайне мере у меня так )  ? Каждая либа тянет за собой другую. Но libsndfile-1.dll и openal32.dll  должны быть обязательно !

    Извиняюсь если выше об это писали ))

    http://www.sfml-dev.org/tutorials/2.2/start-vc.php  Полный список иерархии либов (листать вниз ).

     

    в ответ на: Еденичное нажатие клавиши #573
    MicroSDA
    MicroSDA
    Участник
    Сообщений:64

    Зарегистрирован:
    24.04.2015

    Репутация:22

    Когда мне нужно было вводить информацию, я искал читал и пришел к выводу что Sfml не предоставляет формы для ввода. После долгих раздумий как реализовать ввод информации так чтоб это ещё и отображалось на экране  придумал вод что (это очень глупо но всё же мне помогло ):

    Создал главную строковую переменную типа String input;

    Для каждой кнопки я создал отдельную переменную string Q =”Q”;// и так для каждой буквы

    Потом цикл Ifфов по поводу нажатия той или иной кнопки и к главной переменной input я прибавлял переменную то что ввел, и сразу отрисовывал на экран в виде текста .

    Возникла такая же проблема а именно при нажатии одной кнопки мне печатало их сразу по 20-50.

    Я добавил в If(Keyboard::isKeyPressed(Keyboard::Q){input=input+Q;  while Keyboard::isKeyPressed(Keyboard::Q){// оставил тело пустым }}

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

     

Просмотр 15 сообщений - с 46 по 60 (из 64 всего)