

サイコロを振って、合計値が高い人の勝ち。というゲームをEclipseを用いて作成しています。

ルールとしては以下の流れになります。

  1. プレイヤーは3人
  2. 3回ずつサイコロを振り、各プレイヤーの合計値を出す
  3. 合計値が一番高い人の勝ち（引き分けの場合は引き分けとする）

しかし、引き分け判定の記載方法がわかりません。  
アドバイスをいただけないでしょうか。よろしくお願い致します。

**現在のコード:**

[code]

    package test;
    
    public class SaikoroGames {
    
      public static void main(String[] args) {
    
        // 各プレイヤーの合計値を代入
        int hokan[] = new int[3];
        
        // プレイヤー人数を決める
        int player = 3;
        int sum = 0;
        int dice = 0;
        
        int max = Integer.MIN_VALUE;
        // 人数分ループする
        for (int j = 0; j < player; j++) {
            System.out.printf("[%d] : ", j + 1);
          sum = 0;
          for (int i = 1; i <= player; i++) {
            dice = (int)(Math.random()*6)+1;
            System.out.print(dice + " ");
            sum += dice;
            
          }
          System.out.println();
          System.out.print("合計値 :" + sum);
          max = Math.max(max, sum);
          hokan[j] = sum;
          System.out.println();
          System.out.println();
        }
        // 勝者判定
        for (int j = 0; j < player; j++) {
          if (hokan[j] == max) {
              System.out.println();
            System.out.printf("勝者は[%d]、" , j + 1);
            System.out.print("合計値は" + hokan[j]);
          }
        }
      }
    }
    
[/code]


CC BY-SA 4.0
2020-11-30T06:14:06.100
72288
2020-11-30T19:31:39.233
2020-11-30T07:46:52.230
3060
42934
question
java
Java サイコロゲーム　引き分け判定の方法を教えてください。


最大値を獲得したプレーヤ(複数人の可能性あり)を先に抽出しておいて、  
後でそれらをまとめて出力する、という流れで処理するのはどうでしょうか。

[code]

    // 勝者判定
    // 最大値(max)を獲得したプレーヤをピックアップ
    List<Integer> winners = new ArrayList<>();
    for (int j = 0; j < player; j++) {
        if (hokan[j] == max) {
            winners.add(j);
        }
    }
    // maxを獲得したプレーヤとmax値を出力
    System.out.println();
    System.out.printf("勝者は");
    for (int winner : winners) {
        System.out.printf("[%d]", winner + 1);
    }
    // maxを獲得したプレーヤが2人以上なら引き分け
    if (winners.size() >= 2) {
        System.out.print("(引き分け)");
    }
    System.out.print("、合計値は" + max);
    
[/code]


CC BY-SA 4.0
2020-11-30T19:31:39.233
72300
2020-11-30T19:31:39.233
2808
72288
answer