Я пытаюсь понять, как спроектировать следующую систему, которую, я думаю, можно определить как конечный автомат:
Скажем, у нас есть куча из 16 строительных блоков (башен, стен, ворот), вместе образующих замок. Игрок может перетащить блоки в 16 мест на плане этажа, и если все сделано правильно, они увидят весь замок. Все башни (их четыре) равны, поэтому они могут идти по любому из четырех углов. То же самое касается некоторых стен.
Всего на плане этажа есть 16 точек, в которые можно поместить строительный блок, и каждая из точек может иметь 17 «состояний»: пусто + один из 16 строительных блоков. При выполнении математики это приводит к 17 ^ 16 = много комбинаций.
Программа начинается с пустого плана этажа и груды строительных блоков. Затем должно появиться сообщение «Построй свой собственный замок, начни с башни». Когда пользователь правильно размещает башню, он должен сказать «хорошо сделано, теперь постройте все четыре башни». Вы поняли.
Проблема в том, что игрок может сделать так много всего. Поместите блок в неправильном месте, удалите блок, правильно разместите стены или башни по всему плану этажа, игнорируя указания, данные им, и т. Д.
Было бы здорово, если бы я мог избежать использования тысяч операторов if-then, чтобы решить, стоит ли мне делать следующий шаг, показывать сообщение об ошибке или возвращаться к предыдущему шагу в зависимости от того, что делает игрок.
Как бы вы описали условия СЛЕДУЮЩАЯ, ПРЕДЫДУЩАЯ и ОШИБКА для каждого шага последовательности строительства? Есть ли методы дизайна для этого? Большое спасибо за ваш вклад.