Проблема лифтов, игра Coding Lift
Я разрабатываю вымышленный компилятор с эмулятором, и занялся разработкой игры Radio Attack. Но как оказалось, что это служило лишь мотивацией для доработки инструментов. Хотелось бы так верить. Проблемы с Radio Attack есть, а именно невозможно играть без сетевого режима, и нет денег на сервера, чтобы поддерживать 6 желающих игроков со всей России в неё поиграть. Поэтому я сохранил на gitverse код и начал думать над идеей для другой игры, чтобы продолжать дальше совершенствовать компилятор с эмулятором. Тогда и пришла идея про разработку прошивки для лифтов.
Графика простая, показывающая лифт и человечка. 8 этажей.
Проблема лифтов
У нас в общаге установили два умных лифта и первое время к нему надо было привыкать, так как на старом лифте надо было просто жать кнопку быстро, и кто быстрее нажал, к тому и поедет.
Я задумался над проблемой разработки лифта и попробовал сделать свою мини игру, где мы должны программировать логику лифта. На скриншоте один лифт, так как я пока разбираюсь и отлаживаю все ошибки с одним лифтом. Потом можно будет усложнять, и если это будет работать, то выложу на vkplay.
Слева код лифта старого варианта, где лифт работает, если вы первый вызвали его. Но здесь есть ещё проблема, что человечек может поехать с другим, то-есть есть ещё баг, и я думаю он в том, что надо давать приоритет тому, кто в лифте, а не кто вызывает.
В компиляторе ещё нет дефайнов, но добавлю в скором времени. Так будет удобней работать с кодом, когда номера прерываний будут замещены названиями.
В компилятор например добавил функцию прерывания и назвал её IREAD, она видна в начале кода. Как подобает прерываниям такого рода, если я правильно выражаюсь, он сохраняет в стеке все регистры и флаги, а потом в нашем случае в ax заносит номер лифта и этаж, на котором произошел вызов. Пока что через BIOS прерывания int я указываю логику, занят, свободен, чтобы человечек не нажимал на кнопку, пока не дойдет до него очередь.
Вроде бы игра простая, но реализация сложная. Тут и баги, которые я пытался найти по 4 часа. Зато потом придумал как ускорить процесс поиска неисправности в эмуляторе.
Например, я был недоволен как наш умный лифт работал, но теперь думаю, смогу ли я сделать лучше код, чтобы два лифта ездили так как я считаю было бы правильно.
На последок покажу видео, где этот лифт работает и перевозит людей.