mirror of
https://github.com/danbee/chess
synced 2025-03-04 08:39:06 +00:00
Re-organise pieces
This commit is contained in:
parent
18aa9faab4
commit
6c944243fb
@ -1,12 +1,12 @@
|
|||||||
defmodule Chess.Moves do
|
defmodule Chess.Moves do
|
||||||
@moduledoc false
|
@moduledoc false
|
||||||
|
|
||||||
alias Chess.Moves.Pawn
|
alias Chess.Moves.Pieces.Pawn
|
||||||
alias Chess.Moves.Bishop
|
alias Chess.Moves.Pieces.Bishop
|
||||||
alias Chess.Moves.Knight
|
alias Chess.Moves.Pieces.Knight
|
||||||
alias Chess.Moves.Rook
|
alias Chess.Moves.Pieces.Rook
|
||||||
alias Chess.Moves.Queen
|
alias Chess.Moves.Pieces.Queen
|
||||||
alias Chess.Moves.King
|
alias Chess.Moves.Pieces.King
|
||||||
|
|
||||||
def available(board, {file, rank}) do
|
def available(board, {file, rank}) do
|
||||||
piece = board["#{file},#{rank}"]
|
piece = board["#{file},#{rank}"]
|
||||||
|
|||||||
@ -2,7 +2,7 @@ defmodule Chess.Moves.Piece do
|
|||||||
@moduledoc false
|
@moduledoc false
|
||||||
|
|
||||||
alias Chess.Moves.Generator
|
alias Chess.Moves.Generator
|
||||||
alias Chess.Moves.Knight
|
alias Chess.Moves.Pieces.Knight
|
||||||
|
|
||||||
def attacked?(board, {file, rank}) do
|
def attacked?(board, {file, rank}) do
|
||||||
attacked_by_rook_or_queen?(board, {file, rank}) ||
|
attacked_by_rook_or_queen?(board, {file, rank}) ||
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
defmodule Chess.Moves.Bishop do
|
defmodule Chess.Moves.Pieces.Bishop do
|
||||||
@moduledoc false
|
@moduledoc false
|
||||||
|
|
||||||
alias Chess.Moves.Generator
|
alias Chess.Moves.Generator
|
||||||
@ -1,4 +1,4 @@
|
|||||||
defmodule Chess.Moves.King do
|
defmodule Chess.Moves.Pieces.King do
|
||||||
@moduledoc false
|
@moduledoc false
|
||||||
|
|
||||||
alias Chess.Moves.Generator
|
alias Chess.Moves.Generator
|
||||||
@ -1,4 +1,4 @@
|
|||||||
defmodule Chess.Moves.Knight do
|
defmodule Chess.Moves.Pieces.Knight do
|
||||||
@moduledoc false
|
@moduledoc false
|
||||||
|
|
||||||
alias Chess.Moves.Generator
|
alias Chess.Moves.Generator
|
||||||
@ -1,4 +1,4 @@
|
|||||||
defmodule Chess.Moves.Pawn do
|
defmodule Chess.Moves.Pieces.Pawn do
|
||||||
@moduledoc false
|
@moduledoc false
|
||||||
|
|
||||||
def moves(board, {file, rank}) do
|
def moves(board, {file, rank}) do
|
||||||
@ -1,8 +1,8 @@
|
|||||||
defmodule Chess.Moves.Queen do
|
defmodule Chess.Moves.Pieces.Queen do
|
||||||
@moduledoc false
|
@moduledoc false
|
||||||
|
|
||||||
alias Chess.Moves.Rook
|
alias Chess.Moves.Pieces.Rook
|
||||||
alias Chess.Moves.Bishop
|
alias Chess.Moves.Pieces.Bishop
|
||||||
|
|
||||||
def moves(board, {file, rank}) do
|
def moves(board, {file, rank}) do
|
||||||
Rook.moves(board, {file, rank}) ++
|
Rook.moves(board, {file, rank}) ++
|
||||||
@ -1,4 +1,4 @@
|
|||||||
defmodule Chess.Moves.Rook do
|
defmodule Chess.Moves.Pieces.Rook do
|
||||||
@moduledoc false
|
@moduledoc false
|
||||||
|
|
||||||
alias Chess.Moves.Generator
|
alias Chess.Moves.Generator
|
||||||
@ -1,4 +1,4 @@
|
|||||||
defmodule Chess.Moves.BishopTest do
|
defmodule Chess.Moves.Pieces.BishopTest do
|
||||||
use Chess.DataCase
|
use Chess.DataCase
|
||||||
|
|
||||||
alias Chess.Moves
|
alias Chess.Moves
|
||||||
@ -1,4 +1,4 @@
|
|||||||
defmodule Chess.Moves.KingTest do
|
defmodule Chess.Moves.Pieces.KingTest do
|
||||||
use Chess.DataCase
|
use Chess.DataCase
|
||||||
|
|
||||||
alias Chess.Moves
|
alias Chess.Moves
|
||||||
@ -1,4 +1,4 @@
|
|||||||
defmodule Chess.Moves.KnightTest do
|
defmodule Chess.Moves.Pieces.KnightTest do
|
||||||
use Chess.DataCase
|
use Chess.DataCase
|
||||||
|
|
||||||
alias Chess.Moves
|
alias Chess.Moves
|
||||||
@ -1,17 +1,17 @@
|
|||||||
defmodule Chess.Moves.PawnTest do
|
defmodule Chess.Moves.Pieces.PawnTest do
|
||||||
use Chess.DataCase
|
use Chess.DataCase
|
||||||
|
|
||||||
alias Chess.Moves.Pawn
|
alias Chess.Moves
|
||||||
|
|
||||||
test "white pawn can move forward one or two spaces" do
|
test "white pawn can move forward one or two spaces" do
|
||||||
moves = Pawn.moves(default_board(), {4, 1})
|
moves = Moves.available(default_board(), {4, 1})
|
||||||
|
|
||||||
expected_moves = [{4, 2}, {4, 3}]
|
expected_moves = [{4, 2}, {4, 3}]
|
||||||
assert moves == expected_moves
|
assert moves == expected_moves
|
||||||
end
|
end
|
||||||
|
|
||||||
test "black pawn can move forward one or two spaces" do
|
test "black pawn can move forward one or two spaces" do
|
||||||
moves = Pawn.moves(default_board(), {4, 6})
|
moves = Moves.available(default_board(), {4, 6})
|
||||||
|
|
||||||
expected_moves = [{4, 5}, {4, 4}]
|
expected_moves = [{4, 5}, {4, 4}]
|
||||||
assert moves == expected_moves
|
assert moves == expected_moves
|
||||||
@ -19,7 +19,7 @@ defmodule Chess.Moves.PawnTest do
|
|||||||
|
|
||||||
test "white pawn not on starting square can move forward one space" do
|
test "white pawn not on starting square can move forward one space" do
|
||||||
board = %{"4,2" => %{"type" => "pawn", "colour" => "white"}}
|
board = %{"4,2" => %{"type" => "pawn", "colour" => "white"}}
|
||||||
moves = Pawn.moves(board, {4, 2})
|
moves = Moves.available(board, {4, 2})
|
||||||
|
|
||||||
expected_moves = [{4, 3}]
|
expected_moves = [{4, 3}]
|
||||||
assert moves == expected_moves
|
assert moves == expected_moves
|
||||||
@ -27,7 +27,7 @@ defmodule Chess.Moves.PawnTest do
|
|||||||
|
|
||||||
test "black pawn not on starting square can move forward one space" do
|
test "black pawn not on starting square can move forward one space" do
|
||||||
board = %{"4,5" => %{"type" => "pawn", "colour" => "black"}}
|
board = %{"4,5" => %{"type" => "pawn", "colour" => "black"}}
|
||||||
moves = Pawn.moves(board, {4, 5})
|
moves = Moves.available(board, {4, 5})
|
||||||
|
|
||||||
expected_moves = [{4, 4}]
|
expected_moves = [{4, 4}]
|
||||||
assert moves == expected_moves
|
assert moves == expected_moves
|
||||||
@ -38,7 +38,7 @@ defmodule Chess.Moves.PawnTest do
|
|||||||
"4,1" => %{"type" => "pawn", "colour" => "white"},
|
"4,1" => %{"type" => "pawn", "colour" => "white"},
|
||||||
"4,3" => %{"type" => "pawn", "colour" => "black"},
|
"4,3" => %{"type" => "pawn", "colour" => "black"},
|
||||||
}
|
}
|
||||||
moves = Pawn.moves(board, {4, 1})
|
moves = Moves.available(board, {4, 1})
|
||||||
|
|
||||||
expected_moves = [{4, 2}]
|
expected_moves = [{4, 2}]
|
||||||
assert moves == expected_moves
|
assert moves == expected_moves
|
||||||
@ -49,7 +49,7 @@ defmodule Chess.Moves.PawnTest do
|
|||||||
"4,1" => %{"type" => "pawn", "colour" => "white"},
|
"4,1" => %{"type" => "pawn", "colour" => "white"},
|
||||||
"4,2" => %{"type" => "pawn", "colour" => "black"},
|
"4,2" => %{"type" => "pawn", "colour" => "black"},
|
||||||
}
|
}
|
||||||
moves = Pawn.moves(board, {4, 1})
|
moves = Moves.available(board, {4, 1})
|
||||||
|
|
||||||
expected_moves = []
|
expected_moves = []
|
||||||
assert moves == expected_moves
|
assert moves == expected_moves
|
||||||
@ -60,7 +60,7 @@ defmodule Chess.Moves.PawnTest do
|
|||||||
"4,2" => %{"type" => "pawn", "colour" => "white"},
|
"4,2" => %{"type" => "pawn", "colour" => "white"},
|
||||||
"4,3" => %{"type" => "pawn", "colour" => "black"},
|
"4,3" => %{"type" => "pawn", "colour" => "black"},
|
||||||
}
|
}
|
||||||
moves = Pawn.moves(board, {4, 2})
|
moves = Moves.available(board, {4, 2})
|
||||||
|
|
||||||
expected_moves = []
|
expected_moves = []
|
||||||
assert moves == expected_moves
|
assert moves == expected_moves
|
||||||
@ -71,7 +71,7 @@ defmodule Chess.Moves.PawnTest do
|
|||||||
"4,2" => %{"type" => "pawn", "colour" => "white"},
|
"4,2" => %{"type" => "pawn", "colour" => "white"},
|
||||||
"5,3" => %{"type" => "pawn", "colour" => "black"},
|
"5,3" => %{"type" => "pawn", "colour" => "black"},
|
||||||
}
|
}
|
||||||
moves = Pawn.moves(board, {4, 2})
|
moves = Moves.available(board, {4, 2})
|
||||||
|
|
||||||
expected_moves = [{4, 3}, {5, 3}]
|
expected_moves = [{4, 3}, {5, 3}]
|
||||||
assert moves == expected_moves
|
assert moves == expected_moves
|
||||||
@ -82,7 +82,7 @@ defmodule Chess.Moves.PawnTest do
|
|||||||
"6,6" => %{"type" => "pawn", "colour" => "black"},
|
"6,6" => %{"type" => "pawn", "colour" => "black"},
|
||||||
"5,5" => %{"type" => "pawn", "colour" => "white"},
|
"5,5" => %{"type" => "pawn", "colour" => "white"},
|
||||||
}
|
}
|
||||||
moves = Pawn.moves(board, {6, 6})
|
moves = Moves.available(board, {6, 6})
|
||||||
|
|
||||||
expected_moves = [{6, 5}, {6, 4}, {5, 5}]
|
expected_moves = [{6, 5}, {6, 4}, {5, 5}]
|
||||||
assert moves == expected_moves
|
assert moves == expected_moves
|
||||||
@ -1,4 +1,4 @@
|
|||||||
defmodule Chess.Moves.QueenTest do
|
defmodule Chess.Moves.Pieces.QueenTest do
|
||||||
use Chess.DataCase
|
use Chess.DataCase
|
||||||
|
|
||||||
alias Chess.Moves
|
alias Chess.Moves
|
||||||
@ -1,4 +1,4 @@
|
|||||||
defmodule Chess.Moves.RookTest do
|
defmodule Chess.Moves.Pieces.RookTest do
|
||||||
use Chess.DataCase
|
use Chess.DataCase
|
||||||
|
|
||||||
alias Chess.Moves
|
alias Chess.Moves
|
||||||
Loading…
Reference in New Issue
Block a user