Javaでじゃんけんアプリ

初投稿です。
さんざん書かれているじゃんけんアプリを作成しました。

作成期間：２日
言語：Java
環境：MacOS、ターミナル
テキストエディター：Atom


コマンドで操作するゲームです。
ルールは以下の通りです。

- ３回勝負
- じゃんけんの手は配列で管理
- CPUはランダムな数値を作成して手を決める
- プレイヤーは入力された文字を数値に変えて手を決める
- 数値で勝敗を判定する
- 最後に勝負の結果を表示する

実際の画面はこんな感じです。

<img width="727" alt="スクリーンショット 2018-08-23 2.15.35.png" src="https://qiita-image-store.s3.amazonaws.com/0/257818/77cccc3a-37e3-5ec3-d710-483cbe99c90f.png">





### Jankenクラス
対戦のクラスです。

```java:Janken.java
package jankenapp;

public class Janken {
  static String[] handList = {"グー","チョキ","パー"};

  static void startMessage() {
    System.out.println("--------------------");
    System.out.println("じゃんけんをしましょう！３回勝負です！");
  }

  static void endMessage() {
    System.out.println("ありがとうございました！また遊びましょうね！");
    System.out.println("--------------------");
  }

  public static void main(String[] args) {
    Player player = new Player();
    CPU cpu = new CPU();
    Judge judge = new Judge();

    // 開始の挨拶
    startMessage();

    for (int i = 1; i <= 3; i++) {
     System.out.println("【" + i + "回戦目】");

     // CPUが手をランダムに作成
     cpu.setHand();
     // Playerが手を入力
     player.setHand();
     // Player,CPUの手を表示
     System.out.println("・あなたの手：" + handList[player.getHand()]);
     System.out.println("・わたしの手：" + handList[cpu.getHand()]);
     // 判定
     judge.judgement(cpu.getHand(), player.getHand());
    } // 繰り返し終わり
    // 結果を表示
    judge.result();
    // 終了の挨拶
    endMessage();
  }
}
```

### Playerクラス
Scannerを使って手を文字列で取得し、switch文で数値化しています。

```java:Player.java
package jankenapp;
import java.util.*;

public class Player {
  int hand;

  public void setHand() {
    System.out.print("「グー」「チョキ」「パー」のどれかを入力してください。＞");
    Scanner sc = new Scanner(System.in);
    String inputHand = sc.nextLine();

    switch(inputHand) {
      case "グー":
        hand = 0;
        break;
      case "チョキ":
        hand = 1;
        break;
      case "パー":
        hand = 2;
        break;
      default:
        System.out.println("間違えたので終了します…。");
    }
  }

  public int getHand() {
    return hand;
  }
}
```

### CPUクラス
randomメソッドでランダムに手を決めています。

```java:CPU.java
package jankenapp;
import java.util.*;

public class CPU {
    int hand;

    public void setHand() {
     double rand = Math.random() * 3;
     hand = (int)rand;
    }

    public int getHand() {
      return this.hand;
    }
}
```

### Judgeクラス
勝敗の判定と勝負の結果のクラスです。
判定方法はそれぞれの手を数値化し、（CPUの手-プレイヤーの手+３）%３で求めています。
プレイヤーの勝敗引き分けの回数をカウントし、結果をｉｆ文で表示しています。

```java:Judge.java
Package jankenapp;

public class Judge {
  int judge;
  int win;
  int lose;
  int even;

  public void judgement(int cpuHand, int playerHand) {
    judge = (cpuHand - playerHand + 3 ) % 3;

    switch(judge) {
      case 0:
        System.out.println("あいこです！");
        even++;
        break;
      case 1:
        System.out.println("あなたの勝ちです！");
        win++;
        break;
      case 2:
        System.out.println("あなたの負けです！");
        lose++;
        break;
      default:
    }
    System.out.println("--------------------");
  }

  public void result() {
    System.out.println("【勝敗の結果】");
    System.out.println("勝ち：" + win + "回");
    System.out.println("負け：" + lose + "回");
    System.out.println("あいこ：" + even + "回");
    System.out.println("");
    if (win > lose) {
      System.out.println("この勝負はあなたの勝ちです！おめでとう！");
    } else if (win < lose) {
      System.out.println("この勝負はあなたの負けです！どんまい！");
    } else {
      System.out.println("この勝負は引き分けです！");
    }
  }
}
```

独学なのでお見苦しい箇所がありましたらすみません。
ご助言など頂けますと嬉しいです。

最後まで閲覧ありがとうございました。


【参考】
[じゃんけんアルゴリズムをちょっと応用](https://qiita.com/mpyw/items/3ffaac0f1b4a7713c869)
（判定式を参考にさせていただきました。）


追記
(8/23)入力を間違えてもデフォルト値でグーが出てしまうことに気づきました。対策します。