Я заробляю крапку і натискаю пригодницьку гру, і наразі намагаюся розібратися, як найкраще реалізувати командну систему.
Припустимо інтерфейс стилю Monkey Island або Maniac Mansion з палітрою дієслів та предметів на сцені та в інвентарі. Клацнувши на них, ви створюєте речення для виконання.
наприклад, ви можете натиснути, look at
а потім дерево, щоб отримати "погляд на дерево" або натиснути на яблуко, а потім give
, а потім дівчинку, щоб отримати "подарувати яблуко дівчині".
Існує три можливі форми речення:
verb
, наприклад "зберегти"verb noun
, наприклад "зібрати яблуко", "подивитися на восьминога"verb noun noun
, наприклад, "подаруйте соління шаленому собаці", "використовуйте лом із баклажаном соління"
У різних ситуаціях я хочу, щоб дії, які виконувались, визначалися різними об'єктами.
Наприклад, для give
дієслова може бути визначена дія за замовчуванням, яка змушує персонажа сказати щось на кшталт "Я вважаю за краще би повісити на це", або шалена собака може визначити дію, де вона їсть все, що ви намагаєтеся надати їй. .
Якщо інтерфейс повинен працювати як Maniac Mansion, тоді ви будуєте пропозицію, а потім повідомляєте його виконувати (в Maniac Mansion, клацаючи речення, або клацаючи ще раз останнє, на що натиснули).
Якщо він працює як Monkey Island, речення виконується, як тільки воно закінчиться, що створює проблему для дієслів типу, use
які іноді можуть приймати один іменник, а в інший раз два.
То як би ви реалізували систему, яка це справляє?
look
це дієслово з