Созданные ответы форума
-
АвторСообщения
-
А что ты хотел увидеть, кроме ” зависания ” если ты останавливаешь всю программу? Если хочешь что что либо при таком раскладе происходило, делай потоки.
ну или как о так if( timer.get() ){…} и где нибудь выше его активация, с условием что повторная возможна ток по окончанию работы.
А чем плох Sleep()? все также, ток делается счетчик циклов и устанавливается значение на нужное количество( может чутка сложнее получить наиболее точное значение, но никто же не мешает синхронизироваться с внешним временем)пробуй, может чу интересное и получится
да
в цикле setRotation() и draw() пока не заполнишь сектор.
Если делать анимацию заполнения сектора, то через просто Rotation()к примеру
secnor.setRotation(30); // начальная позиция
sector.draw();while( f<=5)
{
sector.rotation(15);
sector.draw();
}а в следующем кадре уже к примеру f<=6
рисуй прямую и поворачивай ее на нужный угол столько раз пока не заполнишь весь сектор, но качество может быть не очень, ну или строй небольшой сектор и заполняй им, к примеру, у тебя минимальный сектор 30, а увеличивается до 100, ну делай с шагом к примеру 25 отрисовку заполняя весь сектор, так чтобы в нахлест.
Box2D можно использовать если интересует более реальная физика, там эти проверки уже реализованы
пробовал ваш код, открывает норм окно, правда класс кнопки у меня свой, ну и цикл обновления окна добавить надо
попробовал многострочный, надо настраивать по высоте
C++123456789101112131415161718192021H_txt = txtCaption.getLocalBounds().height; // узнаем размеры текстаW_txt = txtCaption.getLocalBounds().width;txtCaption.setOrigin(W_txt/2, H_txt/2 + H_txt*0.22 );// мб особенность шрифта, но это помогало выровнять строку относительно высоты текста и высоты основания, при большом количестве строк возможно надо будет умножить на количествоW_ground = spGround.getLocalBounds().width; // узнаем размеры основанияH_ground = spGround.getLocalBounds().height;spGround.setOrigin(W_ground/2, H_ground/2);if ( (H_txt*0.1 + H_txt) > H_ground ){factorH = ((H_txt + 0.2 * H_txt)/H_ground);}if ((0.1 * W_txt + W_txt) > W_ground){factorW =((W_txt + 0.2 * W_txt)/W_ground);}spGround.setScale(factorW, factorH);использовал для подгонки размера основания, под строку текста, на многострочном не тестировал
если не использовать if((event.type == sf::Event::MouseButtonPressed) && ( Mouse::isButtonPressed(Mouse::Left)))? в только Mouse::isButtonPressed(Mouse::Left), то нажатие будет сквозное, не важно какое окно будет в таргете. ( Для примера можно закрыть область нажатия консолью и кликнуть по консоли).
Что за процессор? Скок ядер? Не используя режима “Sleep” вы загружаете одно ядро до предела возможностей( относительно загруженности от других приложений), что возможно и является причиной подтормаживания.(как решение использовать лимит кадров в секунду) Плюс происходит отслеживание всех событий ( движения, нажатия и тд.) Можно глянуть в справку для SFML :
” bool sf::Window::pollEvent ( Event & event )
Pop the event on top of the event queue, if any, and return it. … ”
А это не так мало времени и переменная time может оказаться не корректной вне цикла пула.
Не знаю почему предложено было использовать time для синхронизации, но так выходит обогреватель.А перестает работать анимация при отсутствии движений мыши , потому что нету никаких событий. window.pollEvent(event) = false !!!!
Все что не использует event надо выносить в основной цикл.С компилятором MinGW (CodeBlock) пришлось в папку с *.exe добавить *.dll из папки с компилятором, чисто тех что были в SFML было недостаточно
Скорость пакмана 1 пиксель в кадр(100 кадров в секунду), размеры плиток 40х40 (наверное стоит перейти на кратное степени двойки для быстроты) размер пакмана пробовал уменьшать до 30 пикселей.
Пока наверное поищу такого типа игры, что бы банально поиграть, посмотреть на движение. А реализовывать буду то что сам придумаю, над иногда мучать себя))
-
АвторСообщения