Java | 1 日 60 分 × 7 日アプリ学習:Java基礎・オブジェクト指向 じゃんけんゲーム編

Web APP Java
スポンサーリンク
スポンサーリンク

1日目のゴールと全体像

じゃんけんゲーム 1日目のテーマは 「if・switch を使って“じゃんけんの勝敗判定”を作ること」 です。

この日は Java の基本文法の中でも特に重要な

  • if(条件分岐)
  • switch(分岐の別表現)
  • メソッド化(処理の部品化)
  • クラスの役割を理解する

を、じゃんけんという身近な題材で自然に身につけます。

このあと 2〜7日目で 「複数回対戦」「勝敗履歴のコレクション管理」「CSV保存」など アプリとして育てていくための基礎になります。

じゃんけんゲームの基本構造を理解する

じゃんけんの選択肢

  • グー
  • チョキ
  • パー

Javaでは、まずこれを 文字列数字 で表現します。

例:

  • "rock"(グー)
  • "scissors"(チョキ)
  • "paper"(パー)

初心者向けには 文字列で扱う方が分かりやすい です。

if を使った勝敗判定の考え方

勝敗のルール

  • グーはチョキに勝つ
  • チョキはパーに勝つ
  • パーはグーに勝つ
  • 同じ手なら引き分け

これを if 文で書くとこうなります。

if (player == computer) {
    // 引き分け
} else if (player == "rock" && computer == "scissors") {
    // プレイヤー勝ち
} else if (player == "scissors" && computer == "paper") {
    // プレイヤー勝ち
} else if (player == "paper" && computer == "rock") {
    // プレイヤー勝ち
} else {
    // プレイヤー負け
}
Java

深掘りポイント

  • if は「条件が真なら実行する」
  • else if は「別の条件を試す」
  • else は「どれにも当てはまらない場合」

じゃんけんは 条件分岐の練習に最適な題材 です。

switch を使った勝敗判定の考え方

switch は「値によって分岐する」構文です。

switch (player) {
    case "rock":
        // グーのときの処理
        break;
    case "scissors":
        // チョキのときの処理
        break;
    case "paper":
        // パーのときの処理
        break;
    default:
        // 想定外の入力
}
Java

深掘りポイント

  • switch は「分岐が多いときに読みやすい」
  • break を忘れると意図しない処理が続く
  • if と switch は使い分けが大事

メソッド化して「勝敗判定」を部品にする

設計

  • メソッド名:judge
  • 引数:プレイヤーの手、コンピュータの手
  • 戻り値:勝敗(”勝ち” / “負け” / “引き分け”)

コード(丁寧なコメント付き)

public class JankenJudge {

    // 勝敗判定メソッド
    public static String judge(String player, String computer) {

        // 引き分け
        if (player.equals(computer)) {
            return "引き分け";
        }

        // プレイヤー勝ちの条件
        if (player.equals("rock") && computer.equals("scissors")) {
            return "勝ち";
        }
        if (player.equals("scissors") && computer.equals("paper")) {
            return "勝ち";
        }
        if (player.equals("paper") && computer.equals("rock")) {
            return "勝ち";
        }

        // 上記以外は負け
        return "負け";
    }
}
Java

深掘りポイント

  • equals() を使って文字列比較する(== は使わない)
  • 勝ち条件だけ書いて、残りは負けにする
  • メソッド化することで main がスッキリする

コンピュータの手をランダムに決める

Java の Random を使います。

import java.util.Random;

Random random = new Random();
int num = random.nextInt(3); // 0,1,2 のどれか

String computer;

switch (num) {
    case 0:
        computer = "rock";
        break;
    case 1:
        computer = "scissors";
        break;
    default:
        computer = "paper";
}
Java

深掘りポイント

  • nextInt(3) は 0〜2 のランダム
  • switch で「数字 → 手」に変換する
  • ランダム処理はゲームでよく使う

ユーザー入力を受け取る(Scanner)

import java.util.Scanner;

Scanner scanner = new Scanner(System.in);

System.out.print("グー/チョキ/パー を入力してください: ");
String player = scanner.nextLine();
Java

1日目の完成コード(じゃんけんゲーム最小版)

import java.util.Random;
import java.util.Scanner;

public class JankenApp {

    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);

        // プレイヤーの手を入力
        System.out.print("グー/チョキ/パー を入力してください: ");
        String player = scanner.nextLine();

        // コンピュータの手をランダムに決める
        Random random = new Random();
        int num = random.nextInt(3);

        String computer;

        switch (num) {
            case 0:
                computer = "グー";
                break;
            case 1:
                computer = "チョキ";
                break;
            default:
                computer = "パー";
        }

        // 勝敗判定
        String result = judge(player, computer);

        // 結果表示
        System.out.println("あなた: " + player);
        System.out.println("コンピュータ: " + computer);
        System.out.println("結果: " + result);

        scanner.close();
    }

    // 勝敗判定メソッド
    public static String judge(String player, String computer) {

        if (player.equals(computer)) {
            return "引き分け";
        }

        if (player.equals("グー") && computer.equals("チョキ")) return "勝ち";
        if (player.equals("チョキ") && computer.equals("パー")) return "勝ち";
        if (player.equals("パー") && computer.equals("グー")) return "勝ち";

        return "負け";
    }
}
Java

1日目で本当に掴んでほしいこと

if と switch は「条件で処理を分ける道具」

じゃんけんは条件分岐の練習に最適です。

メソッドは「処理の部品」

勝敗判定をメソッド化すると main が読みやすくなります。

クラスは「役割の箱」

  • JankenApp:ゲームの流れ
  • judge:勝敗判定

この分け方が、後のオブジェクト指向につながります。

次のステップ

2日目では 「勝敗を繰り返し遊べるようにする」「勝敗履歴を List に保存する」 という実用的なゲームへ進化させます。

続きはこちら じゃんけんゲーム 2日目:勝敗履歴と繰り返し対戦

タイトルとURLをコピーしました