Как проверить правильное имя метода для объекта в Pascal? - PullRequest
0 голосов
/ 15 апреля 2020

У меня есть класс (персонаж) с унаследованными классами (solider, medi c et c), которые имеют c методы, связанные с игрой. Например, Shoot or Heal.

Я хочу, чтобы пользователь мог, например, ввести Heal, и программа может проверить, какой тип символа у них есть, и, следовательно, посмотреть, является ли это действительным именем метода в этот объект.

Я знаю, что это возможно на других языках, но не могу понять, как это сделать в Pascal. Он должен работать как Free Pascal, так и Delphi. Спасибо

1 Ответ

1 голос
/ 15 апреля 2020

Вам не нужно проверять правильность имени метода, чтобы сделать это, и, вероятно, это предпочтительнее, если вы этого не сделаете.

Вы можете проверить имя метода, используя RTTI , но это реализовано несколько иначе в Free Pascal, чем Delphi, (в частности, для расширенного RTTI).

Однако было бы гораздо проще реализовать собственный механизм поиска для разрешения имен, свойств и глаголов в игре в каком-либо словаре. Это было бы тривиально как в FP, так и в Delphi и не зависит от используемого компилятора. Это также позволило бы именам, используемым конечным пользователем, быть независимыми от имен, используемых в коде, что упростило бы интернационализацию и т. Д. c. Это также позволило бы избежать проблемы, которая возникла бы, если бы внутриигровой идентификатор содержал персонажа, не разрешенного в идентификаторе Pascal (например, пробел, акцентированный символ или что-либо еще).

PS: Вы этого не сделали спросите это, НО ... если бы я собирался написать текстовую игру любого размера, я бы серьезно подумал сделать это как гибрид Delphi Пролога: Delpi для gui и Пролог как гораздо более простой язык, на котором для кодирования внутриигровых действий, объектов и правил, и есть одна конкретная реализация, Amzi Prolog, которая имеет очень богатый интерфейс для взаимодействия с движком Prolog с Delphi -see https://www.amzi.com/#apls. Amzi раньше был коммерческим, но теперь PD, FWIW.

...