newBoard2() -> loadBoardFromString(".b.b.b.b\nb.b.b.b.\n........\n........\n........\n........\n.w.w.w.w\nw.w.w.w.\n"). loadBoardFromString(BoardStr) -> map(fun(L) -> map(fun(X) -> fromCharToField(X) end, L) end, tokens(BoardStr, "\n")). fromCharToField(X) -> if X == $. -> empty; X == $b -> {man, black}; X == $B -> {king, black}; X == $w -> {man, white}; X == $W -> {king, white} end. generateBoardString(Board) -> concat(intersperse(map(fun(X) -> map(fun(F) -> showField(F) end, X) end, Board), "\n")). generateExtBoardStr(Board) -> HorizNumbers = "\n 12345678\n\n", VertNumbers = ["8 ", "7 ", "6 ", "5 ", "4 ", "3 ", "2 ", "1 "], GenBoard = map(fun(X) -> map(fun(F) -> showField(F) end, X) end, Board), Lines = concat(intersperse(zipwith(fun(X,Y)-> [X ++ Y] end, VertNumbers, GenBoard), "\n")), map(fun(X) -> [X | " "] end, HorizNumbers ++ Lines ++ "\n"). showBoard(Board) -> io:format(generateBoardString(Board)). showField(F) -> case F of empty -> "."; _Else -> showChecker(F) end. showChecker(F) -> case F of {man, black} -> "b"; {king, black} -> "B"; {man, white} -> "w"; {king, white} -> "W" end. intersperse(Str, Char) -> concat(map(fun(X) -> concat([X, [Char]]) end, Str)).