mirror of
https://github.com/danbee/chess
synced 2025-03-04 08:39:06 +00:00
More idiomatic language
This commit is contained in:
parent
ea635086a0
commit
7cbc4f3acd
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user