2

私は大学の最初の学期にいて、C++ でテキスト アドベンチャー ゲームを作成する必要があります。これまで、配列構造体、およびポインターを実行してきました。問題をグーグルで検索しようとしましたが、他のほとんどのユーザーはまだ行っていないクラスを使用しています。

教授はGo Northopen door with keyなどのコマンドを使用するように求めています。私は、北に行く
などのホットキーを使用してなんとか機能させましたnが、明らかに彼が私たちに望んでいるようにやりたいと思っています。

私の質問は次のとおりです。複数の文字列からなるコマンドを作成するにはどうすればよいですか?

問題は、コマンド、オブジェクト、および (この部屋で 2 つを組み合わせる可能性がある場合) 前置詞と別のオブジェクトのライブラリを作成する必要があることです。各ライブラリには、使用する単語があるはずです。たとえば、コマンドは次のとおりです。使用、移動、話す、読むなど...

4

5 に答える 5

1

http://www.cplusplus.com/reference/iostream/istream/getline/から取得

#include <iostream>
using namespace std;

int main () {
  char name[256], title[256];

  cout << "Enter your name: ";
  cin.getline (name,256);

  cout << "Enter your favourite movie: ";
  cin.getline (title,256);

  cout << name << "'s favourite movie is " << title;

  return 0;
}
于 2011-12-07T15:50:09.433 に答える
0

マルチワードコマンドの読み方を尋ねている場合はgetline()、入力行を文字列として読み取り、次にstringstreamその行から各単語を読み取るために、次のように使用できます。

std::string line;
while (std::getline(std::cin, line)) {
    std::istringstream stream(line);
    std::string word;
    while (stream >> word) {
        // do something with this word
    }
}
于 2011-12-07T15:57:04.737 に答える
0

getline または scanf 関数を検索してみてください。どちらも標準入力からフォーマットされた文字列を読み取ります(あなたの場合はプロンプトコマンド)。cin を直接使用することもできます。問題は、cin が最初の空白までの文字で構成される文字列を返すことです。

于 2011-12-07T15:48:31.327 に答える
0

cinコマンドを読むために使用していると思いますか?その場合、 に入力を取得し、stringを使用findしてその中のスペースを見つけ、substrコマンドとその引数を抽出します。後で比較しやすいように、すべての部分文字列を小文字または大文字に変換してみてください。

次に、コマンドの部分文字列を取得し、それをすべてのコマンドと比較します。一致するものが見つかったら、コマンドを実行する特別な関数を呼び出して、引数を関数に渡します。たとえば、「go」コマンドの場合go、引数として方向を取る関数を使用できます。

于 2011-12-07T16:02:20.467 に答える
0
  1. のようなものを使用してstd::string input << std::cin;、テキスト行を入力します。
  2. 文字列を空白/スペース文字で分割します。

次のステップ:

  1. コマンドを/や/などの動詞/名詞のペアにトークン化するOpenDoorGoNorth
  2. 動詞を表すクラスを作成し、オブジェクトまたは特定の名詞を操作するように設計します

調べるべきいくつかの主題:

于 2011-12-07T16:00:33.870 に答える