プログラムの背景: ユーザーはstring
、動詞と名詞の 2 つの単語のみを入力できます。この文字列を a にトークン化し、許可された動詞のaおよび許可された名詞の avector
と比較tokens[0]
します。vector
tokens[1]
vector
現在、特定の名詞に対して特定の動詞のみを実行できるようにする方法を見つけようとしています。たとえば、"take book" と書くと、それが許可されているというメッセージ (または何でも) が表示されますが、"take door" と書くとそうではありません。これまで、考えられる動詞ごとに値を持つclass
オブジェクトを作成しました (たとえば、 内で、 whichまたはforを作成できます)。bool
class Object
Object book
m_take = true
false
Object door
ただし、これらのオブジェクトをユーザー入力に関連付けるのに問題があります。たとえば、次のようなことができるようにしたいと考えてい
ます。
2) プログラムは、入力に受け入れ可能な単語が含まれているかどうかを (個別に) チェックします。
3)オブジェクトに対して実行可能なアクションの bool 値を取得する関数であると見なし、プログラムは を取得し、 の場合は実行します(例: )。このようにして、すべてのオプションを手動で検討して、、、などの無限のリストを作成することなく、すべての正当な動詞と名詞で使用できる に1 つのサイクルのみを含めることができます。tokens[0]
tokens[1]
getstat()
tokens[1].getstat(tokens[0])
true
tokens[0].tokens[1]()
book.take()
if
main()
if
else if
これがまったく混乱している場合は申し訳ありません。変数をオブジェクト名として使用できないことはわかっていますが、動詞と名詞のすべての組み合わせと一致を考慮するサイクル内でサイクルを実行するよりも、これを行うためのより良い方法があると確信しています。現時点ではそれぞれ 3 つほど試していますが、これが機能するようになったら拡張する予定です。可能性のあるすべての動詞と名詞を複数回ハードコーディングする必要がある場合、すべての変更を追跡するのは悪夢です。ソースコード。(また、ソース全体を投稿できなくて申し訳ありません。今は非常に長いファイルです!) 正しい方向へのヘルプ/ヒントをありがとう!