В качестве программы-примера предлагается вот эта реализация игры Тетрис:
Вложение:
tetris-screenshot.png [ 22.49 КБ | Просмотров: 3913 ]
https://drakon.tech/js/examples/tetrisИгра работает в браузере и не требует установки. Можно играть и на телефоне.
Технология: простой (ванильный) JavaScript и HTML canvas.
Детали реализацииИгрой управляет конечный автомат, имеющий следующие состояния:
- idle (игра не начата)
- playing (игра идёт)
- dropping (фигура быстро падает в результате команды от игрока)
- finished (игра закончена)
Автомат принимает следующие сообщения:
- advanceStep (вызывается по таймеру, возвращает количество миллисекунд, которое надо ждать до следующего вызова advanceStep)
- onLeft (нажатие клавиши Влево)
- onRight (нажатие клавиши Вправо)
- onDown (нажатие клавиши Вниз - уронить фигуру)
- onRotate (нажатие клавиши Вверх - вращение фигуры)
advanceStephttps://app.drakon.tech/ide/doc/drakon-tetris/20Вложение:
advanceStep.png [ 91.76 КБ | Просмотров: 3913 ]
onLefthttps://app.drakon.tech/ide/doc/drakon-tetris/44Вложение:
onLeft.png [ 19.43 КБ | Просмотров: 3913 ]
onDownhttps://app.drakon.tech/ide/doc/drakon-tetris/51Вложение:
onDown.png [ 22.1 КБ | Просмотров: 3913 ]
К сожаление, на сегодня ДРАКОН-Тех не поддерживает конечные автоматы в виде силуэтов, как здесь -
viewtopic.php?f=142&t=6297Какие проблемы возникают из-за отсутствия явного представления автоматов?
1. В исходном коде трудно найти и выявить автоматы, хотя они объективно есть.
2. Логика переключения состояний разбросана по функциям. Нет целостной картины автомата.
Вот к чему приходит отход от автоматного программирования.