KHCmaster君には友達がいません。
少ない、というレベルではなく1人もいません、ゼロ、φ(空集合の意)です。
もちろん彼は人嫌いというわけではありません、実際、ミクさんという女の子に夢中です。
しかしながら、その思いは一方的で叶うことがないと彼も思い込んでいます。
そんな彼のためにミクさんと会話できるスクリプトを書いてあげましょう!!
---------------------------------------------------------------------------------------
というのが今回の筋書きです。
彼のために素敵なスクリプトを作成してあげましょう。
まず、仕様を考えます。
ミクさんが最初に挨拶をして名前を聞きます。(ミクさんは天使なので話しかけてくれます)
ミク「はじめまして、ミクです。あなたのお名前は?」これに対して彼は自分の名前を入力します。
KHCmasterすると、ミクさんがこれに対して返答します。
ミク「KHCmasterさんですね、よろしくお願いします。」これで終わりです、簡単ですね。(きっと彼も満足してくれるでしょう)
どのようにすればいいでしょうか?
第1回の内容を使うとConsole.WriteLineを使えばミクさんがしゃべる部分はできそうですね。
早速作ってみましょう。
こんな感じですね。
現状ではミクさんが挨拶をするだけです。次に彼に自分の名前を入力をしてもらうためのノードを追加します。
ここでは、Console.ReadLineというノードを使用します。
このノードは実行されるとコンソール上で入力を待ち、エンターが押されると入力待ちを終了し、入力された文字列をValueから取得できるというものです。
ですが、どのように繋ぐとミクさんが挨拶した後に入力待ちをできるのでしょうか?
それはさらに別のノードを追加する必要があります。
Logic.Sequentialというノードは実行されるとOut0,Out1,…という順に順番に実行してくれるノードです。
今回は、Misc.EntryPointのStartをLogic.SequentialのInにつないで、Logic.SequentialのOut0からミクさんの挨拶につなぎ、Out1からConsole.ReadLineに繋ぎます。
こんな感じですね。
これで入力を処理する部分までできました。
最後にミクさんが彼の名前を呼ぶ部分を作りましょう。
出力する文字列は
ミク「(Console.ReadLineで読み取った文字列)さんですね、よろしくお願いします。」
です。
なんとなく
ミク「
(Console.ReadLineで読み取った文字列)
さんですね、よろしくお願いします。」
の順にConsole.WriteLineで表示すればいい気がしますが、これでは改行が入ってしまうため不自然です。
そこで、末尾に改行の入らないConsole.Writeを使用します。
Console.Writeで"ミク「"を出力し、別のConsole.WriteでConsole.ReadLineで読んだ文字列を表示し、最後にConsole.WriteLineで"さんですね、よろしくお願いします。」"を表示します。
こんな感じですね。
早速実行してみましょう。
実行を押すとミクさんが挨拶します。
ここですばやくコンソールをアクティブにし、入力する必要があります。
FlowScriptControlTestではスクリプトが無限ループに陥ったときのために、実行時間が長くなると自動的に終了させる処理が働きます。
入力が遅いと以下のようになってしまいます。
入力を早くやると以下のように挨拶を返すようになります。
ミクさんが挨拶を返してくれましたね。
今回のまとめですが、
・Console.ReadLineで入力を受け取る
・Logic.Sequentialで連続した処理を行う(FlowScriptでよく使うので覚えておいてください。)・Console.Writeで改行なしで出力
となっています。
今回の講座に関する質問はこのスレッドで受け付けています。
次回は簡単な数値計算を行う予定です。