Блог пользователя ruslawik

Автор ruslawik, 12 лет назад, По-русски

Всем привет! вот нашел прикольную штуку на с++. Змейка в консоли))) Если честно улыбнуло. Решил поделиться)

вот Консольная змейка

  • Проголосовать: нравится
  • -6
  • Проголосовать: не нравится

»
12 лет назад, # |
  Проголосовать: нравится +2 Проголосовать: не нравится

Да, крутая штучка) Спасибо автору.

»
12 лет назад, # |
  Проголосовать: нравится +16 Проголосовать: не нравится

Это некруто. Круто — когда такая змейка пишется в перерывах между отборочными турами в сборную России на IOI 2012.

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

yeputons, у тебя осталось где-нибудь?

  • »
    »
    12 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Хм... А как выглядела инновационная метрика... И что, для самой змеи она не применялась?

    • »
      »
      »
      12 лет назад, # ^ |
      Rev. 4   Проголосовать: нравится +4 Проголосовать: не нравится

      Логика поведения убегающей еды была проста: каждое яблоко в отдельности убегало в клетку, расположенную на наибольшем расстоянии от головы змеи. Я подарил Егору инновационную метрику . При таком задании расстояния из-за выпуклости вверх корня еда начинает убегать от змеи по диагонали, заставляя игрока барабанить по "влево-вверх", например, чтобы ее догнать.

      • »
        »
        »
        »
        12 лет назад, # ^ |
        Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

        расположенную на наибольшем расстоянии от еды

        яблоки и еда это было не одно и то же? или подразумевается опечатка "от (головы) змеи"?

        Правильно ли я понял что хотя яблоко убегает "по диагонали", двигаться за каждый шаг ему можно только на одну из соседних по вертикали/горизонтали (четырёх) клеток?

        UPD: В общем понял, ура. Действительно для подобных игрушек забавное ноу-хау, спасибо :)

        • »
          »
          »
          »
          »
          12 лет назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится

          Да, все правильно, конечно имелась в виду голова змеи.

»
12 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

А есть в C++ способы управления кареткой? Вроде модуля CRT на паскале)) Пытался как-то такое написать на паскале, потом забил. Думаю может на плюсах попробовать?

  • »
    »
    12 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    под виндой есть функции из wincon.h например SetConsoleCursorPosition

    • »
      »
      »
      12 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      wincon.h входит в стандарт?

      • »
        »
        »
        »
        12 лет назад, # ^ |
        Rev. 3   Проголосовать: нравится 0 Проголосовать: не нравится

        Из того что входит в стандарт на C++ аркадную игрушку не сделать. Максимум — текстовый квест.

        Единственное что могу предложить — заюзать ANSI-шные escape-последовательности (для манипуляций консолью). Под юниксами это будет работать почти в любых консолях, а в разных версиях виндов можно подгружать ansi.sys-подобные драйвера.

        Хм... Ах да, реакцию на нажатие клавиши всё равно портабельную не сделать вроде...

        UPD: Но вообще я бы отметил что если хочется написать что-нить чем можно легко и непринуждённо для всех похвастаться — тогда JavaScript, PHP — и всё это на веб-страничку. Ну или Java либо C++/Qt если очень тяжёлое...

        • »
          »
          »
          »
          »
          12 лет назад, # ^ |
            Проголосовать: нравится +3 Проголосовать: не нравится

          Если уж под линь, то ncurses — наше всё. Тоже, правда, в стандарт не входит, зато кроссплатформенно.

          • »
            »
            »
            »
            »
            »
            12 лет назад, # ^ |
            Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

            Под виндой-то вроде ncurses нет? А escape-последовательности до кучи даже не требуют либок подключать...

            UPD: А нет, какие-то потуги портировать curses под винду видимо были: http://pdcurses.sourceforge.net/