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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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