なつかしい数あてゲームを勉強で作ってみた
きっかけ
プログラムの勉強を始めた頃に作った勉強用の数あてゲームを Groovy で作ってみました。
通常版と、プログラムロジックで勝手に回答を求める版を作ってみました。
( 何度も思いますが、プログラムを簡単に書けるのはやっぱりすごい、Groovy。 )
【追記】
後日、Bashシェルスクリプトでも作ってみました。
通常版
kazuate.groovy
def ans = (int)(Math.random() * 1000)
def resCount = 10
println "※※※数あてゲーム※※"
for (i in 1..resCount) {
println "===あと ${11-i} 回解答できます=="
print "0~999の数値を入力してください:"
def inputNum = System.in.newReader().readLine().toInteger()
if (ans == inputNum) {
println "正解です"
System.exit(0)
} else {
if (ans > inputNum) {
println " ${inputNum} より大きな数値です"
} else {
println " ${inputNum} より小さな数値です"
}
}
println ""
}
println "正解は ${ans} です"
コマンドラインから実行
$ groovy kazuate.groovy
勝手に回答を求める版
kazuateSimulator.groovy
def ans = (int)(Math.random() * 1000)
def resCount = 10
def range = 1..999
println "※※※数あてゲーム※※"
for (i in 1..resCount) {
println "===あと ${i} 回解答できます=="
print "0~999の数値を入力してください:"
def inputNum = range[(int)(range.size()/2)]
println inputNum
if (ans == inputNum) {
println "正解です"
System.exit(0)
} else {
if (ans > inputNum) {
println " ${inputNum} より大きな数値です"
range = range.findAll { it > inputNum }
} else {
println " ${inputNum} より小さな数値です"
range = range.findAll { it < inputNum }
}
}
println ""
}
println "正解は ${ans} です"
コマンドラインから実行
$ groovy kazuateSimulator.groovy
ひとこと
作ってみてわかりましたが、 10 回以内で必ず解ける仕組みになっているんですね。
ディスカッション
コメント一覧
まだ、コメントがありません