Java お宝獲得サバイバルゲーム(初学者向け)

Java

今回は受講生K氏のお題にインスパイアされた、ゲームを作成してみよう。
対象はJavaを学び始めて1週間くらいの初心者だ。

エンターキーで処理を進める

コンソールからJavaを実行すると一気に最後まで終わってしまう。
ただ、時にエンターキーによって徐々に進めて行きたい場合がある。
まずはその方法を学ぼう。
EnterKey.javaを以下のように作成し、実行してみよう。エンターキーを押すごとに処理が進むことが確認できる。

public class EnterKey{
  public static void main(String[] args){
    int count=0;
    System.out.print("Press Enter Key!");
    while(true){
      new java.util.Scanner(System.in).nextLine();
      count++;
      System.out.print(count);
      if(count == 10){
        System.out.println();
        break;
      }
    }
  }
}

ポイント解説

ポイントは6行目の

new java.util.Scanner(System.in).nextLine();

という部分だ。この命令は通常、キーボードからの1行の入力を受け取るものだがこのnextLine()はエンターキーのみの入力にも反応する。
その性質を利用して止めながら処理を進めるというのを実現している。

また、周辺にある出力にprint()と改行をしていないことにも注目だ。
nextLine()をしてエンターキーで進めた際に、行送りが発生するので普通に
println()で出力をすると。
Hit Enter Key!

1

2
と無駄に空白行ができてしまう。
なので余計な空白を入れたい場合には前の出力にprint()を使う。
しかし、このまま最後まで処理が進むと最後に以下のような状態になってしまう。

出力の最後は改行しなければならない。
なので10行目で
System.out.println()
と改行処理のみを入れている。

お宝ゲームの作成

それではいよいよ本題であるお宝ゲームの作成に入ろう。
このゲームは1-10の数字をランダムに繰り返し生成し、もし5が出れば5000Gを発見できる。
もし、途中で7が出れば脱出成功でそこまでに発見したゴールドをすべて持ち帰れる。しかし、途中で4が出てしまったら地雷を踏んだことになり(何も持ち帰れずに)終了となる。

実行例

[成功]3回目に7が出て10000G獲得

Press Enter Key!
1000G発見!
2000G発見!
7000G発見!
脱出成功!10000G獲得した!

[ 失敗]3回目に4が出て失敗

Press Enter Key!
9000G発見!
2000G発見!
地雷を踏んだので終了です。。。

Let’s try!!

さて、このゲームを作成できるか挑戦してみよう。
7が出た際には7000Gを獲得してから終了するのに対し4が出たときは4000G発見!の出力がされないところに注意してほしい。

余談

動作確認をしていたら結構すごい記録が出た。

159000Gを超えられるか、ぜひ挑戦してみてほしい。

作成例

public class GoldGame{
  public static void main(String[] args){
    int gold=0;
    System.out.print("Press EnterKey!");
    while(true){
      new java.util.Scanner(System.in).nextLine();
      int num = new java.util.Random().nextInt(10)+1;
      if(num == 4){
        System.out.println("地雷を踏んだので終了です。。。");
        break;
      }
      System.out.print(num*1000+"G発見!");
      gold+=num*1000;
      if(num == 7){
        System.out.println("\n脱出成功!"+gold+"G獲得した!");
        break;
      }
    }
  }
}
Java
スポンサーリンク
シェアする
mjpurinをフォローする
ジョイタスネット

コメント

タイトルとURLをコピーしました