module Shuriken::Fen

Public Class Methods

make_caparandom_pos() click to toggle source

RR NN BB Q C K A

# File lib/shuriken/fen.rb, line 11
def Fen.make_caparandom_pos
        s = "." * 10
        put_piece = -> { i = rand(10); i = rand(10) while s[i] != "."; i }

        king = rand(1..8)
        l_rook = rand(king)
        r_rook = king + 1 + rand([1, 9 - (king + 1)].max)
        s[king] = "k"
        s[l_rook] = "r"
        s[r_rook] = "r"
        
        fail if r_rook == king || l_rook == king
        #puts "> #{king}> #{l_rook}> #{r_rook}"
        
        wb = put_piece.()
        s[wb] = "b"
        
        bb = rand(10)
        while s[bb] != "." || bb % 2 == wb % 2 
                bb = rand(10) 
        end
        s[bb] = "b"

        %|acnnq|.each_char { |p| s[put_piece.()] = p }

        pieces = s
        
        s += "/" + "p" * 10
        s << "/10" * 4
        s << "/" + "P" * 10
        s << "/" + pieces.upcase
        s << " w "
        s << ("A".ord + r_rook).chr
        s << ("A".ord + l_rook).chr
        s << ("a".ord + r_rook).chr
        s << ("a".ord + l_rook).chr
        s << " - 0"
        s
end