Quantcast
Channel: C#タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9703

C#でカノジョをつくる(13日目)

$
0
0
お疲れ様です。たなしょです。 今日はカノジョの原型となるモデルを作成しました。 ようやく第一歩ですね。 完成したもの まだ「おはよう」などのあいさつを返すことはできませんが、一方向のコミュニケーションは取れます。 画像はillustACさんから拝借しました。(かわいい!) カノジョのなかみ /// <summary> /// RandomResponderまたはRepeatResponderを /// ランダムに選択して応答メッセージを返す /// </summary> /// <param name="input">ユーザ-の発信</param> /// <returns>応答メッセージ</returns> public string Dialogue(string input) { Random rnd = new Random(); int num = rnd.Next(0, 10); if (num < 6) { _responder = _res_random; } else { _responder = _res_repeat; } return _responder.Response(input); } このDialogueメソッドがカノジョの心臓部分です。 Random関数でランダムな数値(0~9)を生成します。 6より小さい場合ランダムなことを返して、6以上なら入力した文字と同じ文字を出力します。(オウム返しな受け答え) ランダムな受け答えのなかみ class RandomResponder : Responder { private string[] _responses = { "めっちゃいい天気!", "確かにそうだね", "10円拾った", "じゃあこれ知ってる?", "それねー", "それかわいい♪" }; /*~中略~*/ // Response method public override string Response(string input) { Random rnd = new(); return _responses[rnd.Next(0, _responses.Length)]; } } 0~5までの要素に書く文字列を格納しています。 Responseメソッドが呼ばれるとランダムで0~5までの数値を生成して配列の中身を参照しています。 オウム返しのなかみ class RepeatResponder : Responder { /* 中略 */ // Response Method public override string Response(string input) { return String.Format("{0}ってなに?", input); } } オウム返しなので単純に引数をもってきて「ってなに?」の文字列と合わせて、 合成した文字列を返却しているだけです。 「話す」を押したときのうごき private void button1_Click(object sender, EventArgs e) { string value = textBox1.Text; if (string.IsNullOrEmpty(value)) { label1.Text = "なに?"; } else { string response = _chan.Dialogue(value); label1.Text = response; PutLog("> " + value); PutLog(Prompt() + response); textBox1.Clear(); } } テキストボックスに何も入力せず「話す」ボタンを押すと「なに?」が表示されます。 テキストボックスに何か入力されている状態で「話す」ボタンを押すと、Dialogueメソッド呼ばれて受け答えの処理が実行されます。 そして左端のプロンプトに会話内容を出力します。 最後に 今日はカノジョの原型を作成しました。 まだ一方向のコミュニケーションしか取れませんが、これからある程度会話のキャッチボールができるように改良していきたいです。

Viewing all articles
Browse latest Browse all 9703

Trending Articles