Каким будет самый простой способ проверить эквивалентность нового языка языку WHILE? - PullRequest
0 голосов
/ 17 июня 2020

Последний год я работал над простым редактором 2D видеоигр. Несмотря на то, что мне удалось реализовать любую игру, которую я пробовал до сих пор, я хотел бы теоретически подтвердить ее универсальность. Моя идея состоит в том, чтобы проверить его, проверив его эквивалентность с языком WHILE (очень похож) или доказав, что это Полный Тьюринг.

Игры, созданные редактором, имеют следующие особенности:

  • Есть только один тип игрового объекта. По аналогии с агентами в многоагентной системе.
  • Они имеют одинаковый набор свойств (геометрия c, рендеринг, физика, звук и т. Д. c.), И они также могут хранить новые свойства (числовые c и логические) при необходимости.
  • Каждый игровой объект может иметь столько скриптов, сколько необходимо. Они выполняются последовательно.
  • Сценарии определяются как двоичные деревья решений (с вложенной структурой IF-THEN-ELSE), состоящие из условий и действий.
  • Условия используются для управления потоком сценария, и они полагаются на логические выражения с операторами отношения (=,! =, <, <=,> =,>). Нет логических операторов, таких как И или ИЛИ. Редактор предоставляет всего 5 различных условий.
  • Действия - это элементы, которые создают или уничтожают игровые объекты или изменяют их свойства. Его работа основана на арифметических c выражениях. Всего в редакторе всего 6 различных типов действий.
  • Также редактор не позволяет использовать сложные структуры данных, такие как векторы или списки.

Отличия между мой язык и язык WHILE:

  • В нем нет циклов. Вместо этого он полагается на постоянную оценку игры l oop. Таким образом, существует глобальный неявный l oop.
  • Он не имеет команды SKIP.

До сегодняшнего дня мне удалось завершить разработку всех игр что я пробовал. Некоторые из них - известные аркадные игры, такие как Asteroids, Blocks, Frogger, Lunar Lander, Pacman, Pong, Tetris или MarioBros. Я не нашел ни одного, что не смог бы разработать. Я даже реализовал алгоритм A *.

До сегодняшнего дня мне удалось завершить разработку всех игр, которые я пробовал. Некоторые из них - известные аркадные игры, такие как Asteroids, Blocks, Frogger, Lunar Lander, Pacman, Pong, Tetris или MarioBros. Я не нашел ни одного, что не смог бы разработать. Я даже реализовал алгоритм A *.

При всем этом, что было бы самым простым способом проверить эквивалентность с языком WHILE? Я хочу официально подтвердить и продемонстрировать, что мой язык позволяет мне создавать любые игры.

...