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

More idiomatic language

This commit is contained in:
Daniel Barber 2018-03-15 08:45:46 -04:00
parent ea635086a0
commit 7cbc4f3acd
Signed by: danbarber
GPG Key ID: 931D8112E0103DD8
2 changed files with 12 additions and 12 deletions

View File

@ -9,7 +9,7 @@ defmodule Chess.Moves.Generator do
def moves(colour, board, {file, rank}, {fv, rv}) do def moves(colour, board, {file, rank}, {fv, rv}) do
next_square = {file + fv, rank + rv} next_square = {file + fv, rank + rv}
cond do cond do
can_take_piece?(colour, board, next_square) -> can_capture_piece?(colour, board, next_square) ->
[next_square] [next_square]
obstruction?(colour, board, next_square) -> obstruction?(colour, board, next_square) ->
[] []
@ -26,7 +26,7 @@ defmodule Chess.Moves.Generator do
outside_board?(move_square) || outside_board?(move_square) ||
obstruction?(colour, board, move_square) -> obstruction?(colour, board, move_square) ->
moves(colour, board, {file, rank}, moves) moves(colour, board, {file, rank}, moves)
can_take_piece?(colour, board, move_square) -> can_capture_piece?(colour, board, move_square) ->
[move_square | moves(colour, board, {file, rank}, moves)] [move_square | moves(colour, board, {file, rank}, moves)]
true -> true ->
[move_square | moves(colour, board, {file, rank}, moves)] [move_square | moves(colour, board, {file, rank}, moves)]
@ -38,7 +38,7 @@ defmodule Chess.Moves.Generator do
rank < 0 || rank > 7 rank < 0 || rank > 7
end end
defp can_take_piece?(colour, board, {file, rank}) do defp can_capture_piece?(colour, board, {file, rank}) do
piece = board["#{file},#{rank}"] piece = board["#{file},#{rank}"]
piece && piece["colour"] != colour piece && piece["colour"] != colour
end end

View File

@ -3,7 +3,7 @@ defmodule Chess.Moves.Pawn do
def moves(board, {file, rank}) do def moves(board, {file, rank}) do
normal_moves(board, {file, rank}) ++ normal_moves(board, {file, rank}) ++
taking_moves(board, {file, rank}) capture_moves(board, {file, rank})
end end
defp normal_moves(board, {file, rank}) do defp normal_moves(board, {file, rank}) do
@ -12,13 +12,13 @@ defmodule Chess.Moves.Pawn do
|> _moves(board, {file, rank}) |> _moves(board, {file, rank})
end end
defp taking_moves(board, {file, rank}) do defp capture_moves(board, {file, rank}) do
colour = colour =
board["#{file},#{rank}"] board["#{file},#{rank}"]
|> Map.get("colour") |> Map.get("colour")
colour colour
|> _taking_moves(board, {file, rank}, patterns(colour)) |> _capture_moves(board, {file, rank}, patterns(colour))
end end
defp patterns("white") do defp patterns("white") do
@ -51,17 +51,17 @@ defmodule Chess.Moves.Pawn do
end end
end end
def _taking_moves(_colour, _board, {_file, _rank}, []), do: [] def _capture_moves(_colour, _board, {_file, _rank}, []), do: []
def _taking_moves(colour, board, {file, rank}, [{fv, rv} | moves]) do def _capture_moves(colour, board, {file, rank}, [{fv, rv} | moves]) do
move_square = {file + fv, rank + rv} move_square = {file + fv, rank + rv}
if can_take_piece?(colour, board, move_square) do if can_capture_piece?(colour, board, move_square) do
[move_square | _taking_moves(colour, board, {file, rank}, moves)] [move_square | _capture_moves(colour, board, {file, rank}, moves)]
else else
_taking_moves(colour, board, {file, rank}, moves) _capture_moves(colour, board, {file, rank}, moves)
end end
end end
defp can_take_piece?(colour, board, {file, rank}) do defp can_capture_piece?(colour, board, {file, rank}) do
piece = board["#{file},#{rank}"] piece = board["#{file},#{rank}"]
piece && piece["colour"] != colour piece && piece["colour"] != colour
end end