見出し画像

Java初心者向け!数当てゲームを作って楽しく学ぼう~回答例編~

以下に詳細解説を追加した完全版の記事を作成しました。前半は無料公開用、後半は有料部分として詳細な解説を含めています。


Java初心者向け!数当てゲームを作って楽しく学ぼう

はじめに

こんにちは!10年以上にわたってJava講師として活動してきた私ですが、プログラミングを始めたのは中学校の頃。当時はBASICという言語で、自分が作りたいと思うプログラムを作る楽しさに夢中になりました。

今回の記事では、初心者でも楽しみながらJavaを学べる演習「数当てゲーム」の回答例と解説をお届けします!ぜひ実装してみてください。


数当てゲーム:問題概要

1~100のランダムな数字をコンピュータが選び、それをユーザーが当てるシンプルなゲームを作ります。ユーザーが入力した数字に応じて、正解やヒントを表示するようにしてください。


回答例

以下は、数当てゲームの回答例コードです。これを参考にして、自由にカスタマイズしてみてください!

import java.util.Scanner;

public class NumberGuessingGame {
    // 閾値を定数として宣言
    private static final int CLOSE_THRESHOLD = 10; // 「少し大きい/少し小さい」の閾値

    public static void main(String[] args) {
        // ランダムな数を生成(1~100)
        int targetNumber = (int) (Math.random() * 100) + 1;
        Scanner scanner = new Scanner(System.in);
        int attempts = 0; // 回答回数を記録

        System.out.println("1~100の数字を当ててください!");

        while (true) {
            System.out.print("あなたの回答: ");
            int guess = scanner.nextInt();
            attempts++;

            // 条件分岐によるフィードバック
            if (guess == targetNumber) {
                System.out.println("正解です!おめでとうございます!");
                System.out.println("あなたは " + attempts + " 回で正解しました!");
                break;
            } else if (Math.abs(guess - targetNumber) <= CLOSE_THRESHOLD) {
                if (guess < targetNumber) {
                    System.out.println("少し大きな数字です。");
                } else {
                    System.out.println("少し小さな数字です。");
                }
            } else {
                if (guess < targetNumber) {
                    System.out.println("もっと大きい数です。");
                } else {
                    System.out.println("もっと小さい数です。");
                }
            }
        }

        scanner.close();
    }
}

解説

  1. ランダムな数字の生成
    Math.random()を使い、1~100のランダムな数値を生成します。

    1. int targetNumber = (int) (Math.random() * 100) + 1;

  2. ユーザー入力の取得
    Scannerクラスを使用し、入力値を整数として受け取ります。

    1. Scanner scanner = new Scanner(System.in); int guess = scanner.nextInt();

  3. 条件分岐とフィードバック
    入力値と正解値の差を計算し、近い場合と遠い場合で異なるヒントを表示します。

    1. if (Math.abs(guess - targetNumber) <= 5) { System.out.println("少し大きな数字です。"); }

  4. 繰り返し処理
    ユーザーが正解するまでwhileループで処理を続けます。正解時にbreakでループを終了します。


詳細解説とカスタマイズ方法(有料部分)

ここから先は

3,550字

¥ 300

この記事が気に入ったらチップで応援してみませんか?