今回はScannerクラスとRandomクラスを使って簡単なゲームをつくってみたいと思います。
前回、前々回の内容の応用となります。
ではまずどんなゲームかというと、
- 答えとなる二桁の乱数を生成。
- 答えと思う数をキーボードで入力
- 間違えたら答えが入力した数より大きいか小さいかを表示し、再入力。
- 正解したらプログラム終了。
実際に実行してみるとこのような結果になります。
ではソースを確認してみましょう。
■サンプル
import java.util.Random; import java.util.Scanner; class NumberGame { public static void main(String[] args) { Scanner sc = new Scanner(System.in); Random rand = new Random(); System.out.println("数当てゲーム開始!!"); System.out.println("二桁の数を当ててください。"); int answer = rand.nextInt(90) + 10; int yourAns; do { System.out.print("いくつでしょう? : "); yourAns = sc.nextInt(); if (answer > yourAns){ System.out.println("もっと大きい数です"); } else if(answer < yourAns){ System.out.println("もっと小さい数です"); } } while (answer != yourAns); System.out.println("正解です!!"); } }
では一緒にポイントを確認していきましょう。
■解説
1.11行目
ここで答えとなる乱数を生成してます。
答えは二桁なので0~89までの乱数を生成し、それにプラス10すればOKですね。
これは前回やったテクニックです。
2.15~23行目
間違えたら再入力してもらいますので、繰り返し文が必要となります。
したがってここではdo-while文を使います。
繰り返す内容は、入力と不正解の表示の二つになります。
もし表示だけ繰り返してしまうと無限ループになってしまうので注意してください。
そして繰り返す条件ですが、「不正解の場合」となります。
つまり「答えと入力した数が一致しない」という条件ですね。
3.24行目
正解を入力するとdo-while文を抜けます。
抜けたところで「正解です!!」と表示してあげれば、if文で判定する必要がないですね。
■まとめ
今回は、今まで学んだことを組み合わせて簡単なゲームを作ってみました。
組み合わせると案外難しく感じるものですが、一つ一つ整理して考えれば特別難しいことはありません。
みなさんもアイデアがあったら何かつくってみると、きっと勉強になるはずです。