2008/01/08

なつかしい数あてゲームを勉強で作ってみた

プログラムの勉強を始めた頃に作った 勉強用の数あてゲームをgroovyで作ってみた。 何度プログラムを組んでも、 比較的簡単にプログラムが書けるのはやっぱりすごいなぁ、groovy。 通常版と、 プログラムロジックで勝手に回答を求める版を作ってみた。 ■通常版

kazuate.groovy

def ans = (int)(Math.random() * 1000)

def resCount = 10

println "※※※数あてゲーム※※"
for( i in 1..resCount ){
 
println "===あと ${11-i} 回解答できます=="
 
print "0~99の数値を入力してください:"
 
   
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} です
■勝手に回答を求める版

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~99の数値を入力してください:"
 
   
//def inputNum = System.in.newReader().readLine().toInteger()
 
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} です
作ってみてわかったけど、 これって10回以内で必ず解ける仕組みになっているんだね。

0 件のコメント:

コメントを投稿