1
0
mirror of https://github.com/danbee/chess synced 2025-03-04 08:39:06 +00:00

Queen moves

This commit is contained in:
Daniel Barber 2018-03-12 14:18:31 -04:00
parent af8027e6d8
commit a7fbffcb5d
Signed by: danbarber
GPG Key ID: 931D8112E0103DD8
3 changed files with 37 additions and 1 deletions

View File

@ -4,6 +4,7 @@ defmodule Chess.Moves do
alias Chess.Moves.Pawn
alias Chess.Moves.Rook
alias Chess.Moves.Bishop
alias Chess.Moves.Queen
def available(board, {file, rank}) do
piece = board["#{file},#{rank}"]
@ -20,7 +21,7 @@ defmodule Chess.Moves do
%{"type" => "king"} ->
[]
%{"type" => "queen"} ->
[]
Queen.moves(board, {file, rank})
end
end
end

11
lib/chess/moves/queen.ex Normal file
View File

@ -0,0 +1,11 @@
defmodule Chess.Moves.Queen do
@moduledoc false
alias Chess.Moves.Rook
alias Chess.Moves.Bishop
def moves(board, {file, rank}) do
Rook.moves(board, {file, rank}) ++
Bishop.moves(board, {file, rank})
end
end

View File

@ -0,0 +1,24 @@
defmodule Chess.Moves.QueenTest do
use Chess.DataCase
alias Chess.Moves.Queen
test "queens can move in any direction" do
board = %{"4,5" => %{"type" => "rook", "colour" => "white"}}
moves = Queen.moves(board, {4, 5})
expected_moves = Enum.sort([
{4, 0}, {4, 1}, {4, 2}, {4, 3}, {4, 4}, {4, 6}, {4, 7},
{0, 5}, {1, 5}, {2, 5}, {3, 5}, {5, 5}, {6, 5}, {7, 5},
{5, 6}, {6, 7},
{5, 4}, {6, 3}, {7, 2},
{3, 4}, {2, 3}, {1, 2}, {0, 1},
{3, 6}, {2, 7},
])
assert Enum.sort(moves) == expected_moves
end
def board do
Chess.Board.default
end
end