Current section

Files

Jump to
gchess src gchess.erl
Raw

src/gchess.erl

-module(gchess).
-compile([no_auto_import, nowarn_unused_vars]).
-export([main/0]).
-spec perft(gleam@erlang@process:subject(game:message()), integer()) -> integer().
perft(Game_actor, Depth) ->
case Depth of
0 ->
1;
_ ->
Moves = game:all_legal_moves(Game_actor),
Nodes@2 = gleam@list:fold(
Moves,
0,
fun(Nodes, Move) ->
gleam@io:println(move:to_string(Move)),
game:apply_move(Game_actor, Move),
Nodes@1 = Nodes + perft(Game_actor, Depth - 1),
game:undo_move(Game_actor),
Nodes@1
end
),
Nodes@2
end.
-spec main() -> nil.
main() ->
Game_actor = game:new_game_from_fen(
<<"rnbq1k1r/pp1Pbppp/2p5/8/2B5/8/PPP1NnPP/RNBQK2R w KQ - 1 8"/utf8>>
),
game:print_board(Game_actor),
_pipe = perft(Game_actor, 2),
_pipe@1 = gleam@int:to_string(_pipe),
gleam@io:println(_pipe@1).