ЗМЕЙКА НА C++ - ПРАКТИКА #1

Поділитися
Вставка
  • Опубліковано 24 гру 2024

КОМЕНТАРІ • 154

  • @severusov
    @severusov Рік тому +105

    Если меня не возьмут на работу после змейки, то видос не эффективен

    • @kliment5116
      @kliment5116 Рік тому +19

      все работает. Устроился на пост мидла у нас в Москве. Теперь планирую взять яхту.

    • @Дмитрий-з1з3у
      @Дмитрий-з1з3у Рік тому

      Жестко возьмёшь яхту или нежно?@@kliment5116

    • @PROgibator1
      @PROgibator1 Рік тому

      Тоже устроился сеньёром в корпорацию зла. Получаю золотом. Планирую купить землю@@kliment5116

    • @СтарыйВаленок-к4л
      @СтарыйВаленок-к4л 9 місяців тому +1

      А какую практически полезную программу ты можешь написать сам?

    • @Alekc2020
      @Alekc2020 3 місяці тому

      ​@@СтарыйВаленок-к4лЗмейка

  • @НиколайПодколзин-с8р

    Обычно вообще не пишу комменты, но тут случайно наткнулся на ролик, и на самом деле не поверил, что у канала всего 110 подписчиков, прекрасный голос и хорошее качество звука, как раз то чего не хватает начинающим каналам. Классная подача материала, старайся дальше будем ждать 110, но еще с тремя нулями)))

    • @someStudentChannel
      @someStudentChannel  Рік тому +6

      Спасибо :)
      Да, пока 110 с нулём нулей

    • @PROgibator1
      @PROgibator1 Рік тому +1

      Уже 1 510. Посоветовал знакомым, а те своим,.Будет больше@@someStudentChannel

  • @bacruru
    @bacruru Рік тому +5

    Ваше существование вселяет в меня надежду

  • @progerlife6690
    @progerlife6690 10 місяців тому +3

    Офигеть лайк и подписка! Жду уроки по С++)

  • @КимЧенОрк
    @КимЧенОрк Рік тому +7

    Стиль превьюшек забавный. После них очень удивил женский голос. Рад найти ещё одного C++ Enjoyer-а

  • @yokzzzz
    @yokzzzz Рік тому +6

    супер приятно слушать, объяснения быстрые и понятные, спасибо за урок!

  • @garffild
    @garffild Рік тому +8

    Рекомендую, для удобства чтения и уменьшения отступов, пользоваться early return. То есть "сначала проверять невыполненные условия и прерывать или пропускать", вместо "исполненять, только есть условия выполняются".
    Отличная подача! Успехов вам! :)

    • @someStudentChannel
      @someStudentChannel  Рік тому +8

      Да-да, тоже сначала хотелось так делать, но мы ещё не проходили эти словечки циклов, поэтому потом как улучшение кода будет. А может кто-то прочитает ваш комментарий и сам добавит.
      Спасибо большое! ❤️

  • @astutusmvp5769
    @astutusmvp5769 Рік тому +6

    Респект даме. Написала свой код(с хорошими пояснениями) , хоть и с косячками, но свой(открыто показала как взяла пару чужих функций - респект). Про недочёты чел уже в коментах по фактам написал, так что я не буду. Желаю удачи и развития, ты классная(по крайней мере такого мое первое впечатление)

  • @nk-93
    @nk-93 Рік тому +2

    Не знаю зачем мне это, но я посмотрел и мне понравилось! )
    Комменты тоже все в тему
    Похоже адекватный народ подписывается

  • @MartinIden-hn7ld
    @MartinIden-hn7ld 8 місяців тому

    4:47
    Лучше через else if или switch
    Если через if- это разные условия и проверка будет заходить в каждое, а не в одно

  • @angsttt904
    @angsttt904 4 місяці тому +1

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

  • @vadim4ikiii486
    @vadim4ikiii486 Рік тому +2

    1:24 почему именно такая формула нельзя просто найти площадь и отнять 1 чтобы когда змейка достигла свего размера игра закончилась
    -1 потому что не будет места чтобы заспавнилось яблоко

  • @lastgames6797
    @lastgames6797 11 місяців тому +2

    Привет, нужна помощь, повторял код как в видео, но когда запускаю консоль змейка сразу появляется в верхней границе карты , соответственно игра заканчивается.Как это можно исправить?

    • @someStudentChannel
      @someStudentChannel  11 місяців тому +1

      Надо кода бы

    • @lastgames6797
      @lastgames6797 11 місяців тому

      @@someStudentChannel
      #include
      #include
      void gotoxy(int x, int y) {
      COORD pos = { x, y };
      HANDLE output = GetStdHandle(STD_OUTPUT_HANDLE);
      SetConsoleCursorPosition(output, pos);
      }
      const int WIDTH = 17;
      const int HEIGHT = 10;
      const int MAX_SNAKE_LEN = (WIDTH - 2) * (HEIGHT - 2);
      const int UP = 0;
      const int DOWN = 1;
      const int LEFT = 2;
      const int RIGHT = 3;
      int snake_dir = UP;
      bool isRunning = true;
      char map[] =
      "#################
      "
      "# #
      "
      "# #
      "
      "# #
      "
      "# #
      "
      "# #
      "
      "# #
      "
      "# #
      "
      "# #
      "
      "#################
      ";
      char snake = 'o';
      int snake_x[MAX_SNAKE_LEN] = { 0 };
      int snake_y[MAX_SNAKE_LEN] = { 0 };
      int snake_len = 1;
      int food_x = 1+(rand()%(WIDTH-3));
      int food_y = 1 + (rand() % (HEIGHT - 2));
      char food = '*';
      int main() {
      snake_x[0] = WIDTH / 2;
      snake_y[0] = HEIGHT / 2;
      double time = clock();
      while (isRunning) {
      if (GetKeyState('A') & 0x8000)
      {
      if (snake_dir != RIGHT) {
      snake_dir = LEFT;
      }
      }
      if (GetKeyState('D') & 0x8000)
      {
      if (snake_dir != LEFT) {
      snake_dir = RIGHT;
      }
      }
      if (GetKeyState('W') & 0x8000)
      {
      if (snake_dir != DOWN) {
      snake_dir = UP;
      }
      }
      if (GetKeyState('S') & 0x8000)
      {
      if (snake_dir != UP) {
      snake_dir = DOWN;
      }
      }
      if ((clock() - time / CLOCKS_PER_SEC >= 0.3)) {
      time = clock();
      if (snake_x[0] == food_x && snake_y[0] == food_y) {
      ++snake_len;
      food_x = 1 + (rand() % (WIDTH - 3));
      food_y = 1 + (rand() % (HEIGHT - 2));
      }
      for (int i = snake_len - 2; i >= 0; ++i) {
      snake_x[i + 1] = snake_x[i];
      snake_y[i + 1] = snake_y[i];
      }
      if (snake_dir == UP) {
      --snake_y[0];
      }
      if (snake_dir == DOWN) {
      ++snake_y[0];
      }
      if (snake_dir == RIGHT) {
      ++snake_x[0];
      }
      if (snake_dir == LEFT) {
      --snake_x[0];
      }
      if (snake_x[0] == 0 || snake_y[0] == 0 || snake_x[0] == WIDTH - 2 || snake_y[0] == HEIGHT - 1) {
      isRunning = false;
      }
      for (int i = 1; i < snake_len; ++i) {
      if (snake_x[0] == snake_x[i] && snake_y[0] == snake_y[i]) {
      isRunning = false;
      i = snake_len;
      }
      }
      gotoxy(0, 0);
      std::cout

    • @lastgames6797
      @lastgames6797 11 місяців тому

      @@someStudentChannel
      #include
      #include
      void gotoxy(int x, int y) {
      COORD pos = { x, y };
      HANDLE output = GetStdHandle(STD_OUTPUT_HANDLE);
      SetConsoleCursorPosition(output, pos);
      }
      const int WIDTH = 17;
      const int HEIGHT = 10;
      const int MAX_SNAKE_LEN = (WIDTH - 2) * (HEIGHT - 2);
      const int UP = 0;
      const int DOWN = 1;
      const int LEFT = 2;
      const int RIGHT = 3;
      int snake_dir = UP;
      bool isRunning = true;
      char map[] =
      "#################
      "
      "# #
      "
      "# #
      "
      "# #
      "
      "# #
      "
      "# #
      "
      "# #
      "
      "# #
      "
      "# #
      "
      "#################
      ";
      char snake = 'o';
      int snake_x[MAX_SNAKE_LEN] = { 0 };
      int snake_y[MAX_SNAKE_LEN] = { 0 };
      int snake_len = 1;
      int food_x = 1+(rand()%(WIDTH-3));
      int food_y = 1 + (rand() % (HEIGHT - 2));
      char food = '*';
      int main() {
      snake_x[0] = WIDTH / 2;
      snake_y[0] = HEIGHT / 2;
      double time = clock();
      while (isRunning) {
      if (GetKeyState('A') & 0x8000)
      {
      if (snake_dir != RIGHT) {
      snake_dir = LEFT;
      }
      }
      if (GetKeyState('D') & 0x8000)
      {
      if (snake_dir != LEFT) {
      snake_dir = RIGHT;
      }
      }
      if (GetKeyState('W') & 0x8000)
      {
      if (snake_dir != DOWN) {
      snake_dir = UP;
      }
      }
      if (GetKeyState('S') & 0x8000)
      {
      if (snake_dir != UP) {
      snake_dir = DOWN;
      }
      }
      if ((clock() - time / CLOCKS_PER_SEC >= 0.3)) {
      time = clock();
      if (snake_x[0] == food_x && snake_y[0] == food_y) {
      ++snake_len;
      food_x = 1 + (rand() % (WIDTH - 3));
      food_y = 1 + (rand() % (HEIGHT - 2));
      }
      for (int i = snake_len - 2; i >= 0; ++i) {
      snake_x[i + 1] = snake_x[i];
      snake_y[i + 1] = snake_y[i];
      }
      if (snake_dir == UP) {
      --snake_y[0];
      }
      if (snake_dir == DOWN) {
      ++snake_y[0];
      }
      if (snake_dir == RIGHT) {
      ++snake_x[0];
      }
      if (snake_dir == LEFT) {
      --snake_x[0];
      }
      if (snake_x[0] == 0 || snake_y[0] == 0 || snake_x[0] == WIDTH - 2 || snake_y[0] == HEIGHT - 1) {
      isRunning = false;
      }
      for (int i = 1; i < snake_len; ++i) {
      if (snake_x[0] == snake_x[i] && snake_y[0] == snake_y[i]) {
      isRunning = false;
      i = snake_len;
      }
      }
      gotoxy(0, 0);
      std::cout

  • @nullpeer
    @nullpeer Рік тому +1

    Добрый вечер. 4:40 почему просто switch нельзя использовать? получается как в питоне тогда, if заместо switch

    • @Andrew_ku
      @Andrew_ku 9 місяців тому +1

      Я попытлся через свитч сделать, но у меня змейка вообще двигаться перестала :/
      Мб это у меня руки не из того места, но через if всё заработало

  • @ErkeTan879
    @ErkeTan879 6 місяців тому +1

    Что делать если змейка спокойно движется по координате х (тоесть прямо вправо или прямо влево),но придвижении координате у он косится? (Допустим змейка идет вверх но она идет в левый верхний угол)

    • @hsywer
      @hsywer 6 місяців тому +1

      Таже проблема

    • @Azemrov
      @Azemrov 5 місяців тому

      короче добавь +1 к твоему полю в ширину ,ты недосчитал

  • @rustpolecat2770
    @rustpolecat2770 Рік тому +1

    первый урок и сразу практика, круто

  • @eueiiew
    @eueiiew 6 місяців тому

    Бонус может появиться и в змейке. Насчет использования двух массивов для змейки, не знаю, такое. Каждая итерация это перебор ее кординат для смещения, да и "железный" алгоритм для генерации бонуса с учетом занятых координат будет весьма трудоемким. Типичная инженерная задача, либо память, либо же скорость) Сам использовал связанный список, для того, чтобы каждую итерацию хвост перемещать в голове. Пробывал и с матрицей, но там свои приколы. Вообщем, спасибо за видео, учу ++

  • @pelmeshik2909
    @pelmeshik2909 5 місяців тому

    Здравствуй! чтобы исправить проблему с пленкой можно использовать system("cls"); после вывода краты.

  • @scottywood3171
    @scottywood3171 9 місяців тому +2

    Ух красиво😊

  • @dangro9424
    @dangro9424 24 дні тому

    надеюсь ответите, у меня такая проблема, я когда запускаю стенка смещена а сама змейка не посередине а в самих решетках(которые являются полем) два раза переписывал код с нуля не изменилось помогите пожалуйста

  • @vas_._sfer6157
    @vas_._sfer6157 Рік тому +23

    Понятно, что видео для новичков, но возможно стоило бы улучшить качество кода, без потери понятности естественно.
    Что я имею в виду:
    1) Стараться не злоупотреблять глобальными переменными.
    Лучше оставить глобальные константы. Хотя иногда они вполне могут быть полезны и наглядны. Но вот snake_len, food_x, food_y. Для простоты глобальными стоит оставить только состояние поля, или некоторые данные змейки, и то если вам просто не хочется использовать ссылки или указатели на данном этапе.
    2) Разделить функционал стоит хотя бы на пару функций.
    Это поможет понятно показать какой код ответственен за определённые действия.
    По сути игровой цикл состоит из этих задач:
    - Получение действия игрока.
    - Проверка отсутствия препятствий или конец игры.
    - Проверка на еду и поглощение еды (+ генерация нового кусочка)
    - Передвижение.
    - Отрисовка
    - Ожидание
    Если использовать разделение на функции для хотя бы некоторых этих пунктов, то можно сделать код понятнее и проще.
    Как минимум можно упростить код ожидания следующего кадра, если вынесете его в отдельную функцию.
    Ну и функция отрисовки прям напрашивается, с учётом необходимости переставлять курсор.
    3) Использовать более простые решения.
    - Статический многомерного массив не требует формул для расчёта координат.
    - Нет никакого толка размещать в массив границы поля, так как их можно добавлять во время отрисовки.
    Можно ведь просто оставить игровое поле игровым полем.
    - Хорошо бы избежать кучи лишних операций с массивом, да ещё и сократить код работы с туловищем змейки. Можно использовать очень примитивную реализацию очереди, так как мы знаем максимальную длину змейки.
    Есть ещё небольшая ошибка в вашем коде:
    Еда может появиться на теле змейки.
    В остальном у вас хороший голос и неплохая подача. Я думаю вас ждёт успех!
    P.S. На гитхаб старайтесь выкладывать ваш код. А ссылку на проект в описание. Так каждый сможет полностью осмотреть код из урока.

    • @someStudentChannel
      @someStudentChannel  Рік тому +5

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

    • @Alex_Rukhubovsky
      @Alex_Rukhubovsky Рік тому +5

      Сеньор учит джуна)) сразу чувствуется опыт и прохождение через такие же ошибки)
      Да, критика по существу тут.
      П.С. я не программист, только учусь для себя, если что.

    • @hegatib4ik843
      @hegatib4ik843 Рік тому

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

    • @vas_._sfer6157
      @vas_._sfer6157 Рік тому

      @@hegatib4ik843 Давайте ссылку на Gist или репозиторий с кодом. Посмотрю, что там может быть не так

  • @garunchek
    @garunchek Рік тому +2

    Здравствуйте, у меня такая проблема, змейка двигается только вверх и вниз, не знаете как это исправить?

  • @Равич-б2у
    @Равич-б2у Рік тому +1

    Всем привет. Подскажите как можно изменить символ головы змеи, чтобы он выделялся

    • @kosiak10851
      @kosiak10851 Рік тому +3

      массив for(...) map[...] = snake; Начинать не с 0, а с i=1;
      а после цикла написать map[snake_y[0]...] = snake_head; где snake_head новая char переменная

  • @Игорь-х6ф6и
    @Игорь-х6ф6и Рік тому +2

    простите а где исходный код?

  • @viruskiller18106
    @viruskiller18106 Рік тому +3

    переписал код, но змейка сразу проигрывается

  • @AndreyBorisov-vk8em
    @AndreyBorisov-vk8em Рік тому +10

    напиши клиент сервер чат пожалуйста.

  • @positivenozy6065
    @positivenozy6065 Рік тому +3

    Молодчинка! Есть в планах создавать материал по алгоритмам и структурам данных?)

  • @Игорь-г7т8щ
    @Игорь-г7т8щ Рік тому +1

    GPT почти один в один такую же змейку пишет на запрос: напиши простую реализацию игры змейка на c++

  • @lpwlx
    @lpwlx Рік тому +4

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

  • @mr.ressety5118
    @mr.ressety5118 Рік тому +2

    классный ролик только не предусмотрено пару мелочей ,но я так понимаю ты их поправишь в следующих роликах .А так добра и позитива

  • @dmitry7341
    @dmitry7341 Рік тому +1

    Привет! А когда будет продолжение?

  • @KenanShuk
    @KenanShuk Рік тому +2

    У меня он улетает просто
    змейка не успиваю ничего сделать как это исправить

  • @KenanShuk
    @KenanShuk Рік тому +2

    У меня проблема код тот же самый но змейка очень быстро передвигается

  • @defolt7
    @defolt7 Рік тому +2

    Можно ссылочку на файл пж

  • @MrAsun-zd4yo
    @MrAsun-zd4yo Рік тому +2

    Очень хорошая подача, да и слушать тоже очень интересно, ждем что-нибудь еще интересненькое (желательно, чуть более ооп`шное, хах), удачи вам, очень интересно!

  • @Azemrov
    @Azemrov 5 місяців тому

    Здравствуй ! Почему в момент когда змейка подбирает еду то игра завершается с результатом 2

  • @petrpashutin9197
    @petrpashutin9197 5 місяців тому

    А как базу генератора случайных чисел сделать случайной?

  • @Vlad_Jonson
    @Vlad_Jonson Рік тому +1

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

    • @someStudentChannel
      @someStudentChannel  Рік тому +2

      Например?
      Если кратко, то потому что библиотеки могут быть написаны под другую систему. А вообще это идёт от всяких правил правой руки и всего такого, к чему уже все привыкли и написали книжек

  • @ДмитрийКунов-к9ч
    @ДмитрийКунов-к9ч 2 місяці тому

    хочу с тобой связаться, ответь, пожалуйста

  • @blindboy007
    @blindboy007 Рік тому +3

    Идея топ, а аот реализация так себе. Почему бы не написать змейку с использованием графических библиотек? Консоль это конечно хорошо, но когда будете выбиратся с песочницы? А ещё у Вас яблоко спавнится в змейке. Удачи в продолжении канала, продолжайте делать то что делаете и всёу вас получится😊

  • @Alviona_WoW
    @Alviona_WoW 7 місяців тому

    Уважаемый автор, а почему у меня при запуске программы, она просто мгновенно завершается? То есть я не могу управлять змейкой... Она просто появляется в верхней границы карты и всё.

    • @someStudentChannel
      @someStudentChannel  7 місяців тому

      Дайте на код взглянуть

    • @Alviona_WoW
      @Alviona_WoW 7 місяців тому

      @@someStudentChannel делал прям как у вас в видео. То есть за вами повторял

    • @someStudentChannel
      @someStudentChannel  7 місяців тому

      @@Alviona_WoW все так говорят)
      прям сюда копипастом можно

    • @Alviona_WoW
      @Alviona_WoW 7 місяців тому

      @@someStudentChannel отправил уже копипастом) сюда, в переписку эту, с вами)

  • @byOwneD
    @byOwneD Рік тому +2

    Здравствуй
    А можеш снять ролик на тему C# wpf Dissolve а то на ютубе вообще нету нечего связано с данним параметром.

    • @someStudentChannel
      @someStudentChannel  Рік тому

      Привет, знать бы ещё что это. C# может будет, когда юнити начнём затрагивать, а насчёт wpf и вообще простых оконных програм пока не знаю, так что извиняй

    • @lpwlx
      @lpwlx Рік тому

      по поводу WPF вот есть плейлист:ua-cam.com/play/PL0lO_mIqDDFVI0xwaYbm7h9ewYu5hftfA.html&si=3wryZVgbQJKWk6QG

    • @byOwneD
      @byOwneD Рік тому

      @@lpwlx Спасибо. Данний материал я весь изучил. А вот по данной функции инфи не могу найти.

  • @barladeanserghei6062
    @barladeanserghei6062 6 місяців тому

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

  • @ultrahab4293
    @ultrahab4293 7 місяців тому

    Я подписался, а если игру еще и на сессии оценят то и на бусти зайду

  • @Mathemat1cs-1
    @Mathemat1cs-1 Рік тому +1

    вообще круто, еще б с Qt намутить и можно хвастаться преподу/ друзьям на сколько ты крута

  • @ItachiUchiha-wd5kk
    @ItachiUchiha-wd5kk 11 місяців тому +1

    Помоги, пожалуйста
    У меня функция рандом даже при использовании srand(time(0)) всё равно генерирует всё в одном месте - в рамке, в верхнем правом углу
    Если же то же рандомное создание для фруктов в начале, вне int main(), то тогда число генерирует лишь один не изменяющийся результат( и скорее всего не меняется)
    И да, я пытался использовать сторонние функции рандома( не помогло)
    Мой код:
    #include
    #include
    #include
    #include
    void gotoxy(int x, int y)
    {
    COORD pos = { x, y };
    HANDLE output = GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleCursorPosition(output, pos);
    }
    const int Width = 18;
    const int Height = 10;
    const int Max_Len_Snake = (Width - 3) * (Height - 2);
    const int Up = 0;
    const int Down = 1;
    const int Left = 2;
    const int Right = 3;
    bool isRunning = true;
    int snake_dir = Up;
    char map[] =
    "#################
    "
    "# #
    "
    "# #
    "
    "# #
    "
    "# #
    "
    "# #
    "
    "# #
    "
    "# #
    "
    "# #
    "
    "#################
    ";
    char snake = 'O';
    int snake_x[Max_Len_Snake] = {0};
    int snake_y[Max_Len_Snake] = {0};
    int snake_len = 1;
    int food_x;
    int food_y;
    char food = '*';
    void Print(const char* message)
    {
    std::cout = 0; --i)
    {
    snake_x[i + 1] = snake_x[i];
    snake_y[i + 1] = snake_y[i];
    }

    if (snake_dir == Up)
    --snake_y[0];
    if (snake_dir == Down)
    ++snake_y[0];
    if (snake_dir == Right)
    ++snake_x[0];
    if (snake_dir == Left)
    --snake_x[0];
    if ((snake_x[0] == 0) || (snake_y == 0) || (snake_x[0] == Width - 2) || (snake_y[0] == Height - 1))
    isRunning = false;
    for (int i = 1; i < snake_len; i++)
    {
    if(snake_x[0]== snake_x[i]&& snake_y[0]==snake_y[i])
    {
    isRunning = false;
    i = snake_len;
    }
    }
    gotoxy(0, 0);
    std::cout

    • @someStudentChannel
      @someStudentChannel  11 місяців тому

      У тебя food_x и food_y не заданы начальные значения. Приравняй к 5 их там хотя-бы. У меня заработало

    • @ItachiUchiha-wd5kk
      @ItachiUchiha-wd5kk 11 місяців тому

      @@someStudentChannel Я изначально как в видео ставил значения рандомные, потом ставил какие-то другие, экспериментировал
      Но там просто одно это яблоко остается и никуда не перемещается

    • @someStudentChannel
      @someStudentChannel  11 місяців тому

      @@ItachiUchiha-wd5kk все равно не работает?

    • @ItachiUchiha-wd5kk
      @ItachiUchiha-wd5kk 11 місяців тому

      @@someStudentChannel Неа
      Проверял

    • @someStudentChannel
      @someStudentChannel  11 місяців тому

      @@ItachiUchiha-wd5kk а первый фрукт то спавнится? Или там прям все объекты в одной точке

  • @donat7951
    @donat7951 Рік тому +1

    О это то что я искал

  • @_veterok_856
    @_veterok_856 5 місяців тому

    я сделал все также проблем нет, все классно, но почему то змейка двигается только по оси Y почему? (и еще не на те кнопки, на которые надо)
    ПОМОГИ пожалуйста, буду благодарен❤

  • @DI4P443R-rw1kh
    @DI4P443R-rw1kh Рік тому +1

    Можно ещё по поводу char map задать вопрос где стеночки?
    У меня правильно получилось или как?
    char map[]=

    "#################
    "
    "# #
    "
    "# #
    "
    "# #
    "
    "# #
    "
    "# #
    "
    "# #
    "
    "# #
    "
    "# #
    "
    "#################
    ";
    Нет ли ошибки? Высота 10 включая верхнюю и нижние планки?

  • @muchas_gracias
    @muchas_gracias 8 місяців тому

    жду не дождусь когда будуть гайды по OpenGL

  • @1mpalo362
    @1mpalo362 9 місяців тому +1

    можно же было с UP LEFT RIGHT DOWN использовать enum, а не просто переменные

    • @someStudentChannel
      @someStudentChannel  9 місяців тому +1

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

    • @1mpalo362
      @1mpalo362 9 місяців тому +1

      @@someStudentChannel да, он буквально то же самое, просто удобнее, на мой взгляд. Если функционал языка позволят, значит нужно его использовать

  • @Alviona_WoW
    @Alviona_WoW 7 місяців тому

    Уважаемый автор, так и что по итогу не так в коде у меня? :-) Я его скинул) Не смотрели ещё?

    • @someStudentChannel
      @someStudentChannel  7 місяців тому

      Да, я завтра посмотрю, будни загруженные сейчас :(

    • @Alviona_WoW
      @Alviona_WoW 7 місяців тому

      @@someStudentChannel Спасибо, жду)

    • @Alviona_WoW
      @Alviona_WoW 6 місяців тому +1

      @@someStudentChannel Уважаемый автор, здравствуйте. Вы так и не поглядели мой код(

    • @Azemrov
      @Azemrov 5 місяців тому

      @@Alviona_WoW посмотрели ?

    • @Alviona_WoW
      @Alviona_WoW 5 місяців тому

      @@Azemrov нет(

  • @ИТОтдел-щ4ы
    @ИТОтдел-щ4ы Рік тому +1

    Вот бы змейка была написана в ООП стили

  • @DI4P443R-rw1kh
    @DI4P443R-rw1kh Рік тому

    А где исходные коды?

  • @madideax
    @madideax Рік тому

    Я с вами!

  • @СергейСунцов-я2э

    хайп круто

  • @define_success_true
    @define_success_true 9 місяців тому +1

    Глобальные переменный и нет использования ООП

  • @thestinger8677
    @thestinger8677 Рік тому +9

    А можно и каналам-миллионникам запариваться над видео хотя бы в половину как ты? от некоторых не то что картиночек на монтаже вставить, а даже объяснения написанного не дождёшься, красава

    • @someStudentChannel
      @someStudentChannel  Рік тому +6

      Ухх, спасибо.
      Кстати, знаю что зарубежные миллионники (Code Bullet например) очень запариваются над монтажом

    • @thestinger8677
      @thestinger8677 Рік тому

      ​ @someStudentChannel да, шикарных каналов тоже много, но видя как запариваешься ты, становится грустно что кто-то может пукать невнятными видео с почти нулевыми затратами по времени и силам, а получать в сотни раз больше внимания :(
      Благо таких меньшинство

  • @norskiy9765
    @norskiy9765 Рік тому

    Ура победа!!!

  • @Golosarii
    @Golosarii 9 місяців тому +1

    желательно было бы если написать еще комментарий , а то так интиутивно не поймешь

  • @MarkFilipov-m2w
    @MarkFilipov-m2w Рік тому

    ti paren ili dewochka???????

  • @fitileo
    @fitileo Рік тому +1

    всё круто ,просто супер,но ни чё не понятно

  • @aliexpress5284
    @aliexpress5284 Рік тому +2

    :) точна студень: в ручную массив заполнил и посчитал колличество строк столбцов😂

    • @someStudentChannel
      @someStudentChannel  Рік тому +1

      Да ладно. Зато понятно как, что, откуда берётся

  • @alexf3289
    @alexf3289 Рік тому +2

    Вот эти постоянные "как нетрудно понять" - это не объяснение. Массив чаров для игрового поля - это ещё понятно, всё что после - нет. Логику выбора и определения переменных и констант нужно подробно описывать, если вы делаете уроки для начинающих. Иначе это профанация.

    • @someStudentChannel
      @someStudentChannel  Рік тому +3

      Уроки для начинающих да, а практика рассчитана на то что с уроками человек уже хорошо освоился. Аудитория просто разная и выпускать только для новичков не совсем правильно, как мне кажется

  • @kosiak10851
    @kosiak10851 Рік тому +1

    Странно, что автор ведёт канал для школьников, даже не старшеклассников, но уже кидает ссылку на бусти.

  • @devlightff482
    @devlightff482 Рік тому +1

    Тут только смотрять м. пола?

  • @unqp52
    @unqp52 Рік тому +1

    А че без всяких ООП, раскидывания по файлам ?
    Так же не красиво, не чётен ко и не вкусно 😢

  • @russleg9510
    @russleg9510 Рік тому

    +

  • @pampers3215
    @pampers3215 Рік тому +1

    shluha

  • @НикитаАгеев-п2ж
    @НикитаАгеев-п2ж Рік тому +1

    Иди на кухню

    • @pipkurek2005
      @pipkurek2005 2 місяці тому +1

      В отличие от тебя она даже умеет кодить на микроволновке

  • @gasirovka
    @gasirovka Рік тому +1

    Недавно тоже змейку писал на raylib

  • @AComplexWave
    @AComplexWave 8 місяців тому

    const int MAX_SNAKE = (WEITH - 3) * (HEiGHT - 2); - НЕ ПОНЯЛ , ПОЧЕМУ -3 И -2, ОТКУДА ЭТИ ПАРАМЕТРЫ Максимальная длина змейки, 2 символа '#'' '#' по бокам вычесть и два (1 вверх и 1 - низ) символ
    считаем ? Обьясните чтоб понятно было новичку!

    • @someStudentChannel
      @someStudentChannel  8 місяців тому

      Да,
      в счёт)

    • @AComplexWave
      @AComplexWave 8 місяців тому

      @@someStudentChannel спасибо, очень приятно, когда автор видео даёт feedback
      std::cout

  • @Марія-МаринаГИЩУК

    main.cpp:46:17: error: ‘MAX_LEN_SNAKE’ was not declared in this scope
    46 | int snake_x[MAX_LEN_SNAKE] = { 0 };
    | ^~~~~~~~~~~~~

    • @Марія-МаринаГИЩУК
      @Марія-МаринаГИЩУК Рік тому +1

      як вирішити?

    • @АртёмШакиров-к2о
      @АртёмШакиров-к2о Рік тому +1

      Ты не объявил MAX_LEN_SNAKE или ошибся в его написании при объявлении, ошибка в невозможности найти константу в области видимости

  • @disasterChildPo
    @disasterChildPo Рік тому +3

    круто. Спасибо за видос!
    Помогите пожалуйста, кто-нибудь: у меня проблема. При вертикальном перемещении змейка двигается по диагонали
    Вот код:
    #include
    #include
    void gotoxy(int x, int y) {
    COORD pos = { x,y };
    HANDLE output = GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleCursorPosition(output, pos);
    }
    const int WIDTH = 21;
    const int HEIGHT = 11;
    const int MAX_LEN_SNAKE = (WIDTH - 3) * (HEIGHT - 2);
    const int UP=0;
    const int DOWN=1;
    const int LEFT = 2;
    const int RIGHT = 3;
    int snake_dir = 0;
    bool isRunning = true;
    char map[] =
    "#####################
    "
    "# #
    "
    "# #
    "
    "# #
    "
    "# #
    "
    "# #
    "
    "# #
    "
    "# #
    "
    "# #
    "
    "# #
    "
    "#####################
    ";
    char snake = '0';
    int snake_x [MAX_LEN_SNAKE] = { 0 };
    int snake_y [MAX_LEN_SNAKE] = { 0 };
    int snake_len = 1;
    int main()
    {
    snake_x[0] = WIDTH / 2;
    snake_y[0] = HEIGHT / 2;
    int time = clock();
    while (isRunning) {
    if (GetKeyState('W') & 0x8000) {
    if (snake_dir != DOWN) {
    snake_dir = UP;
    }
    }
    else if (GetKeyState('S') & 0x8000) {
    if (snake_dir != UP) {
    snake_dir = DOWN;
    }
    }
    else if (GetKeyState('D') & 0x8000) {
    if (snake_dir != LEFT) {
    snake_dir = RIGHT;
    }
    }
    else if (GetKeyState('A') & 0x8000) {
    if (snake_dir != RIGHT) {
    snake_dir = LEFT;
    }
    }
    if ((clock() - time) / CLOCKS_PER_SEC >= 0.3) {
    time = clock();
    for (int i = snake_len - 2; i >= 0; --i) {
    snake_x[i + 1] = snake_x[i];
    snake_y[i + 1] = snake_y[i];
    }
    if (snake_dir == UP) {
    --snake_y[0];
    }
    else if (snake_dir == DOWN) {
    ++snake_y[0];
    }
    else if (snake_dir == RIGHT) {
    ++snake_x[0];
    }
    else if (snake_dir == LEFT) {
    --snake_x[0];
    }
    else if (snake_x[0] == 0 || snake_y[0] == 0 || snake_x[0] == WIDTH - 2 || snake_y[0] == HEIGHT - 1) {
    isRunning = false;
    }
    gotoxy(0, 0);
    for (int i = 0; i < snake_len; i++) {
    map[snake_y[i] * WIDTH + snake_x[i]] = snake;
    }
    std::cout

    • @someStudentChannel
      @someStudentChannel  Рік тому +3

      С шириной общитался.
      Напиши const int WIDTH = 22

    • @disasterChildPo
      @disasterChildPo Рік тому +1

      @@someStudentChannel Спасибо ОГРОМНОЕ. Я 4 раза считал. Так и не смог нормально посчитать😂

    • @ItachiUchiha-wd5kk
      @ItachiUchiha-wd5kk 11 місяців тому

      @@someStudentChannel Я столкнулся с этой же ошибкой и регулировка Width помогла, так как я не принимал во внимание

      Большое спасибо за видео и за вашу помощь