工学系大学院生のブログ

2人の大学院生による雑記ブログ

第1-2回 Androidアプリのリバーシをつくる(ボタン処理)[Java, Android Studio]

第1-1回 Androidアプリのリバーシをつくる

第1-2回 Androidアプリのリバーシをつくる(ボタン処理)

第1-3回 Androidアプリのリバーシをつくる(Google Playへの登録)


今回作成したアプリ
https://play.google.com/store/apps/details?id=com.dualreversi.reversi


Github
https://github.com/hide-dog/DualReversi




前回は背景やボタンを設定しました。


今回はボタンを押したときの挙動について記載します。


ボタンの処理は意外とあっさりしており、下記のようになっています。

  // --------------------------------------
    // at Click
    // --------------------------------------
    @Override
    public void onClick(View v) {
        // get Id (押されたボタンのIDを取得)
        int id = v.getId();

        // SWButton (スイッチボタン)
        if (id==IdButtonBW){
            // onButtonBW
            onButtonBW(black_true);
            // check status
            CalStatus();
            // set view
            SetViewStatus();
        }
        // reset button (リセットボタン)
        else if (id == IdButtonReset){
            // set initial condition
            SetInitialStatus();
            // reset text player
            CheckTextPlayer(false);
            // reset BW button
            onButtonBW(false);
            // check status
            CalStatus();
            // set view
            SetViewStatus();

            // decision
            DecisionWinORLose();

            // remove text Win or lose
            TextView tv = (TextView) findViewById(IdTextWinLose);
            tv.setVisibility(View.INVISIBLE);
        }
        // undo button  (1手戻るボタン)
        else if (id == IdButtonUndo){
            // undo button
            if (IteStatusHistory == 0){
                IteStatusHistory = 1;
            }

            // set initial condition
            UndoStatus();

            // set view
            SetViewStatus();

            if (IteStatusHistory != 0){
                // set text player
                CheckTextPlayer(BoolPlayer);
                // set text BW
                onButtonBW(!BoolPlayer);
            }else{
                // set text player
                CheckTextPlayer(false);
                // set text BW
                onButtonBW(false);
            }
            // check status
            CalStatus();
            // set view
            SetViewStatus();

            // decision
            DecisionWinORLose();

            // remove text Win or lose
            TextView tv = (TextView) findViewById(IdTextWinLose);
            tv.setVisibility(View.INVISIBLE);
        }
        // button on board (マス目のボタン)
        else if (11 <= id &amp;&amp; id <= 88){
            // convert id to status_id
            int sj = (id % 10) - 1;
            int si = (int) Math.round((id - sj)*0.1) -1 ;

            // set black or white
            CheckOnLineReversi(si, sj);
            // set text player
            CheckTextPlayer(BoolPlayer);
//            // set text BW
//            onButtonBW(!BoolPlayer);
            // check status
            CalStatus();
            // decision
            DecisionWinORLose();
            // set view
            SetViewStatus();
            // update status history
            UpdateStatus();
        }
    }



前回の配置の際に、IDを設定したことは覚えていますでしょうか。
そのIDを用いて、場合分けを行っています。


場合分け後は、各関数を順に実行させています。



どちらの番なのか間違わないように、そしてどちらの番でも問題なく動くように番号やtrue, falseを駆使して整理します。



後は、具体的にリバーシに必要な関数を追加します。

・マス目に置かれたときにどの石がひっくり返るか計算する

・意思を置くことのできる場所のボタンを有効かする

・1手戻る様に盤面を記録する

・勝負が確定したかどうか判定する

などなど



上記の動作は、関数名事に分けていますが一つのファイル内に収まっているので興味があれば見てみてください。


ここまでで、アプリ自体は完成しました。
自分のスマホで動かす分には問題ありませんが、どこからでもだれでもダウンロードできるようにします。



次回は、Google Playに登録したときの内容を記載します。



hide

このエントリーをはてなブックマークに追加

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です