Игра Змейка с автопилотом

10.07.19

Задачи пользователя - Игры

Игра Змейка с автопилотом реализована в парадигме автоматного программирования.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Змейка и спецификация к ней
.zip 257,68Kb ver:1.1
2
2 Скачать (1 SM) Купить за 1 850 руб.

Игра реализована в парадигме автоматного программирования. Для ознакомления с этой парадигмой и вообще с конечными автоматами крайне рекомендую книгу Поликарпова Н.И., Шалыто А.А. Автоматное программирование - http://is.ifmo.ru/books/_book.pdf

Дополнительно рекомендую сайты:

http://is.ifmo.ru/automata/

http://softcraft.ru/auto/

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

Разработка велась на платформе 8.3.10.2561.

 

Спецификация

А0. Головной автомат

Смешанный автомат событийного типа. Описывает общую логику программного продукта. Запускается только по событию.

Схема связей

Граф перехода (диаграмма состояний)

 
Исходный код 

А3. Обработка событий игры

Автомат Мили событийного типа.

Схема связей

Граф перехода (диаграмма состояний)

 
 Исходный код

А1. Направление змейки

Смешанный автомат событийного типа.

Схема связей

Граф перехода (диаграмма состояний)

 
 Исходный код

А2. Сделать шаг

Автомат Мура.

Схема связей

Граф перехода (диаграмма состояний)

 
 Исходный код

 

игра змейка автоматное программирование конечный автомат машина состояний Мура Мили

См. также

Игры Платформа 1С v8.3 Бесплатно (free)

Знакомы с серией игр Football Manager? Вся суть подобных симуляторов состоит в том, чтобы путем грамотного управления и контроля за спортивным, инфраструктурным и финансовым учетом привести свой футбольный клуб к успехам. Это ли не задача для платформы 1С - помочь в контроле учета предприятия (читай футбольного клуба)?

10.01.2025    3242    64    KamranV21    4    

30

Игры Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Я Федор, ведущий разработчик 1С. На хакатоне компании команда под моим руководством перенесла игру «Герои меча и магии III» на платформу 1С. Расскажу, как устроена конфигурация «1С: Герои меча и магии» с технической точки зрения.

10.10.2024    48892    PROSTO-1C    55    

165

Игры Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 1С:Бухгалтерия 3.0 Россия Бесплатно (free)

Классическая игра Морской бой, с необычным дизайном. Из особенностей: Поле игрока формируется автоматически, но есть возможность корректировать расстановку фигур. Пример игры в приложенном видео.

29.07.2024    1244    78    user1693438    3    

8

Игры Платформа 1С v8.3 Конфигурации 1cv8 Россия Бесплатно (free)

Простейшие крестики-нолики с маленьким полем.

24.07.2024    1262    89    user2015123    0    

7

Игры Платформа 1С v8.3 Конфигурации 1cv8 1С:Бухгалтерия 3.0 Бесплатно (free)

Классическая игра пасьянс Паук, на платформе 1С.

15.04.2024    1948    99    user1693438    3    

18

Игры Пользователь Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Бесплатно (free)

Игра "Змейка" в классическом варианте на управляемых формах в 1С. Собирайте яблоки и ставьте рекорд!

09.02.2024    4989    298    emilyabochkova    15    

31

Игры Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Создавайте новые ключворды или разгадывайте существующие.

1 стартмани

05.02.2024    2316    1    alexpvs    0    

7

Игры Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Абонемент ($m)

Игра "5 Букв", сделанная на 1С. В игре загадано слово, существительное в единственном числе. Нужно отгадать загаданное слово.

1 стартмани

29.12.2023    2443    4    APTEM_SLV    9    

7
Отзывы
2. RonX01 325 08.07.19 05:09 Сейчас в теме
Обработка и спецификация
Прикрепленные файлы:
Змейка.epf
Спецификация.doc
Остальные комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. wowik 891 23.04.19 10:06 Сейчас в теме
2. RonX01 325 08.07.19 05:09 Сейчас в теме
Обработка и спецификация
Прикрепленные файлы:
Змейка.epf
Спецификация.doc
3. user1249164 08.07.19 12:07 Сейчас в теме
Прикольною Только бессмысленно
4. RonX01 325 08.07.19 12:53 Сейчас в теме
(3) В самой игре смысла нет, для меня было важно попробовать подход автоматного программирования. А поскольку на инфостарте об этом почти ничего нет, то решил поделиться своим опытом, так сказать.
Danil.Potapov; RustIG; +2 Ответить
5. pm74 203 10.07.19 13:13 Сейчас в теме
(0) отлично сделано
если я правильно понял входной алфавит включает управляющие события (e) и условия на переходе (x , y) ?
Х и Y по какому принципу вы их различаете ?
6. RonX01 325 10.07.19 17:00 Сейчас в теме
(5) Спасибо за отзыв и вопрос.

Конечный автомат здесь рассматривается не как распознаватель языка, а как устройство управления и соответственно оперирует немного другими терминами - входные воздействия (делятся на события (Е) и входные переменные (Х)), выходные воздействия (Z) и управляющие состояния (Y).
Не всегда автомат имеет события (Е). Если же автомат событийный, то он как правило, запускается по событию, а входные переменные (Х) могут быть опрошены в любой момент.

Поиск управляющих состояний (Y) в сущности со сложным поведением часто является сложной творческой задачей.

Авторы книги про автоматное программирование разделяют состояния на управляющие и вычислительные. Первые можно условно назвать качественными, а вторые количественные. По вычислительным состояниям граф построить невозможно, либо возможно, но был бы бесполезен.

Поэтому "в процессе выделения управляющих состояний приходится внимательно исследовать описание сущности со сложным поведением в поисках набора "ситуаций", в которых поведение сущности имеет качественные особенности".
7. pm74 203 11.07.19 14:13 Сейчас в теме
(6) интересно
управляющие состояния (Y) это те случаи когда при наступлении события Y управление передается вложенному КА ?
8. RonX01 325 11.07.19 17:27 Сейчас в теме
(7) Да, при наступлении события управление передается КА.
В игре "змейка" несколько КА и для них сделана следующая иерархия: А0 -> А3 -> А1 -> А2. Таким образом внешнее событие, например "е1_НажатаКнопкаВерх" всегда передает управление А0. Дальше если А0 в состоянии Игра, то управление передается А3 с тем же событием. В свою очередь А3 передает управление А1, НО в зависимости от своего состояния может передать другое событие (взять из очереди, которую сгеренировал автопилот). И в завершении А1 пределает управление А2. Это похоже на поиск в глубину на графе.
Когда автоматов несколько то приходится думать о схеме взаимодействия, иначе может получиться рекурсия. Поэтому я и сделал передачу событий сверху вниз.

Я посмотрел, у меня на схеме связи А3 написаны события (е1 и др.), на самом деле их правильно перенести в схему А0.
9. RonX01 325 11.07.19 17:39 Сейчас в теме
(7) Номерация КА делалась по времени разработки. Сначала я сделал А0, А1 и А2. Это все работало и пару месяцев лежало. После я захотел сделать новую функцию - автопилот и для этого пришлось сделать еще один КА с порядновым номером А3. Таким образом для себя я проверил насколько всё это дело масштабируемо. Оказалось всё очень хорошо. Спустя пару месяцев, глядя на спецификацию я понял, что для автопилота необходимо еще один КА, сначала спроектировал его "на бумаге" и потом закодил. На удивление ничего не поломалось. Тестирование тоже заняло мало времени, требовалось лишь проверить правильность поведения во всех состояних нового автомата и переходах.
10. pm74 203 12.07.19 09:48 Сейчас в теме
(9)
Тестирование тоже заняло мало времени, требовалось лишь проверить правильность поведения во всех состояних нового автомата и переходах.

как вы их тестируете ? подаете некоторые события на вход и делаете трассировку?
Делаете проверку на зацикливание ?
кстати у Шалыто есть книга про формальную верификацию КА я ее полистал по диагонали , очень много математики , но суть (как мне кажется) сводится к тому , что можно верифицировать некоторые атомарные утверждения на графе переходов преобразованом в модель Крипке
12. RonX01 325 14.07.19 08:48 Сейчас в теме
(10) Я читал, что формальных тестов около 32 штук чтоли, но их я не использую.
Да, я делаю трассировку интерактивно. Для этого каждый автомат в режиме предприятия при запуске пишет всё в протокол (текстовый документ на форме).
Я же смотрю граф перехода и инициирую события, потом проверяю по протоколу поведение. Ошибки можно заметить сразу. Обычно это поведение не то, которое я ожидаю, тогда в протокле я почти сразу нахожу место которое, например, не соответствует графу перехода, либо понимаю, что поведение входных либо выходных воздействий не правильное. Опять же по протоколу я знаю какие переменные и действия проверить, потому как в протоколе пишутся например, х1_ЭтоВходнаяПеременная или z1_Действие.
Чтобы быстро находить места, в коде так же именую процедуры и функции как в графе. Поскольку код автомата у меня не генерируется, а пишется в ручную, то и ошибки могут возникать в кодировании графа перехода. Такие ошибки по протоколу легко находятся, в будущем думаю найти способ для генерации кода, тогда и ошибок такого рода не будет (у меня эти ошибки редкие), да и не буду тратить время на кодирование графа.
Следующие типы ошибок - ошибки во входных переменных, либо действиях. Их либо отлаживаю в конфигурации (ставлю точку останова) либо можно обнаружить ошибку прочитав код.
Но в основном всё работает сразу, и если честно тестирование со чтением логов я провожу для того, чтобы выявить скрытые ошибки и проанализировать поведение сложных моментов.
Зацикливание тоже можно увидеть в протоколе. В общем как-то так.
11. pm74 203 12.07.19 10:45 Сейчас в теме
оставлю здесь
обработка(шутка) написана в автоматном стиле
Прикрепленные файлы:
Лампа.epf
13. RonX01 325 14.07.19 09:25 Сейчас в теме
(11) Вложил свои 5 копеек коментарием в вашей публикации Сборка автомата (с примерами) :)
14. RustIG 1834 21.08.19 23:36 Сейчас в теме
(0) можно пошучу ?
"На нижнем слайде вы видите как устроен помощник закрытия месяца. Как говорится, без поллитры не разобраться..." :)
Прикрепленные файлы:
16. RonX01 325 22.08.19 05:19 Сейчас в теме
(14) :) и чтобы окончательно "убить" бухгалтера по кнопке "Подробнее" будет открываться схема связей.
15. RustIG 1834 21.08.19 23:46 Сейчас в теме
(0) интересные статьи у вас
17. RonX01 325 22.08.19 05:24 Сейчас в теме
Оставьте свое сообщение