Я разрабатываю вымышленный компилятор с эмулятором, и занялся разработкой игры Radio Attack. Но как оказалось, что это служило лишь мотивацией для доработки инструментов. Хотелось бы так верить. Проблемы с Radio Attack есть, а именно невозможно играть без сетевого режима, и нет денег на сервера, чтобы поддерживать 6 желающих игроков со всей России в неё поиграть. Поэтому я сохранил на gitverse код и начал думать над идеей для другой игры, чтобы продолжать дальше совершенствовать компилятор с эмулятором. Тогда и пришла идея про разработку прошивки для лифтов.

Графика простая, показывающая лифт и человечка. 8 этажей.

Проблема лифтов
Проблема лифтов

У нас в общаге установили два умных лифта и первое время к нему надо было привыкать, так как на старом лифте надо было просто жать кнопку быстро, и кто быстрее нажал, к тому и поедет.

Я задумался над проблемой разработки лифта и попробовал сделать свою мини игру, где мы должны программировать логику лифта. На скриншоте один лифт, так как я пока разбираюсь и отлаживаю все ошибки с одним лифтом. Потом можно будет усложнять, и если это будет работать, то выложу на vkplay.

Слева код лифта старого варианта, где лифт работает, если вы первый вызвали его. Но здесь есть ещё проблема, что человечек может поехать с другим, то-есть есть ещё баг, и я думаю он в том, что надо давать приоритет тому, кто в лифте, а не кто вызывает.

В компиляторе ещё нет дефайнов, но добавлю в скором времени. Так будет удобней работать с кодом, когда номера прерываний будут замещены названиями.

В компилятор например добавил функцию прерывания и назвал её IREAD, она видна в начале кода. Как подобает прерываниям такого рода, если я правильно выражаюсь, он сохраняет в стеке все регистры и флаги, а потом в нашем случае в ax заносит номер лифта и этаж, на котором произошел вызов. Пока что через BIOS прерывания int я указываю логику, занят, свободен, чтобы человечек не нажимал на кнопку, пока не дойдет до него очередь.

Вроде бы игра простая, но реализация сложная. Тут и баги, которые я пытался найти по 4 часа. Зато потом придумал как ускорить процесс поиска неисправности в эмуляторе.

Например, я был недоволен как наш умный лифт работал, но теперь думаю, смогу ли я сделать лучше код, чтобы два лифта ездили так как я считаю было бы правильно.

На последок покажу видео, где этот лифт работает и перевозит людей.

Комментарии (5)


  1. turbo_nyasha
    16.09.2024 11:58
    +6

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


    1. PrinceKorwin
      16.09.2024 11:58

      Спасибо большое! Вы спасли мне кучу времени. Уже хотел сам что-то подобное запрограммировать. Хотя, погодите... Думаю вы мне только что помогли убить кучу времени...


      1. xverizex Автор
        16.09.2024 11:58

        Я решил сделать публичными репы с эмулятором и компилятором. Это мои первое творение, так что на крутое качество кода не претендую. В Компиляторе пока только в ветке radio_attack поддерживается разработка, потом перенесу в master.
        https://gitverse.ru/archinaragu/DOXY_EMU
        https://gitverse.ru/archinaragu/DOXY_ASM


  1. OlegZH
    16.09.2024 11:58

    Привет лифту Дональда Кнута.


  1. demsp
    16.09.2024 11:58

    обычно если на этаже нажата кнопка вызова, а лифт едет вверх, то лифт проезжает этаж не останавливаясь, а вот если лифт едет вниз, то останавливается