足算ゲーム
ふと、脳を鍛える大人のDSトレーニングというゲームを思い出し
そのゲームに収録されていた足算をいかに早く解くかというトレーニングを
プレイしたくなったので自分でプログラムを書いてみました。
以下がそのコードです。
Main.java
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Random;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int count = 0;
long start = 0;
long stop = 0;
long timeresult = 0;
Scanner sc = new Scanner(System.in);
System.out.println("計算問題を出題します。");
System.out.println("10問出題されます。");
System.out.println("Enterでスタートします。");
String anykey = sc.nextLine();
System.out.println("------------------------------");
for(int i = 0; i < 10; i++) {
start = System.nanoTime();
Random rnd = new Random();
int figure1 = rnd.nextInt(30) + 1;
int figure2 = rnd.nextInt(30) + 1;
int result = figure1 + figure2;
System.out.println(figure1 + " + " + figure2 + " = ?");
int a = sc.nextInt();
if(result == a) {
System.out.println("正解です。");
count++;
} else {
System.out.println("不正解です。");
}
}
stop = System.nanoTime();
System.out.println("------------------------------");
timeresult = stop - start;
double timesecond = timeresult / 100000000.0;
BigDecimal bdt = new BigDecimal(String.valueOf(timesecond));
BigDecimal bdt1 = bdt.setScale(2, RoundingMode.HALF_UP);
System.out.println("正解数は" + count + "問でした。");
System.out.println("解くのにかかった時間は" + bdt1 + "秒でした。");
}
}
このゲームでは足算が10問連続で出題され、プレイヤーはそれらを解いていきます。
ゲームが終了すると正解数とクリア時間が表示されます。
実際にプレイしてみてわかったことですが、早く解こうとすると割と
計算ミスをしてしまいます。
またDSの脳トレではタッチペンで答えを書いていましたが、こちらは
キーボードでの入力のため、素早く連続で数字を入力することに慣れる必要があると
思いました。
とてもシンプルなゲームですがなかなか楽しいです。
#学んだこと
nanoTimeというメソッドの存在を知りました。
非常に汎用性が高いと感じると同時に、色々なジャンルのプログラムに
使えると思いました。
#さらに追加するならばこんなこと
DSの脳トレではトレーニングの結果によって「徒歩級」や「新幹線級」などの評価が
あったのをよく覚えています。
このプログラムでも正解数とクリア時間の総合評価としてそういった表現があっても
面白いなと思いました。