mirror of
https://github.com/danbee/chess
synced 2025-03-04 08:39:06 +00:00
Restricts players to only be able to move their own pieces and only when it's their turn.
61 lines
2.0 KiB
Elixir
61 lines
2.0 KiB
Elixir
defmodule Chess.Board do
|
|
@moduledoc false
|
|
|
|
def transform(board) do
|
|
Enum.map(0..7, fn (rank) ->
|
|
Enum.map(0..7, fn (file) ->
|
|
board["#{file},#{rank}"]
|
|
end)
|
|
end)
|
|
end
|
|
|
|
def move_piece(board, move_params) do
|
|
[from_file, from_rank] = move_params["from"]
|
|
[to_file, to_rank] = move_params["to"]
|
|
|
|
{piece, board} = Map.pop(board, "#{from_file},#{from_rank}")
|
|
|
|
Map.put(board, "#{to_file},#{to_rank}", piece)
|
|
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
|