「Javaを学び始めたけど、if文やwhile文の使い道が分からない」
「簡単で楽しく、ゲーム感覚で作れるアプリが知りたい」
そんな方にぴったりなのが、数当てゲームの作成です。
このゲームでは、ランダムな数字を当てるというシンプルなルールを使って、
Javaの条件分岐・繰り返し処理・変数の扱い・ユーザー入力処理を一気に学べます。
本記事では、初心者でも無理なく取り組めるように、基本から完成コードまで丁寧に解説いたします。
数当てゲームとは何か?
遊びながら学べるJava練習用アプリ
結論:ランダムな数字を当てるゲームは、条件分岐と繰り返しの練習に最適です。
数当てゲームとは、1〜100などの範囲からランダムに選ばれた「正解の数」を、
プレイヤーが繰り返し入力して当てるゲームです。
例えば、下記のような流れで動作します。
- プログラムがランダムな数を決める(例:57)
- プレイヤーが数を入力(例:30 → 「もっと大きいです」)
- 正解まで繰り返す
このアプリでは以下のJava要素が学べます:
Scanner
によるユーザー入力Random
による乱数生成if文
による条件分岐while文
による繰り返し処理
Javaで必要な構文の準備
入力処理・乱数処理を理解しよう
結論:ScannerとRandomクラスで準備完了です。
まずは基本構文を理解しましょう。
ユーザーから入力を受け取るには
1 2 | Scanner scanner = new Scanner(System.in); int guess = scanner.nextInt(); |
ランダムな数を出すには
1 2 | Random rand = new Random(); int answer = rand.nextInt( 100 ) + 1 ; // 1〜100 |
これらを組み合わせることで、「プレイヤーが数を入力 → 正解か判定 → ヒント表示 → 継続」という流れを作れます。
数当てゲームの処理構造を考える
どんな順序でコードを書くべきか?
結論:最初に「答えを決め」、次に「繰り返し入力と判定」です。
- 1〜100の中で正解を決める
- プレイヤーから数を受け取る
- 答えと比較し、「大きい・小さい・正解」を表示
- 正解なら終了、間違っていれば繰り返し
この流れをwhile
文で表すことで、シンプルかつ実用的なロジックになります。
Java数当てゲームの完成コード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | import java.util.Random; import java.util.Scanner; public class GuessingGame { public static void main(String[] args) { Random rand = new Random(); int answer = rand.nextInt( 100 ) + 1 ; Scanner scanner = new Scanner(System.in); int guess = 0 ; int tries = 0 ; System.out.println( "1〜100の数を当ててください!" ); while (guess != answer) { System.out.print( "数を入力:" ); guess = scanner.nextInt(); tries++; if (guess < answer) { System.out.println( "もっと大きい数です。" ); } else if (guess > answer) { System.out.println( "もっと小さい数です。" ); } else { System.out.println( "正解です! 試行回数:" + tries); } } scanner.close(); } } |
よくあるミスと改善ポイント
プログラムが止まる・繰り返しが動かないとき
結論:条件式や入力型のミスが多いです。
以下の点に注意しましょう:
while
の条件式に「!=」を正しく使うnextInt()
で例外が起きる場合、文字列を入力していないか確認scanner.close()
は最後に1回だけ使う
また、範囲を変えたい場合は以下のようにします。
1 | int answer = rand.nextInt( 50 ) + 51 ; // 51〜100の範囲に変更 |
応用課題に挑戦してみよう!
より実践的な機能を加えるとステップアップできる
おすすめの追加機能:
- 入力範囲外の数値にエラー表示を追加
- ヒント回数に応じた「評価」表示
- プレイヤー名の入力+再挑戦機能
完成形コードまとめ
ファイル名:GuessingGame.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | import java.util.Random; import java.util.Scanner; public class GuessingGame { public static void main(String[] args) { Random rand = new Random(); int answer = rand.nextInt( 100 ) + 1 ; Scanner scanner = new Scanner(System.in); int guess = 0 ; int tries = 0 ; System.out.println( "1〜100の数を当ててください!" ); while (guess != answer) { System.out.print( "数を入力:" ); guess = scanner.nextInt(); tries++; if (guess < answer) { System.out.println( "もっと大きい数です。" ); } else if (guess > answer) { System.out.println( "もっと小さい数です。" ); } else { System.out.println( "正解です! 試行回数:" + tries); } } scanner.close(); } } |
まとめ:Java入門者に最適な学習素材
数当てゲームは、Javaの基本を楽しく学べる課題です。
if文
やwhile文
を実践的に理解できる- 入力や条件式の理解が深まる
- 自分で応用・改善できる余地がある