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();
Java1日目の完成コード(じゃんけんゲーム最小版)
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 "負け";
}
}
Java1日目で本当に掴んでほしいこと
if と switch は「条件で処理を分ける道具」
じゃんけんは条件分岐の練習に最適です。
メソッドは「処理の部品」
勝敗判定をメソッド化すると main が読みやすくなります。
クラスは「役割の箱」
- JankenApp:ゲームの流れ
- judge:勝敗判定
この分け方が、後のオブジェクト指向につながります。
次のステップ
2日目では 「勝敗を繰り返し遊べるようにする」「勝敗履歴を List に保存する」 という実用的なゲームへ進化させます。
続きはこちら じゃんけんゲーム 2日目:勝敗履歴と繰り返し対戦

