続・とってもわかりやすいJAVA 【第20回 数当てゲームを作ってみよう!】

この記事は2015年10月5日に書かれたものです。内容が古い可能性がありますのでご注意ください。


今回はScannerクラスとRandomクラスを使って簡単なゲームをつくってみたいと思います。
前回、前々回の内容の応用となります。
ではまずどんなゲームかというと、

  1. 答えとなる二桁の乱数を生成。
  2. 答えと思う数をキーボードで入力
  3. 間違えたら答えが入力した数より大きいか小さいかを表示し、再入力。
  4. 正解したらプログラム終了。

実際に実行してみるとこのような結果になります。

数当てゲーム1

ではソースを確認してみましょう。

■サンプル

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文で判定する必要がないですね。

■まとめ

今回は、今まで学んだことを組み合わせて簡単なゲームを作ってみました。
組み合わせると案外難しく感じるものですが、一つ一つ整理して考えれば特別難しいことはありません。
みなさんもアイデアがあったら何かつくってみると、きっと勉強になるはずです。

  • このエントリーをはてなブックマークに追加

PAGE TOP