Top.Mail.Ru
Ответы

Как исправить эту ошибку в покет код?

я сделал игру "подели" или "укради" где простая механика, выбираем украсть(значение 1) или поделить(значение 2), далее во второй сцене рандомом выбирается значение выбора бота(от 1 до 2) и далее события, что если мой выбор ровно 2 и выбор бота ровно 2, то обоим на баланс зачислится 5000(баланс + 5000, баланс бота + 5000), если у меня значение 1, а у бота 2, то только на мой баланс зачислится 10000(баланс + 10000), а если у меня значение 2, а у бота 1, то только на баланс бота зачислится 10000(баланс бота + 10000) в и оге возникают баги по типу: сначала вы вдвоём поделили и каждый подучил по 5к, всё ок, потом я выбрал поделить, а он украсть, у сеня так и осталось 5к, как и надо, но у бота какогото фига стало 20к, за что ему ещё дополнительные 5к? если что я пробывал сменить с "задать переменную" на "изменить значение переменной", не помогает. Сцен всего две, переход между ними обычный, просто "запустить сцену". Ничего из переменных и спрайтов не перепутал, всё внимально осмотрел, всё в порядке, в чем может быть дело?

По дате
По рейтингу
Аватар пользователя
Искусственный Интеллект
7мес

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

1. **Проверка логики обновления баланса:**
- Убедитесь, что блоки, отвечающие за изменение баланса, выполняются только один раз за каждое действие.
- Проверьте, нет ли дублирующихся блоков, которые могут изменять баланс бота дважды при одном событии.

2. **Использование условий правильно:**
- Проверьте, что условия (например, `если мой выбор = 2 и выбор бота = 2`) правильно структурированы и не перекрываются.
- Убедитесь, что нет конфликтующих условий, которые могут одновременно выполнять несколько действий.

3. **Переход между сценами:**
- При использовании блока "запустить сцену" убедитесь, что при переходе в сцену не запускаются дополнительные скрипты, которые могут дублировать изменение баланса.
- Рассмотрите возможность использования блока "другие сценарии" или "broadcast" для передачи событий между сценами без повторного выполнения всей логики.

4. **Отладка с помощью вывода значений:**
- Добавьте блоки для вывода значений переменных баланса (например, `послать сообщение` или `показать переменную`) перед и после изменения баланса. Это поможет отследить, когда и как изменяются значения.
- Проверьте, соответствует ли количество изменений ожиданиям после каждого раунда.

5. **Проверка инициализации переменных:**
- Убедитесь, что переменные баланса правильно инициализируются в начале игры и не сохраняют значения между сценами, если это не требуется.
- Возможно, стоит сбрасывать или правильно сохранять значения переменных при переходе между сценами.

6. **Пример структуры скрипта:**
- **Сцена выбора действия:**
- Игрок выбирает `украсть` или `поделить`.
- Сохраняется выбор игрока.
- Переход во вторую сцену.

- **Вторая сцена (логика игры):**
- Генерируется выбор бота (рандом от 1 до 2).
- Проверяются условия:
- Если оба выбрали `поделить` (2,2) → оба получают +5000.
- Если игрок `украл` (1) и бот `поделил` (2) → игрок получает +10000.
- Если игрок `поделил` (2) и бот `украл` (1) → бот получает +10000.
- Обновляются соответствующие переменные баланса.
- Возврат или переход к следующему раунду.

7. **Пример блоков для обновления баланса:**

```plaintext
если (мой выбор = 2) и (выбор бота = 2) тогда
изменить баланс игрока на +5000
изменить баланс бота на +5000
иначе если (мой выбор = 1) и (выбор бота = 2) тогда
изменить баланс игрока на +10000
иначе если (мой выбор = 2) и (выбор бота = 1) тогда
изменить баланс бота на +10000
```

8. **Проверка повторного выполнения:**
- Убедитесь, что при переходе обратно в первую сцену или при запуске новой игры скрипты не добавляются снова, что может привести к многократному изменению балансов.

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