104 「static修羅道」 StepFinal 問題


問題

あなたは、ゲームに登場するプレイヤーのスコアを管理するクラス Player を設計しようとしています。
このクラスには次の2つの目的があります:

  1. 各プレイヤーが持つ個別のスコアを保持する
  2. 全体での最高スコア(high score)を記録し、共有する

プレイヤーがスコアを更新するたびに、新しいスコアがそれまでの最高スコアを超えていれば、クラス全体の最高スコアも更新されるようにしてください。

以下のような出力になるように実装してください:

Alice のスコア: 50(現在の最高スコア: 50)
Bob のスコア: 80(現在の最高スコア: 80)
Alice のスコア: 100(現在の最高スコア: 100)

要件

  • Player クラスを作成すること
  • インスタンス変数:name, score を定義すること
  • static変数:highScore を定義し、すべてのプレイヤー間で共有すること
  • setScore(int newScore) メソッドで、スコア更新と highScore の自動更新を行うこと
  • display() メソッドで、名前 + スコア + 現在の最高スコア を出力すること
  • 出力には System.out.println を使用すること

テストコード(Main.java)

public class Main {
  public static void main(String[] args) {
    Player p1 = new Player("Alice");
    Player p2 = new Player("Bob");

    p1.setScore(50);
    p1.display();

    p2.setScore(80);
    p2.display();

    p1.setScore(100);
    p1.display();
  }
}

ヒント

  • highScore はすべてのプレイヤーで共有される static 変数
  • setScore() の中で、if (newScore > highScore) で比較・更新
  • display()name, score, highScore を1行で表示する

→ 解答例はこちら

104 ステップアップ問題 「static修羅道」