Добавить в корзинуПозвонить
Найти в Дзене

Решаем задачи по JS и веб-разработке от DeepSeek | Тактический Симулятор Урона, игра | Часть 2

Всем привет. Сегодня мы снова будем генерировать задачи при помощи ИИ и их решать. Это уже девятая статья про решение задач от ИИ, и в этом есть что-то интересное. Интересна сама генерация задачи искусственным интеллектом, как он это делает, как он с этим справляется и чем он отличается в этом от других ИИ. Очень сильно мне понравился формат, где нужно исправлять баги в коде. Якобы у нас есть рабочий проект с готовым кодом, а нам нужно найти и исправить в нём ошибки. Искать и исправлять баги в коде мне очень нравится, мне кажется, я скоро достигну совершенства в этом 😄. (шутка) Но нужно быть готовым ко всему, так как ИИ может достаточно сильно чудить. Ну что ж, давайте начнём. Сегодня мне хочется поработать с проектом, где надо что-то считать. Это должно быть веб-приложение, где много всяких панелей и кнопок, которое выполняет всякие вычисления. Давайте попробуем сгенерировать что-то такое Он выдал нам список. Ого, космический навигатор!! Ядерный реактор 😃? Финансовый детектор мошен
Оглавление

Всем привет. Сегодня мы снова будем генерировать задачи при помощи ИИ и их решать. Это уже девятая статья про решение задач от ИИ, и в этом есть что-то интересное.

Интересна сама генерация задачи искусственным интеллектом, как он это делает, как он с этим справляется и чем он отличается в этом от других ИИ.

Очень сильно мне понравился формат, где нужно исправлять баги в коде. Якобы у нас есть рабочий проект с готовым кодом, а нам нужно найти и исправить в нём ошибки. Искать и исправлять баги в коде мне очень нравится, мне кажется, я скоро достигну совершенства в этом 😄. (шутка)

Но нужно быть готовым ко всему, так как ИИ может достаточно сильно чудить.

Ну что ж, давайте начнём.

Генерируем задачу

Сегодня мне хочется поработать с проектом, где надо что-то считать. Это должно быть веб-приложение, где много всяких панелей и кнопок, которое выполняет всякие вычисления. Давайте попробуем сгенерировать что-то такое

Он выдал нам список. Ого, космический навигатор!! Ядерный реактор 😃? Финансовый детектор мошеннических транзакций? Апокалипсис-калькулятор 🤣??

-2

Мне нравятся задачи №1, №7 и №10. Знаете, обычно каждую новую статью я начинаю с нового запроса для ИИ. Следующие две статьи я буду делать по задачам №7 и №10 из этого запроса.

Давайте посмотрим задачу №10, что за "Инженерный расчёт разрушения моста при резонансе"?

-3

Он выдал мне довольно большой код, даже не знаю, насколько будет разумным вставлять его сюда...

Ухх... Это что? Это ИИ сгенерировал?? 😨

-4

Дизайн мощный, но баги всё равно есть. Буквы чёрные, ничего не видно.

-5

Интересно, а это, получается, картинка моста.

-6

Ой, как не хорошо, как ужасно!! Я нажал на кнопку "принудительное разрушение" и мост разрушился... Вы только посмотрите на эти эмодзи.

-7

Список багов выглядит так. Все баги связаны с расчётами.

-8

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

Мне надо что-то более подходящее для блога. Мне нужно, чтобы зрители всё поняли, им было интересно и понятно.

-9

Так, а вот это уже звучит по интереснее. Надеюсь, так окажется и в действительности...

-10

Код по-прежнему генерируется очень долго, в прошлый раз код был на 515 строк. Это намного больше, чем я обычно вставляю в блог.

Ух... Выглядит снова мощно и снова эти чёрные буквы, из за которых ничего не видно.

-11

Ничего, это можно быстро исправить, можно задать "body" свойство "color: white"

-12

Вот теперь это действительно выглядит мощно. Посмотрите на название вкладки 😁.

-13

А внизу ещё и продолжение есть

-14

Мне нравится такая задача 😃. Буду брать!!

Но мне не нравится стиль панели, мне хочется что-то другое. Как-то не серьёзно это... Не знаю, как можно описать такой стиль, но такое мне обычно не нравится... Попрошу ИИ перегенерировать.

Вот, другое дело. Такое мне больше нравится. Это уже по-серьёзному...

-15

Очень крутая панель. Так как же играть в это?

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

-16

"Лесному союзу" снесло часть полосы здоровья... Интересно...

-17

Давайте посмотрим на список багов.

-18

Очень важно проверять такие задачи, так как их генерирует ИИ.

Смотрим баг №1. Я буду вам нужные места выделять жёлтым, так как кнопок слишком много. Так и запутаться можно.

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

-19

В итоге враг регенерироваться не стал. Баг №1 не работает.

Зато я случайно нашёл баг №2. При отключении критического урона, он всё равно проходит. Так у нас он не то, что проходит, он у нас наоборот, проходит со 100% вероятностью. Так быть не должно.

Смотрим дальше

-20

Попробуем убить 1 отряд, посмотреть, будет ли отрицательное здоровье, а потом этим отрядом нападём на других.

-21

Пау... Вот и всё... Северный легион пал...

Он даже потемнел... Как грустно 🙁...

Но полоса здоровья не стала отрицательной, баг №4 не сработал.

Так, сейчас мы будем устраивать атаку мертвецов!! Мёртвые наступают!!!

-22

Да, "Северный Легион" хоть и умер, но он всё равно может нападать.

И получается из 4-ёх багов у нас работает только баг №2 и баг №3. Вот вам и ИИ.

Перегенерируем

Так, ну на этот раз DeepSeek не упрямится и не доказывает, что он прав.

-23

Код слишком большой, чтобы я его показывал вам, там 500 строк...

Так, очень хорошо, что он мне дополнительно описал, как можно проверить эти баги.

-24

Да, Баг №1 работает, Северный Легион лечится.

-25

Только вот как понимать это?? Если это баг, зачем об этом пишется в консоле?? Странный эффект, броня отразила удар и восстановила HP. Так это же баг, а значит он не предвиден, у него не должно быть сообщения в консоле.

-26

Так, смотрим баг №4. Нужно добить отряд с 10-20 HP сильным уроном.

-27

Баг также не работает...

-28

Зато в консоле написано, ошибка расчёта, здоровье ушло в минус.

-29

ИИ надо постоянно перепроверять. У меня ещё баг №2 работать перестал.

Так, я перегенерировал задачу ещё раз, баг №4 заработал.

-30

Баг №1 с регенерацией тоже работает. 103% здоровья явно не норма. Да и баг №3 работает, мы им можем атаковать.

-31

А вот баг №2 на криты при 0% шансов крита я проверить не могу из за бага №1, из за которого все лечатся.

Так, ну что ж... Этот ИИ только с третьей попытки сделал так, чтобы все баги заработали, давайте начинать решать задачу.

Решаем задачу

Я попросил его ещё раз дать нам список багов, он мне дал это.

-32

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

Давайте по порядку, исправим баг №1, из за которого все регенерируются.

Смотрим, кнопка для нанесения удара имеет id "executeAttackBtn".

-33

Наш id кнопки в JS коде используется только здесь. По нажатию на неё, собираются данные об атакующих, об обороняющихся, об оружии, и всё это передаётся в функцию "attack()".

-34

Так, а здесь у нас баг №3. Вот блин, DeepSeek зачем-то нам подсказывает...

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

-35

Здесь у нас прикол от DeepSeek. То есть у нас в коде существует якобы случайный баг, но при этом он выводится в консоль игры. Что за абсурд? Стираем строки 460-463.

-36

Дальше у нас вот такие строчки, они зачем-то подписаны. Мне кажется, наш баг в 479 строчке, я это чувствую, но нужно проверить.

-37

Это ещё что такое? Если здоровье меньше нуля, оно становится -15. Зачем так сделано, не понятно... Так ещё и подписано "[Баг] Здоровье ушло в минус".

-38

Эти баги неестественны, сразу видно, что их сделал ИИ специально. Хоть бы добавил капельку реализма... Эхх...

Так. Вот так будет правильно, если показатель здоровья ушёл в минус, он задаётся в 0.

-39

Да, это работает. Хорошо.

-40

Исправляли баг №1, а случайно исправили баг №4 😁.

Давайте всё таки попытаемся найти баг №1.

Очень странно, что в 478 строке у нас комментарий "Применяем урон/лечение", где из нашего HP вычитается переменная "finalDamage" (Финальный урон). Что-то здесь не то, нужно пройти по "finalDamage".

-41

У нас выше идёт проверка на критический урон, где урон умножается на 1.75.

А ещё выше задаётся значение переменной "finalDamage". Давайте попробуем в консоль вывести, что же нам выдают переменные "rawDamage" (сырой урон), "targetArmor" (цель броня) и "finalDamage" (финальный урон).

-42

Первый раз я совершил атаку на "Лесной Союз" от "Северного Легиона". А второй раз на "Кровавый клан". И почему-то при атаке на "Кровавый клан" переменная "finalDamage" отрицательная, но другие две нормальные. Переменная отрицательная, а здоровье стало 103%.

-43

Что-то не то в функции "applyArmor", откуда и берутся значения для финального урона.

-44

Какой примитивный баг от ИИ. Он тупо вставил строчку, которая лечит юнитов и пишет в консоль "[БАГ] ... урон превратился в ЛЕЧЕНИЕ ...". Бред.

-45

Убираем эту несуразную кучу и посмотрим, во что функция превратилась теперь. Переменная "reduction" задаётся из функции, которая проверяет, что больше, 0.7 или броня / 120. Функция выводит armor / 120, если это значение больше 0.7, функция будет выводить 0.7.

Получается, в переменную "reduction" записываются значения от 0 до 0.7.
После этого из единицы вычитается "reduction", будут значения от 0.3 до 1, и это умножается на урон.

-46

Если вкратце, функция "applyArmor" считает "(1 - reduction)", который определяет, как сильно будет наноситься урон по броне. Это множитель, уменьшающий урон, в зависимости от брони.

Если броня очень сильная, то Math.min ограничивает этот множитель, самый минимальный множитель будет 0.3. То есть броня способна уменьшить урон только до 30%.

Да, урон стал наноситься нормально. Баг №1 исправлен.

-47
-48

Баг №2, кинжал и копьё всегда наносят критический удар.

-49

Да, это так. В чём же дело?

Вернёмся в нашу функцию. Наш критический урон наносится, если переменная "crit" равна true. А она записывается из функции "isCritical()"

-50

Если оружие "dagger" или "spear", то выводит "true" без размышлений. Если нет, то проверяет вероятность, будет ли нанесён критический урон, в зависимости от настроек.

-51
-52

Какой же глупый баг, ну глупости полные...

-53
-54
-55

Баг исправлен.

И осталось только исправить баг с атакой мертвецов.

-56

О, а тут победа оказывается есть? А ну ка...

-57

Хмм... Я представлял себе это более торжественно...

-58

Вот, это оставшиеся строки функции, которые я вам не показал.

-59

Я прошёлся по функции атаки, и никакой проверки на жизнеспособность группы нет. Получается, её надо написать вручную.

А как проверить, жива ли группа, которая атакует?

-60

Так, у них есть свойство hp. Также есть массив "armies" с группами. Для цели используется индекс "targetIdx", нужно найти в коде индекс для атакующей группы.

-61

Вот она, "attackerIdx".

-62

Надо бы ещё добавить вывод в лог

-63

Проверяем. Убиваем "Лесной Союз"

-64

Пробуем от "Лесного Союза" напасть на кого-нибудь

-65

Да, хорошо. Только вот я думаю, что это надо выделить красным, как другие важные сообщения.

У критического удара, к функции добавляется "critical".

-66

Я думаю, и к другим надо это добавить, так как сообщения важные.

-67

Вот, хорошо.

-68

По сути, мы исправили все баги.

-69

Можно подводить итоги

Подведём итоги

-70

DeepSeek сгенерировал достаточно классную страничку с игрой. Много разных панелей, кнопок, параметров, а также консоль с данными.

Проект хороший, но задача на исправление багов никакая.

Баги достаточно примитивные. По большей части мы исправляли глупые баги, добавленные намерено.

Было интересно покапаться по проекту, посмотреть его кнопки, функции и поискать самостоятельно баги.

Если делать, как я, тестировать ИИ, генерировать задачу, исследовать проект, решать задачу, так ещё и дополнительно писать блог, то мне было интересно. Но если решать чисто задачи от этого ИИ, то это скучно и поверхностно.

Повторюсь, самое интересное здесь было задавать запросы ИИ, исследовать проект и искать баги. Не исправлять их, а искать. Если обобщить, интересно было работать с ИИ и исследовать проект. Баги были скучные.

Я генерировал и решал подобные задачи с Алисой AI, Гигачатом и DeepSeek. Гигачат и DeepSeek примерно одинаково справляются, одни и те же ошибки, но DeepSeek делает это чуть качественнее. Он делает такие же ошибки, что и Гигачат, но DeepSeek надо меньше объяснять, чтобы он исправил.

Ладно, я буду делать выпуски дальше, буду просить Гигачат и DeepSeek сгенерировать задачи по веб-разработке и буду сравнивать, кто справляется лучше. Ну и конечно же их решать 😀.

Ну а если вам понравилось, подписывайтесь на канал и ставьте лайки.