Переписка от моего лица с Deepseek для игры Party House
Ссылка на телеграмм-канал, в котором все посты: https://t.me/SecretRoom_Gamedesign
Напиши на html игру. Предоставь этот код в виде отдельных трех файлов html, css и javascript. Правила игры: У нас есть начальная колода карт из 9 карт. В колоде три вида карт: 1. Приятель. 2. Мажор. 3. Дебошир. В колоде из каждого вида лежат по три карты. У нас есть игровой стол, на котором есть 6 площадок. На каждую площадку можно положить одну карту из колоды. Мы последовательно достаем карты из перемешанной колоды по запросу игрока. Каждая карта кладется на площадку. Игрок может остановить игру, нажав на специальную кнопку. После остановки карты перестают доставаться из колоды. Если закончились свободные площадки или игрок остановил игру сам, происходит подсчет ресурсов. За каждого приятеля на столе дается 1 желтый жетон. За каждого мажора 1 зеленый жетон. За каждого дебошира 2 желтых жетона.
Давай добавим правило: Если на столе окажется три и более дебошира, то игрок проиграет и не получит никаких жетонов.
Давай сделаем игру многоразовой. В игре будет 25 раундов. Каждый раунд начинается с пустого стола и перемешанной колоды. Жетоны копятся между раундами. Вместо того, чтобы завершить игру мы завершаем раунды. Если мы набираем на столе трех дебоширов, то мы проигрываем раунд, но не игру. В проигранном раунде мы не получаем жетоны. Цель игры набрать как можно больше жетонов за 25 раундов.
Давай на картах сделаем отметки, сколько жетонов они дают. А для дебоширов сделаем пометку в виде крестика.
Давай добавим возможность покупать новые карты в колоду между раундами. Сделаем между раундами возможность сходить в магазин по отдельной кнопке. В магазине будет представлены карты для покупки за желтые жетоны. В магазине будет 4 карты Приятеля. Каждая карта стоит 2 желтых жетона. 4 карты мажора. Каждая стоит 2 желтых жетона. 4 карты дебошира. Каждая стоит 3 желтых жетона.
Ошибка: карты приятелей в магазине не нажимаются и не покупаются.
Ошибка: Карты купленные в магазине не добавляются в колоду и не участвуют в следующем раунде. Сделай так, чтобы те карты, которые я купил в магазине, добавились бы в колоду в следующем раунде.
Сделай так, чтобы по клику на счетчик оставшихся карт в колоде открывалось окно, в котором бы показывались оставшиеся карты в колоде
Сделай кликабельным все поле счетчика оставшихся карт в колоде, а не только число.
Давай добавим возможность покупать для стола дополнительные площадки для карт. Первая покупка площадки стоит 2 зеленых жетона, вторая покупка площадки — 3 жетона, 3-я — 4 жетона и так далее. Максимум можно купить 30 дополнительных площадок. Площадки покупаются в окне магазина между раундами.
Давай добавим новый вид карты — «особые». Они будут продаваться в магазине за 30 желтых жетонов. Их можно покупать в магазине бесконечно. На карте будет изображена летающая тарелка. Теперь цель игры не набрать максимальное количество жетонов, а сыграть такой раунд, чтобы на столе было не менее 4 «особых» карт. Если игрок сможет сыграть такой раунд, то он победит, если не сможет это сделать за 25 раундов, то проиграет.
Давай сделаем так, чтобы при окончании раунда счетчики жетонов обновлялись сразу и показывали новое количество жетонов.
Давай сделаем так, что если на карту или новую площадку в магазине не хватает жетонов, то она будет не нажиматься и быть серой.
Давай добавим новый вид карточки в магазин. Карточка — Водитель. Стоит 3 желтых жетона. Максимальное количество карточек — 4. Когда на столе есть карта водителя, то ее можно использовать, для этого на нее нужно нажать. При этом вызовется окно, в котором будут отображены все карты, которые остались в колоде. В этом окне можно будет выбрать одну карту, при этом она появится на свободной площадке на столе, при этом уберется из колоды. Каждого водителя можно использовать только один раз за раунд.
Ошибка: не вызывается окно выбора карты при клике на карту водителя.
Давай улучшим игру. Давай добавим новый вид карточки в магазин. Карточка — Водитель. Стоит 3 желтых жетона. Максимальное количество карточек — 4. Когда на столе есть карта водителя, то ее можно использовать, для этого на нее нужно нажать. При этом вызовется окно, в котором будут отображены все карты, которые остались в колоде. В этом окне можно будет выбрать одну карту, при этом она появится на свободной площадке на столе, при этом уберется из колоды. Каждого водителя можно использовать только один раз за раунд.
Ошибка: когда я просматриваю свою колоду, я не вижу карт водителей.
Сделай так чтобы водителей в магазине можно было бы покупать не более 4 штук.
Давай добавим новую карту — Вышибала. Иконка для карты ботинок. Она будет продаваться в магазине, как водитель. 4 карты в магазине. Стоимость карты 4 желтых жетона.
Давай сделаем так, чтобы дебошир мог выгонять не только дебоширов, а любую карту со стола.
Ошибка: При нажатии на карту вышибалы ничего не происходит. В консоль выдается ошибка: Uncaught ReferenceError: troubleSlots is not defined.
Давай добавим новую карту по аналогии водителя — собака. Будет стоить 2 желтых жетона. Только в отличие от водителя она не дает полный выбор карт из колоды. Она предлагает только одну карту из колоды. И дает выбор взять эту карту или убрать ее из колоды на один раунд. Отказаться от выбора нельзя. Нужно обязательно выбрать один из вариантов.
Давай добавим новую карту — Хиппи. Его иконка это листик травы. Она продается в магазине за 2 желтых жетона. В количестве 4 штук. Если карта есть на столе, то она повышает максимальное количество дебоширов на столе для проигрыша. То есть, если на столе будут два хиппи и три дебошира, то раунд будет продолжаться, потому что для проигрышу уже нужно не три дебошира, а пять = три + два.
Почему когда появляется карта хиппи на столе сообщение о максимальном количестве дебоширов пропадает?
Давай сделаем новую карту — Тусовщик. Она будет давать 4 желтых жетона, когда находится на столе. В магазине будет стоить два желтых жетона. В магазине будут продаваться 4 карты. Когда она появляется на столе, она вместе с собой автоматически выкладывает дополнительную карту из колоды. Если так получилось, что для этой новой карты нет места на столе, то раунд проигрывается по причине «Дом переполнен».
Ошибка: Когда тусовщик оказывается в последнем слоте, то раунд не проигрывается, я все равно получаю жетоны за раунд. Хотя очевидно должен быть проигрыш раунда, так как не хватает места для карты, которую хочет положить тусовщик.
Давай сделаем новую карту — Комедиант. Она будет отнимать один зеленый жетон, когда находится на столе. В магазине будет стоить два желтых жетона. В магазине будут продаваться 4 карты. Если в конце раунда все площадки будут заполнены картами, то Комедиант даст в конце раунда бонусные 5 желтых жетонов.
Я уберу индикатор для хиппи и у комедианта в updateDisplay. Но то, что комедиант отнимает 1 зеленый жетон, я буду писать также как и у мажоров пишутся зеленые жетоны, но со знаком минус и не в зеленой рамке, а красной.
Ошибка: Если в колоде есть комедиант, то не открывается окно колоды
Сейчас завершается раунд с комедиантами и счет раунда в зеленых жетонах меньше нуля, то они не списываются с общего счета. Должно быть так, что если раунд завершается с отрицательным количеством жетонов (желтых или зеленых), то после раунда они должны вычесться из общего счета жетонов. Правда общий счет жетонов не может быть меньше нуля.
Ошибка: когда тусовщик оказывается на предпоследнем слоте, и приглашает новую карту на стол, то раунд сразу проигрывается, хотя не должен, потому что дом не переполнен пока.
Ошибка: Почему тусовщик сейчас привлекает сразу две карты, а не одну.
Ошибка: Когда водитель привозит карту тусовщика, то не срабатывает эффект тусовщика.
Давай сделаем так, что если на столе есть вышибала с доступным действием, то раунд не будет завершаться автоматически после заполнения стола.
Я не обновил метод updateTroubleLimitInfo, я посчитал, что отображение количества вышибал во время игры не нужно. Также я сделал, чтобы если тусовщик не может привести еще одну карту на стол, то раунд проигрывается, не важно есть ли вышибала или нет.
Я заметил, что в коде есть повторяющиеся участки, которые выполняют одни и те же функции. Давай проведем рефакторинг и вынесем одинаковые участки кода в отдельные функции.
Давай упростим интерфейс окна колоды. 1. Не нужно писать сколько у нас карт в колоде и сколько из них купленных. 2. Не будем разделять карты на категории, а отобразим их одним списком. 3. Не будем отображать на водителе нижний значок авто 4. У хиппи не будем отображать нижний значок листика. 5. У тусовщика оставим только отображение жетонов. 6. У комедианта только отображение жетонов.
Почему при старте открывается окно с окном колоды, может оно должно быть по умолчанию скрыто при старте?
Хочется видеть карты в колоде не сгруппированными в один тип. Пусть каждая карта отображается отдельно. Пусть карты располагаются слева направо, сверху вниз.
Я хочу чтоб карты в отображении колоды были отсортированы по типам. В таком порядке: Особые, приятели, мажоры, дебоширы, вышибалы, собаки, хиппи, тусовщики, комедианты, водители.
Сейчас у дебоширов в колоде высота карточки больше чем у остальных, потому что у него есть дополнительные значок. Сделай так, чтобы все карточки были такой же высоты как и дебошир.
Давай уберем анимацию покачивания у следующих карт: Хиппи, тусовщик, комедиант. Анимацию нужно убрать в магазине и на столе.
Ошибка: Кнопка крестика работает только в окне колоды, в остальных окнах она ничего не делает.
Я хочу упростить интерфейс магазина. Давай объединим одинаковые карточки в одну кнопку покупки карточки, на которой будет отображено сколько карточек в магазине еще осталось. Оставшееся количество будем отображать иконками 🀆. Например 🀆🀆🀆 — значит что осталось три карты в магазине.
Давай уберем разделители в магазине и все карты будем выводить в одном списке.
Ошибка: В магазине в кнопке Купить место цена не обновляется.
Давай на карте особого гостя в магазине будем отображать значок бесконечности в количестве.
Давай уберем всплывающие сообщения при действиях, такие как Собака выполнила работу, Куплена карта, В колоде столько то карте, Не хватает ресурсов для покупки.
Ошибка: Я могу купить только одну особую карту в магазине. Больше не дает.
Давай сделаем ограничение на накопление ресурсов, максимум можно накопить 65 желтых жетонов, и 30 зеленых.
Я не стал добавлять функцию checkTokenLimits, чтобы не спамить игрока сообщениями.
Скоро мы начнем добавлять карты, которые будут как дебоширы, но другие. Давай вынесем свойство дебошира, что после трех таких карт раунд проигрывается, как отдельное, чтобы потом давать это свойство другим картам.
Карты дебоширов которые я покупаю в магазине не идут в зачет опасных, почему?
Теперь создадим новую карту — Обезьяна. Стоит 3 желтых жетона. Дает 4 желтых жетона. Проблемная.
Ошибка: Крестик стал отображаться на картах обезьяны в магазине, но на столе и в колоде крестика все еще нет.
Сделаем новую карту — Рок-звезда. Иконка карты — электрогитара. Стоит 5 желтых жетонов. Дает 3 желтых жетона и 2 зеленых. Проблемная.
Ошибка: Ты забыл добавить карту в renderDeckAsIndividualCards.
Давай отрефакторим этот момент. Мне не нравится, что нужно каждый раз прописывать карту в этих методах.
Давай определять порядок карт в магазине и в отображении колоды, так как это прописано в конфиге.
Мне не нужен отдельный конфиг cardOrder, ведь у меня уже есть порядок карт в cardConfigs.
Давай не будем использовать отдельный массив showTokensInDeck, мы можем узнать нужно ли отображать токены по тому, есть ли у карты отрицательные или положительные токены.
Ошибка: Почему я получаю в конце раунда в два раз больше жетонов.
Давай сделаем новую карту. Танцор. Стоит 7 желтых жетонов. Желтых жетонов по умолчанию не дает, но если в конце раунда на столе будет 1 танцор, то бонус 1 желтый жетон, 2 танцора — 4 желтых жетона, 3 танцора — 9 желтых жетонов, 4 танцора — 16 желтых жетонов.
Ошибка: Если использовать карту на слоте, а потом удалить эту карту и поставить на слот новую карту, то она уже не будет активная, так как слот запомнился неактивным.
Давай отображать карты в окне выбора карты для водителя в том же порядке, как они прописаны в конфиге.
Давай при первой загрузке игры покажем модальное окно со списком правил. Также сделаем внизу страницы кнопку Правила, которое вызывает это окно. Сам список правил такой: 1. Приглашайте гостей в дом на вечеринку и зарабатывайте 🟡Популярность и 💲Деньги. 2. Если в доме будет 3 ❌проблемы = вечеринка накроется! 3. Переполненный дом — тоже конец вечеринки! 4. Пополняйте колоду гостей и расширяйте дом в Магазине. 5. Используйте специальные способности карт. 6. Успейте провести за 25 дней вечеринку с 4 ⭐ особыми гостями 🛸.
Давай добавим отображение шанса вытащить из колоды проблему.