module RubyShogi::Eval
Constants
- CENTRAL_BONUS
- CENTRAL_SCORE
- EVAL_PST_MG
- MATERIAL_HAND_SCORE
- MATERIAL_SCORE
Public Class Methods
eval(board)
click to toggle source
# File lib/ruby_shogi/eval.rb, line 73 def Eval.eval(board) score = 0 board.brd.each_with_index do |p, i| score += case p when 1..14 then EVAL_PST_MG[p - 1][i] when -14..-1 then EVAL_PST_MG[-p - 1][i] else 0 end end 0.01 * score end
init()
click to toggle source
# File lib/ruby_shogi/eval.rb, line 60 def Eval.init return if EVAL_PST_MG.length > 0 14.times do |i| arr = [] 81.times do |j| score = 0.1 * (MATERIAL_SCORE[i + 1] + 2 * CENTRAL_SCORE[i + 1] * (CENTRAL_BONUS[j % 9 ] + CENTRAL_BONUS[j / 9])) arr.push(score) end EVAL_PST_MG.push(arr) end EVAL_PST_MG.freeze end
material(board)
click to toggle source
# File lib/ruby_shogi/eval.rb, line 108 def Eval.material(board) score = 0 board.brd.each do |p| score += case p when 1..14 then MATERIAL_SCORE[p] when -14..-1 then -MATERIAL_SCORE[-p] else 0 end end board.white_pocket.each { |p| score += MATERIAL_HAND_SCORE[p] } board.black_pocket.each { |p| score -= MATERIAL_HAND_SCORE[-p] } score end
material2(board)
click to toggle source
# File lib/ruby_shogi/eval.rb, line 86 def Eval.material2(board) #board.print_board #puts Eval.material2(board) #puts Eval.material3(board) #fail if Eval.material2(board) != Eval.material3(board) 0 end
material3(board)
click to toggle source
# File lib/ruby_shogi/eval.rb, line 94 def Eval.material3(board) score = board.brd.inject do |sum, p| sum += case p when 1..14 then MATERIAL_SCORE[p] when -14..-1 then -MATERIAL_SCORE[-p] else 0 end end board.white_pocket.each { |p| score += MATERIAL_HAND_SCORE[p] } board.black_pocket.each { |p| score -= MATERIAL_HAND_SCORE[-p] } score end