Урок 41. C++ Волновой алгоритм [A* pathfinding]

Поделиться
HTML-код
  • Опубликовано: 14 ноя 2024

Комментарии •

  • @MathLector
    @MathLector 13 лет назад +2

    Здорово получилось смонтировать =)

  • @Mathemat1cs-1
    @Mathemat1cs-1 8 месяцев назад

    круто очень

  • @AntonTe
    @AntonTe  14 лет назад

    @FlaPenguin666 SDL, Qt, boost... это дополнительные зависимости. Зачем усложнять програму? Это не библиотека, а учебная программа, в которой объясняется A* алгоритм, а не то как правильно делать задержки. Цели разные (продакшен vs учебные цели), соответсвенно и код разный.
    Про два вызова дисплей, я не понял. Ты про то чтобы вместо display вызывать glutPostRedisplay? Я не помню, что я написал, но вроде бы работать не должно.

  • @AntonTe
    @AntonTe  14 лет назад

    @FlaPenguin666 ты читаешь мои ответы или нет? Я уже три раза согласился с тобой, что с использованием clock правильнее делать задержку. У уже третий раз тебе пишу, что sleep это дополнительная зависимость, и это делает компиляцию программы сложнее, это не только дефайны, это так же инклюды и в плюс это делает программу сложнее в понимании.

  • @kokorelloable
    @kokorelloable 13 лет назад +1

    Скажите Антон, почему Вы не используете:
    например
    #define pb push_back
    Спасибо.

  • @AntonTe
    @AntonTe  14 лет назад

    @FlaPenguin666 я в уроках использую только две зависимости C++ и glut. Это делает возможность испытать программы с минимальными усилиями. Нужен любой C++ компилятор и нужно установить glut. Для пользователей Windows есть видио инструкция по тому как компилировать программы. Ты же из-за того, чтобы добваить задержку в программу, предлагаешь добавить дополнительную зависимость, и даже переписать все программу с использованием другой библиотеки. Не разумно.

  • @spider853
    @spider853 14 лет назад

    Spasibo! krasnii nsteps krasivo smotritsa )

  • @AntonTe
    @AntonTe  14 лет назад

    @FlaPenguin666 unistd не входит в стандарт C++, STL - входит.
    Ремарку про препроцессоры и время компилации не понял к чему?

  • @AntonTe
    @AntonTe  13 лет назад

    @kokorelloable я довольно такие часто пользуюсь #define, но #define нужно пользоваться с осторожностью, т.к. неумелое использование порождает трудноуловимые ошибки. Например, недавно был случай с моим коллегой, он определил структуру struct Status, а программа не хочет компилироваться, он довольно-таки долго бился, и в конечно итоге обраружил глубоко в коде такой кусок #define Status int что привело к struct int и естественно не хотело компилироваться, самое плохое, что компилятор не в силах пом

  • @AntonTe
    @AntonTe  14 лет назад

    @FlaPenguin666 это дополнительная зависимость от платформозависимых библиотек. Как я уже сказал в glut'e нет sleep'а. Так же выше с тобой я уже согласился, задержку можно переписать с использованием clock. А теперь я попридираюсь к мелочам:
    1. Цикл жрет только 1 (один) процессор, а не как ты написал все доступные ему ресурсы.
    2. Это урок, и цель урока передать идею, а не написать правильную программу. Соответственно программа должна быть читаемая, и понятная, в ней должно быть минимальное коли

  • @AntonTe
    @AntonTe  14 лет назад

    @FlaPenguin666 Ссылка? википедия статья про спинлок.

  • @AntonTe
    @AntonTe  14 лет назад

    @FlaPenguin666 я тебе советую попробовать самому сделать урок, чтобы почувстовать тему. Так просто брасаться на шаблоны, это зло, это плохой стиль, потому что в книжке так написано, и там приведены такие и такие агрументы. Да, бази цикл забирает 100% у одного CPU, но есть у него и плюсы, им пользуются даже в продакжене. Нампример, быстрые мьютексы в линуксе реализованы через бази цикл.

  • @AntonTe
    @AntonTe  14 лет назад

    @FlaPenguin666 Я сделал выбр в сторону стандартного C++ и glut. Если хочется перезаписывай все уроки на SDL.
    glut проприетарен - не верно
    glutTimerFunc создает новый поток - докажи
    Нужно смотреть на задачу более широко. А не так как ты уперся: баззи цикл зло. Бази цикл инструмент, о котором нужно знать, так же и goto и указатели и глобальные переменные. Да, согласен, чаще всего это зло, но это инструмент, и я рад тому, что C++ разрешает пользоваться этими инструмент.

  • @AntonTe
    @AntonTe  14 лет назад

    @FlaPenguin666 в glut'е нет такой штуки как sleep, можно было бы сделать поглощающий цикл через clock (имеет смысл). Так же можно было бы сделать с ипользованием glut'овского таймера, но это выворачивать алгоритм наизнанку. Какой в этом смысл? Да и вообще придираешься к мелочам.

  • @AntonTe
    @AntonTe  13 лет назад

    @Redterror1901 код можно скачать, в описании есть ссылка...

    • @geek_user
      @geek_user 7 лет назад +1

      Anton, не получилось скачать

  • @AntonTe
    @AntonTe  14 лет назад

    @FlaPenguin666 Давай так, ты модифицируешь мою программу, так как ты считаешь правильным, и тогда уже можно будет, конструктивно спорить.

  • @olegfat6836
    @olegfat6836 7 лет назад

    нет исходника, можете скинуть?

  • @AntonTe
    @AntonTe  14 лет назад

    @CounterRUS1 спасибо! Ж)

  • @AntonTe
    @AntonTe  14 лет назад

    @spider853 пожалуйста

  • @AntonTe
    @AntonTe  14 лет назад

    @FlaPenguin666 я даже не знаю, как тебе ответить на это. Твое определение бази-цикла не верное. Ты смешиваешь два совершенно не относящихся друг к другу понятия: имитация временной задержки и событие. Они находятся на двух разных уровнях абстракции. Думаю, что надо закрывать этот бессмысленный спор.