const std = @import("std"); const Board = @import("Board.zig"); const Search = @import("Search.zig").Search; const uci = @import("uci.zig"); const score = @import("score.zig"); var debug = false; pub fn main() !void { var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator); defer arena.deinit(); if (debug) { var gs = try Board.GameState.init( arena.allocator(), "r3k2r/p1ppqpb1/bn2pnp1/3PN3/1p2P3/2N2Q1p/PPPBBPPP/R3K2R w KQkq - 0 1", // tricky // "rnbqkb1r/pp1p1pPp/8/2p1pP2/1P1P4/3P3P/P1P1P3/RNBQKBNR w KQkq e6 0 1" // killer // "r2q1rk1/ppp2ppp/2n1bn2/2b1p3/3pP3/3P1NPP/PPP1NPB1/R1BQ1RK1 b - - 0 9", // cmk_pos // "2r3k1/R7/8/1R6/8/8/P4KPP/8 w - - 0 40 ", // repetition ); defer gs.deinit(); gs.show(); var search = try Search.init(&gs, uci.EngineOptions{}); // var ml = try Board.MoveList.init(0); // try gs.generateMoves(&ml); // score.moves(&gs, &ml); // std.sort.sort(Board.MovePrio, ml.slice(), {}, comptime Board.MovePrio.moreThan); // for (ml.slice()) |mp| { // mp.move.show(); // std.debug.print("{d}\n", .{mp.score}); // } try search.bestMove(.{}); } else try uci.loop(arena.allocator()); } const build_options = @import("build_options"); test "All" { _ = @import("Attacks.zig"); _ = @import("Board.zig"); _ = @import("Chess.zig"); _ = @import("Search.zig"); _ = @import("Transposition.zig"); _ = @import("eval.zig"); _ = @import("uci.zig"); _ = @import("zobrist.zig"); if (build_options.nnue) { _ = @import("nnue.zig"); } // _ = @import("perft.zig"); }