Let's try programming

ふたりごと

  • HOME »
  • ふたりごと
今回、制作したアプリはコミュニケーション系のアプリでタイトルは『ふたりごと』です。
自分が打ったコメントに対してコンピュータがその言葉に反応して適切な言葉を返してくれます。
アプリ画面はこちらになります。
可愛い感じにデザインしました(*´ェ`*)
 
futari5
・コメント移動はLIN◯とは逆の下から上
・左側がコンピュータ、右側がユーザーになります。
 
 
 
 
 
 
 
 
ソースコードはこちら
 
 ChatActivity
package jp.touch.chatapplication;

import android.graphics.Color;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.Gravity;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.TranslateAnimation;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;

import java.util.Calendar;
import java.util.Random;

public class ChatActivity extends AppCompatActivity implements View.OnClickListener {

    private EditText mInputMessage;
    private Button mSendMessage;
    private LinearLayout mMessageLog;
    private TextView mCpuMessage;
    final Random r = new Random();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_chat);

        //XMLのViewを取得します
        mInputMessage = (EditText) findViewById(R.id.input_message);
        mSendMessage = (Button) findViewById(R.id.send_message);
        mMessageLog = (LinearLayout) findViewById(R.id.message_log);
        mCpuMessage = (TextView) findViewById(R.id.cpu_message);

        mSendMessage.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        if (v.equals(mSendMessage)) {
            //sendボタンが押された時の処理
            //エディットテキストに入力された文字をstring型に変更
            String inputText = mInputMessage.getText().toString();
            //string型 変数を宣言
            String answer ="";
            //新しいテキストを作成
            TextView userMessage = new TextView(this);
            int messageColor = getResources().getColor(R.color.message_color);
            userMessage.setTextColor(messageColor);
            //ユーザーテキスト背景取得
            userMessage.setBackgroundResource(R.drawable.user_message);
            //ユーザーテキストに変換したstring型を引数に設定
            userMessage.setText(inputText);
            //size
            userMessage.setTextSize(16);
            //color
            userMessage.setTextColor(Color.BLACK);
            //LinearLayoutParamsを宣言
            LinearLayout.LayoutParams userMessageLayout = new LinearLayout.LayoutParams(
                    LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT);
            userMessageLayout.gravity = Gravity.END;
            final int marginSize = getResources().getDimensionPixelSize(R.dimen.message_margin);
            userMessageLayout.setMargins(0, marginSize, 0, marginSize);

            mMessageLog.addView(userMessage, 0, userMessageLayout);
            if (inputText.contains("げんき")) {
                int a = r.nextInt(5);
                switch (a) {
                    case 1:
                        answer = "(。・д´・。)モチロン";
                        break;
                    case 2:
                        answer = "(*゚▽゚)*。_。)*゚▽゚)*。_。)ウンウン";
                        break;
                    case 3:
                        answer = "(。-`ω´-)ぅぃ";
                        break;
                    case 4:
                        answer = "(*´・∀・)*´-∀-)ウン";
                        break;
                    case 0:
                        answer = "(`・ω・´)ハイ";
                        break;
                }
        
            } else if (inputText.contains("つかれた")) {
                int b = r.nextInt(5);
                switch (b) {
                    case 1:
                        answer = "(人´エ`*)お疲れ様です♪";
                        break;
                    case 2:
                        answer = "(*´ノ0`)がんばっ♪";
                        break;
                    case 3:
                        answer = "オッチュ─(ノ*’з`*)ノ─♪";
                        break;
                    case 4:
                        answer = "オツカレサマデゴザイマス _○/|_";
                        break;
                    case 0:
                        answer = "よく頑張った(`・ω・´)";
                        break;
                }
            } else if (inputText.contains("いや")) {
                int c = r.nextInt(5);
                switch (c) {
                    case 1:
                        answer = "ヾ(*`ェ´*)ノフンガ~";
                        break;
                    case 2:
                        answer = "ヾ(メ`・д・´)ノ゙ コリャ-☆";
                        break;
                    case 3:
                        answer = "ρ(・ω`・、) イヂイヂ";
                        break;
                    case 4:
                        answer = "⊂彡☆))Д´)パーン";
                        break;
                    case 0:
                        answer = "( ゚Д゚)ノ占~<巛巛巛";
                        break;
                }
            } else if (inputText.contains("すき")) {
                int d = r.nextInt(5);
                switch (d) {
                    case 1:
                        answer = "(人´∀`)アリガトー♪";
                        break;
                    case 2:
                        answer = "私も好き!";
                        break;
                    case 3:
                        answer = "(〃ノωノ)";
                        break;
                    case 4:
                        answer = "(*´Д`*)ポポンッ";
                        break;
                    case 0:
                        answer = "(●´ω`●)ゞ エヘヘ♪";
                        break;
                }
            } else if (inputText.contains("しね")) {
                int e = r.nextInt(5);
                switch (e) {
                    case 1:
                        answer = "生きる!";
                        break;
                    case 2:
                        answer = " オコトワリ━━━( ゚ω゚ )━━━シマス!!!! ";
                        break;
                    case 3:
                        answer = "一緒に?";
                        break;
                    case 4:
                        answer = "( 。-ω-)-ω-)-ω-) シーン・・・";
                        break;
                    case 0:
                        answer = "い・や・で・す!";
                        break;
                }
            } else if (inputText.contains("しんどい")) {
                int f = r.nextInt(5);
                switch (f) {
                    case 1:
                        answer = "どしたの?";
                        break;
                    case 2:
                        answer = "(´・ω・)ノ大丈夫?";
                        break;
                    case 3:
                        answer = "寝よ!もう寝よ";
                        break;
                    case 4:
                        answer = "ほれ(´・ω・)つ■チョコ";
                        break;
                    case 0:
                        answer = "(´・ω・)つ凸リポビタン";
                        break;
                }
            } else if (inputText.contains("ありがとう")) {
                int g = r.nextInt(5);
                switch (g) {
                    case 1:
                        answer = "どういたしまして~(*^▽^*)";
                        break;
                    case 2:
                        answer = "(ヾノ・∀・`)イエイエ ";
                        break;
                    case 3:
                        answer = "【ィ】【ェ】【ィ】【ェ】*´艸`))";
                        break;
                    case 4:
                        answer = "イエ((o(・∀・`*)o))イエ";
                        break;
                    case 0:
                        answer = "☆彡(*・ω・)ノYou’re welcomeヽ(・ω・*)☆彡";
                        break;
                }
            } else if (inputText.contains("あほ")) {
                int h = r.nextInt(5);
                switch (h) {
                    case 1:
                        answer = "ウルセー ⊂( ・∀・) 彡 =͟͟͞͞(●)`Д´) ドゴッ";
                        break;
                    case 2:
                        answer = "激おこプンプン丸٩(๑`^´๑)۶";
                        break;
                    case 3:
                        answer = "ムカァパァンチ(●`Д´)=O)゚Д゚)ギャァ";
                        break;
                    case 4:
                        answer = "Σp(`□´)q ナニィィイイイ!!";
                        break;
                    case 0:
                        answer = "((o(★・ω・)人(・ω・☆)o)) ナ・カ・マ";
                        break;
                }
            } else if (inputText.contains("おは")) {
                int i = r.nextInt(5);
                switch (i) {
                    case 1:
                        answer = "ヾ(o´ェ`o)ノGOOD MORNING!!";
                        break;
                    case 2:
                        answer = "ォ’`ョ(´゚v゚`)ノ";
                        break;
                    case 3:
                        answer = "オハヨォ☆(≧∀≦*)ノ";
                        break;
                    case 4:
                        answer = "オハ───ヽ(○`・v・)人(・v・´●)ノ───ッ!!!";
                        break;
                    case 0:
                        answer = "(ヾ(。・ω・)ノ☆゚+.オハヨゥゥゥ゚+.☆";
                        break;
                }
            } else if (inputText.contains("ただいま")) {
                int j = r.nextInt(5);
                switch (j) {
                    case 1:
                        answer = "(*´エ`)ノ オカエリー♪";
                        break;
                    case 2:
                        answer = "オカエリ~!!ヽ(*≧ω≦)ノ";
                        break;
                    case 3:
                        answer = "オッカヽ(・ω・`。)ノイモヽ(´・ω・`)ノイモ゚+.ヽ(。´・ω・`。)ノ゚+. ホクホクー♪";
                        break;
                    case 4:
                        answer = "帰ってきた・・・・(((((゚Д゚;)))ガクガクブルブル";
                        break;
                    case 0:
                        answer = "キター ヾ(・ω・*)ノ オカエリーィ";
                        break;
                }
            } else if (inputText.contains("きらい")) {
                int k = r.nextInt(5);
                switch (k) {
                    case 1:
                        answer = "…ρ(・ω`・、) イヂイヂ";
                        break;
                    case 2:
                        answer = "(´;ω;`)ウゥゥ";
                        break;
                    case 3:
                        answer = "*゚Д゚)*゚д゚)*゚Д゚)エエェェ";
                        break;
                    case 4:
                        answer = "わたしは好き♥";
                        break;
                    case 0:
                        answer = "(。・´д`・。)エェ~";
                        break;
                }
            } else if (inputText.contains("あそぼ")) {
                int l = r.nextInt(5);
                switch (l) {
                    case 1:
                        answer = "ヾ(o´∀`o)ノワァーィ♪";
                        break;
                    case 2:
                        answer = "ヽ(^∀^*)ノあーい♪";
                        break;
                    case 3:
                        answer = "(●ゝω・)ゞラジャ⌒☆";
                        break;
                    case 4:
                        answer = "(・∀・)9 おうっ!";
                        break;
                    case 0:
                        answer = "【●´Д`●】b OKナノラ";
                        break;
                }
            } else if (inputText.contains("おやすみ")) {
                int m = r.nextInt(5);
                switch (m) {
                    case 1:
                        answer = "ルンルン♪ヾ(´ I `*)o<【:*・゚☆†オヤスミナサイ†.。.:*・゚】";
                        break;
                    case 2:
                        answer = "☆GOODNIGHT☆ (;д;)ノ~▽”。・゜゜・";
                        break;
                    case 3:
                        answer = "ρω*)ノ オヤスミー";
                        break;
                    case 4:
                        answer = "【寝室】*-ω-)ノ オヤスミー♪";
                        break;
                    case 0:
                        answer = "(´っω・。`)゚o* またねぇ*o゚";
                        break;
                }
            } else if (inputText.contains("はい")) {
                int o = r.nextInt(5);
                switch (o) {
                    case 1:
                        answer = "壁∥*´ω`)bグッ";
                        break;
                    case 2:
                        answer = "゚+.゚(*´∀`)b゚+.゚イイネェ";
                        break;
                    case 3:
                        answer = ".゚+.(o´∀`o)゚+.゚イイ!!";
                        break;
                    case 4:
                        answer = "(゚v`d)ベリグー♪.";
                        break;
                    case 0:
                        answer = "((〃'・∀・)ノ)-ω-`*)ヨシヨシ";
                        break;
                }
            } else if (inputText.contains("むり")) {
                int p = r.nextInt(5);
                switch (p) {
                    case 1:
                        answer = "ガンガレ(゚Д゚,,)";
                        break;
                    case 2:
                        answer = "o(*・ω・)○ ファイトー!";
                        break;
                    case 3:
                        answer = "頑張ってこいや!!>p(●`Д´●)ノ";
                        break;
                    case 4:
                        answer = "(●o≧д≦)o頑張れェェェ♪";
                        break;
                    case 0:
                        answer = "((〃'・∀・)ノ)-ω-`*)ヨシヨシ";
                        break;
                }

            } else if (inputText.contains("時間")) {
                Calendar cal = Calendar.getInstance();
                int hour = cal.get(Calendar.HOUR);
                int minute = cal.get(Calendar.MINUTE);
                int second = cal.get(Calendar.SECOND);  //秒
                answer = String.format("今の時間はね~%1$d時%2$d分%3$d秒だよ", hour, minute, second);

            } else {
                int n = r.nextInt(5);
                switch (n){
                    case 1:
                        answer = "(。・д´・。) ほほぅ";
                        break;
                    case 2:
                        answer = "( ゚Å゚)ホゥ";
                        break;
                    case 3:
                        answer = "ホッ(〃 ‘ o’)(〃 ‘ O’)ホー";
                        break;
                    case 4:
                        answer = "(*´・∀・)*´-∀-)ウン";
                        break;
                    case 0:
                        answer = "(`・ω・´)ハイ";
                        break;
                }
            }
            final TextView cpuMessage = new TextView(this);  //内部クラスから参照する為,final
            cpuMessage.setBackgroundResource(R.drawable.cpu_message);
            cpuMessage.setText(answer);
            cpuMessage.setGravity(Gravity.START);

            mInputMessage.setText("");
            TranslateAnimation userMessageAnimation = new TranslateAnimation(mMessageLog.getWidth(), 0, 0, 0);
            userMessageAnimation.setDuration(1000);
            userMessageAnimation.setAnimationListener(new Animation.AnimationListener() {

                @Override
                public void onAnimationStart(Animation animation) {
                }

                @Override
                public void onAnimationEnd(Animation animation) {
                    //コメントサイズに合わせる
                    LinearLayout.LayoutParams cpuMessageLayout = new LinearLayout.LayoutParams(
                            LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
                    cpuMessageLayout.gravity = Gravity.START;
                    //スキマを作る
                    cpuMessageLayout.setMargins(marginSize, marginSize, marginSize, marginSize);
                    mMessageLog.addView(cpuMessage, 0, cpuMessageLayout);
                    TranslateAnimation cpuAnimation = new TranslateAnimation(-mMessageLog.getWidth(), 0, 0, 0);
                    cpuAnimation.setDuration(1000);
                    cpuMessage.setAnimation(cpuAnimation);
                }

                @Override
                public void onAnimationRepeat(Animation animation) {
                }
            });
            userMessage.startAnimation(userMessageAnimation);
        }
    }
}
以上がメインプログラムになります。
見てもらえればわかる通り、中身は登録したコメント(単語)があれば、それに対応した言葉を乱数を使いコメントを返すようにプログラムされております。
逆を言えば登録されてない単語をコメントされると全く対応できなくなっております。
(一応デフォルトで対応する返信コメントは用意していますが)
この問題をどう解決していくかが今後の課題になります。

 

 

 

PAGETOP
Copyright © Goran All Rights Reserved.
Powered by WordPress & BizVektor Theme by Vektor,Inc. technology.