1
0
mirror of https://github.com/danbee/chess synced 2025-03-04 08:39:06 +00:00
chess/web/models/board.ex
Dan Barber 7ff1b03f89
Refactor the board data structure
Now we're only storing the pieces keyed by the piece position rather
than storing the entire board as a set of nested Maps. This makes moving
pieces much easier. We're also now storing the position as a pair of
array indices which should make calculating the possible moves easier.
2017-01-18 16:36:38 +00:00

50 lines
1.7 KiB
Elixir

defmodule Chess.Board do
def output(board) do
Enum.map(0..7, fn (rank) ->
Enum.map(0..7, fn (file) ->
board["#{file},#{rank}"]
end)
end)
end
def default do
%{
"0,7" => %{type: :rook, colour: :black},
"1,7" => %{type: :knight, colour: :black},
"2,7" => %{type: :bishop, colour: :black},
"3,7" => %{type: :queen, colour: :black},
"4,7" => %{type: :king, colour: :black},
"5,7" => %{type: :bishop, colour: :black},
"6,7" => %{type: :knight, colour: :black},
"7,7" => %{type: :rook, colour: :black},
"0,6" => %{type: :pawn, colour: :black},
"1,6" => %{type: :pawn, colour: :black},
"2,6" => %{type: :pawn, colour: :black},
"3,6" => %{type: :pawn, colour: :black},
"4,6" => %{type: :pawn, colour: :black},
"5,6" => %{type: :pawn, colour: :black},
"6,6" => %{type: :pawn, colour: :black},
"7,6" => %{type: :pawn, colour: :black},
"0,1" => %{type: :pawn, colour: :white},
"1,1" => %{type: :pawn, colour: :white},
"2,1" => %{type: :pawn, colour: :white},
"3,1" => %{type: :pawn, colour: :white},
"4,1" => %{type: :pawn, colour: :white},
"5,1" => %{type: :pawn, colour: :white},
"6,1" => %{type: :pawn, colour: :white},
"7,1" => %{type: :pawn, colour: :white},
"0,0" => %{type: :rook, colour: :white},
"1,0" => %{type: :knight, colour: :white},
"2,0" => %{type: :bishop, colour: :white},
"3,0" => %{type: :queen, colour: :white},
"4,0" => %{type: :king, colour: :white},
"5,0" => %{type: :bishop, colour: :white},
"6,0" => %{type: :knight, colour: :white},
"7,0" => %{type: :rook, colour: :white}
}
end
end