Code Every Day 🚀
30 subscribers
687 photos
243 videos
22 files
174 links
Просто для развлечения
Download Telegram
Основы Roblox - Крестики-Нолики: логика игры

🎯 Решил реализовать крестики-нолики в Roblox. Работу начал с бизнес логики игры.
В проект добавил файл скрипта TicTacToeLogicScript, в рамках которого буду программировать логику игры. Фактически она никак не связана с игровым миром, это просто моделирование игрового поля и логика хода игрока.

#Roblox
#TicTacToe
👍1🔥1
👨‍💻 Игровую ячейку моделирует список с перечислением возможных значений cell
👨‍💻 Состояние игрового поля будет моделироваться двумерным массивом state, по умолчанию каждая ячейка заполнена значением cell.none, то есть не выбрана ни одним из игроков
👍1
👨‍💻 Потребуется много логировать по ходу работы скрипта, поэтому добавим специальные методы для удобства работы с логами: добавим уровень логирования, по которому можно будет понять суть сообщения - ошибка, предупрждение, инфо сообщение. Также сразу заведем набор переменных окружения, чтобы можно было в одном месте включать и отключать логи. Возможно, в окружение еще добавятся флаги для работы приложения.
👍1
👨‍💻 Соответственно, для логирования добавим функции, которые выводят логи совместно с уровнем логирования, попозже будет видно, как это работает.
👍1
👨‍💻Также хорошо бы уметь логировать состояние игрового поля, для этого напишем отдельный метод, который преобразует двумерный массив в строки и выводит в логи
👍1
👨‍💻Для клиентского кода нужно будет предоставить пару методов: один из них - метод смены состояния ячейки. В этот метод нужно передать координаты ячейки и значение: крестик или нолик. Метод должен уметь обрабатывать ошибки.
👍1
👨‍💻Детали проверок для метода смены состояния ячейки игрового поля представлены на скриншоте, фактически они проверяют, что игрок не пытается поменять ячейку не в пределах игрового поля, а также он должен выбрать один из возможных вариантов для ячейки
👍1
👨‍💻Скрипт бизнес логики уже умеет менять состояние игрового поля, поэтому можно написать тестовые методы для проверки его работы. Добавим для удобства специальный метод testCase, который принимает имя тест кейса, по этому имени логи будут группироваться, а также анонимную функцию, в которой можно описать набор тестов.

На скриншоте написаны тесты для метода set
👍1
Media is too big
VIEW IN TELEGRAM
👨‍💻 Результат работы скрипта, тестов скрипта, отвечающего за моделирования логики крестков-ноликов, представлены на демо.
👍1
День 80: Прогнозы по продвинутым угрозам безопасности на 2024 год

Вышла статья Прогнозы по продвинутым угрозам на 2024 год, в которой опиcано, какие из прогнозов на 2023 год сбылись, а какие нет. Также делаются прогнозы на будущий год. Статья интересная, для общего понимания трендов будет полезно.

#securelist
🤔2
Code Every Day 🚀
Основы Roblox - Крестики-Нолики: логика игры 🎯 Решил реализовать крестики-нолики в Roblox. Работу начал с бизнес логики игры. В проект добавил файл скрипта TicTacToeLogicScript, в рамках которого буду программировать логику игры. Фактически она никак не…
Основы Roblox - Крестики-Нолики: логика игры

🎯 Вчера был разработан скрипт, который моделировал состояние игрового поля и позволял менять значения в ячейках игрового поля. Сегодня продолжил работу и реализовал метод проверки решения - solve()

👉Алгоритм поиска решения:
- проверяем все строки, есть ли строка, которая содержит одинаковые элементы со значением cell.cross или cell.zero
- проверяем все столбцы, есть ли столбец, который содержит одинаковые элементы со значением cell.cross или cell.zero
- проверяем две диагонали

Детали функции solve приведены на скриншотах

#Roblox
#TicTacToe
👍2
👨‍💻В основе алгоритма лежит функция проверки: все ли элементы списка равны некоторому значению
👍1
👨‍💻 Для отладки добавил метод логирования результатов поиска решения
👍1
👨‍💻Также добавил метод для сброса состояния игрока
👍1
👨‍💻После добавил новый тест кейс, который будет создавать разные комбинации решения игры
👍1
👨‍💻 Запустив демо, стартанул код тест кейса и в консоли видны результаты
👍1