Как сделать змейку на Windows Forms C++ (3 - Backend)

Поделиться
HTML-код
  • Опубликовано: 2 сен 2020
  • Всем привет! Меня зовут Владимир, рад вас видеть на канале ‪@FPS.FirePlanetStudio‬!
    Продолжаем создавать Змейку на Windows Forms C++. В этом видео разберем какой код нужно написать, чтобы задуманный функционал заработал. Это лишь основа и простой пример, архитектуру данного проекта можно и нужно улучшить. Пиши в комментарии, получилось ли улучшить архитектуру.
    === Исходники и поддержать канал: ===
    boosty.to/fps.fireplanetstudio
    === Отзывы на наши проекты: ===
    • VK: topic-146160167_49433477
    === Контакты для заказа проекта: ===
    • VK: vladimir_repp
    • VK: fps_vladimir
    • Telegram: @Vladimir_Repp
    • Телефон (смс, WhatsApp, Telegram): 89994402751
    • Почта: fireplanetstudio@mail.ru
    === Контакты для партнерства: ===
    (В том числе если ищите интересные проекты и дружную команду разработки, см. тему сообщения)
    • Тема: Партнерство / В команду Student Dev / В команду Software Dev / В команду Game Dev
    • Телефон (смс, WhatsApp, Telegram): 89994402751
    • Почта: vladimir_repp97@mail.ru
    === Социальные сети, там будут новые и актуальные новости: ===
    • RUclips: / @fps.fireplanetstudio
    • Группа в VK: fps_fireplanetstudio
    • Яндекс Дзен: dzen.ru/id/622f7bfd76344e6a51...
    • Rutube: rutube.ru/channel/24737236/
    • Instagram: @fps.fireplanetstudio
    • Boosty: boosty.to/fps.fireplanetstudio
    Как вам видео и материал в целом? Есть что изменить, добавить, поправить в подаче материала?
    *** Ссылки на остальные видео:
    Часть 1 (Preview) - • Как сделать змейку на ...
    Часть 2 (Fronted) - • Как сделать змейку на ...
    Часть 3 (backend) - • Как сделать змейку на ...
    *** Как создать WinForms C++ проект и что такое CLR, CLI, управляемые классы С++: • Как создать Windows Fo...
    *** Саунд лист:
    Adoxe - Brume
    Beatcore & Ashley Apollodor - Just Stay
    Jim Yosef - Canary
    JJD - Discover
    Romen Jewels - Music Box
    TSu - Xoxo

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

  • @user-mz7gz2fq7g
    @user-mz7gz2fq7g 3 месяца назад

    Ты умничка. Очень спас. Спасибо.

  • @user-mx3er7ve8p
    @user-mx3er7ve8p 3 года назад +3

    Спасибо. Классно объясняешь, продолжай в том же духе

  • @alexwhite8040
    @alexwhite8040 3 года назад +1

    Спасибо. Всё очень подробно и ясно.

  • @artempoleev7847
    @artempoleev7847 3 года назад

    Молодец. Очень хорошо объяснил и сделал.

  • @unrealengineruseng9583
    @unrealengineruseng9583 3 года назад

    Огромное спасибо !!!

  • @user-oc8ck2sg1b
    @user-oc8ck2sg1b 6 месяцев назад

    Большое спасибо!

  • @mircrashjsh
    @mircrashjsh 3 года назад +3

    Спасибо

  • @user-hq6iy6zk8s
    @user-hq6iy6zk8s 2 года назад

    Спасибо!)

  • @shirli-by4dl
    @shirli-by4dl 3 года назад +3

    Спасибо большое, очень понятно и интересно. Хотелось бы увидеть реализацию тетриса или подобных игр) заранее спасибо

    • @FPS.FirePlanetStudio
      @FPS.FirePlanetStudio  3 года назад +1

      Заявка принята 👌
      Скоро будет много игр на с++ Win Forms (крестики нолики, судоку, морской бой, танчики и многое другое)

    • @skykriper
      @skykriper 2 года назад

      бля дело говоришь

  • @Red-sw5lm
    @Red-sw5lm 3 года назад +2

    НЕ УХОДИ! ПРОШУ!

  • @user-cb1yc6ks5j
    @user-cb1yc6ks5j 2 года назад

    Здравствуйте , очень интересно увидеть flappy bird на с++ windows form . Надеюсь увидите

  • @vitalyg1949
    @vitalyg1949 2 года назад +1

    Подскажите пожалуйста как добавить картинку на фрукт, и саму змейку?
    Ведь их мы не создаём в форме, поэтому нельзя просто через свойства поменять изображение.
    У бордюров изменил через свойства на форме

  • @jakhongirmakhmudov38
    @jakhongirmakhmudov38 Год назад

    Здравствуйте, как вы дошли до такого уровня?
    Где или откуда вы научились делать и реализовать подобные проекты?

  • @andrey0698
    @andrey0698 Год назад +1

    Нашёл косяк с управлением - можно убить себя, просто поехав в другую сторону. Вот фикс:
    System::Void Practic::Games::Games_KeyDown(System::Object^ sender, System::Windows::Forms::KeyEventArgs^ e)
    {
    //Считываем нажатую клавишу
    if (e->KeyCode.ToString() == "Right" && direction.Y != 0) {
    direction.X = 1;
    direction.Y = 0;
    }
    else if (e->KeyCode.ToString() == "Left" && direction.Y != 0) {
    direction.X = -1;
    direction.Y = 0;
    }
    else if (e->KeyCode.ToString() == "Up" && direction.X != 0 ) {
    direction.Y = -1;
    direction.X = 0;
    }
    else if (e->KeyCode.ToString() == "Down" && direction.X != 0) {
    direction.Y = 1;
    direction.X = 0;
    }
    return System::Void();
    }

  • @andrey0698
    @andrey0698 Год назад

    По поводу границ рамки - нужно учитывать и то, что координаты считаются для левого края, а не для ближайшего. Исправил следующим образом:
    void Practic::Games::ChackBorders()
    {
    if (Snake[0]->Location.X >= LimitRight->Location.X-10 || Snake[0]->Location.X Location.X) {
    GameOver();
    }
    if (Snake[0]->Location.Y Location.Y+10 || Snake[0]->Location.Y >= LimitDown->Location.Y) {
    GameOver();
    }
    }

    • @andrey0698
      @andrey0698 Год назад

      Добавлю - не работает проверка на генерацию фрукта в змейке - решение:
      //Преобразуем значение, чтобы было кратно шагу
      int tempX = positionFruit.X % step;
      positionFruit.X -= tempX;
      int tempY = positionFruit.Y % step;
      positionFruit.Y -= tempY;
      //Проверка, чтобы фрукт не создался на змейке
      for (int i = 0; i < score; i++) {
      if (positionFruit.X == Snake[i]->Location.X && positionFruit.Y == Snake[i]->Location.Y)
      GeneratePositionFruit();
      }

  • @user-yh4bs3sd2v
    @user-yh4bs3sd2v 3 года назад

    Привет! Писал программу за тобой, всё получилось, кроме одного, у меня змея не успевает съесть фрукт, потому что фрукт всегда появляется в разных местах, можешь подсказать, в чем проблема, мне кажется, что это из-за того, что GeneratePositionFruit();
    Стоит в цикле
    for (int i = 0; i < score; i++) {
    if (positionFruit.X == Serpens[i]->Location.X &&
    positionFruit.Y == Serpens[i]->Location.Y)
    GeneratePositionFruit();
    }
    Но почему тогда у тебя всё работает?

    • @FPS.FirePlanetStudio
      @FPS.FirePlanetStudio  3 года назад

      Привет!
      Этот цикл должен проверять, не съела ли змейка фрукт. Попробуй поставить точку останова везде, где вызывается функция генерации фрукта. По идеи, это должно быть одно место, так как фрукт генерируется только после того, как его съели. И если это так, то в точке останова посмотреть координаты змейки и фрукта.
      Возможно, в чем то другом проблема. Сложно предположить, из за чего так получается.

  • @skykriper
    @skykriper 2 года назад

    а что делать если в файле MyForm.cpp ошибка в include? Оно говорит что "Ошибка в командной строке: не удается открыть метаданные файлы "System.Runtime.dll" " помогите пожалуйста добрый дядя :)

  • @eternalepic9222
    @eternalepic9222 3 года назад +1

    Привет, у меня возникла проблема: когда я настраиваю скорость змеи, то если я увеличиваю скорость, она начинает ооочень быстро передвигаться, а если, после того, как я увеличил попытаться уменьшить, то скорость остается та же, подскажите пожалуйста, как это решить

    • @wanlly
      @wanlly Год назад

      решил эту проблему?

  • @user-vx8xq6md2x
    @user-vx8xq6md2x 3 года назад

    ждем новых видео ! кто знает что меня ждет в 4 курсеXD

    • @FPS.FirePlanetStudio
      @FPS.FirePlanetStudio  3 года назад +1

      Скоро будут новые и полезные видео 💪

  • @Matissed
    @Matissed 3 года назад

    То, что ты делаешь, это какой уровень считается? Можно самому дойди до того?

    • @FPS.FirePlanetStudio
      @FPS.FirePlanetStudio  3 года назад +1

      Это простая реализация (можно сделать куда замудренее и интереснее)
      Конечно можно самому до этого дойти, дело желания, времени и практики
      Удачи Вам🍀

  • @yrysbeka1159
    @yrysbeka1159 4 месяца назад

    В точь в точь переписал выходит ошибка, можете связаться со мной пожалуйста, мне срочно надо написать игру змейку на winforms

  • @octanedaredevil1563
    @octanedaredevil1563 3 года назад

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

    • @FPS.FirePlanetStudio
      @FPS.FirePlanetStudio  3 года назад

      Возможно что то было упущено. В описание есть ссылка на открытый исходный код данного проекта. Возможно, это поможет разобраться с проблемой.

    • @bogdanz5810
      @bogdanz5810 2 года назад

      @@FPS.FirePlanetStudio в гитхвб репозитории пробелмы с кодировкой, столкнулся с такой же пробелемой что и коментатор выше, думал на гитхаб зайду и найду ответ на вопрос, но не помогло

    • @FPS.FirePlanetStudio
      @FPS.FirePlanetStudio  2 года назад

      @@bogdanz5810, а в таймере стоит вызов функции по обновлению состояния игры?

    • @bogdanz5810
      @bogdanz5810 2 года назад

      @@FPS.FirePlanetStudio вы правы, проблема была в таймере, жаль об этом я не узнал раньше, но к сожалению или к счастью я уже сделал готовый код, так что можно зачилиься

    • @FPS.FirePlanetStudio
      @FPS.FirePlanetStudio  2 года назад

      Почему то сразу не подумал об этом, хотя проблема очевидна и на поверхности в плане таймера.