From eccd8efdbac02b8113e9e90eff2aaa55d42bd94f Mon Sep 17 00:00:00 2001 From: k Date: Fri, 26 Sep 2025 13:32:22 -0400 Subject: [PATCH] playMoves now in zig --- headers/eval.h | 2 +- src/main.zig | 18 ++++++++++++------ 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/headers/eval.h b/headers/eval.h index 3558b80..69c4c1c 100644 --- a/headers/eval.h +++ b/headers/eval.h @@ -1,5 +1,5 @@ #ifndef EVAL_H #define EVAL_H -move *findBest(move* move, size_t size, game* g); +move *findBest(move* move, long long size, game* g); void makeMove(game *g, move* m); #endif diff --git a/src/main.zig b/src/main.zig index a6b00a8..7733d9c 100644 --- a/src/main.zig +++ b/src/main.zig @@ -3,6 +3,7 @@ const c = @cImport({ @cInclude("main.h"); @cInclude("types.h"); @cInclude("help.h"); + @cInclude("eval.h"); }); const uciTag = enum { @@ -101,12 +102,17 @@ fn fenGame(str: []const u8, alloc: std.mem.Allocator) [*c]c.game { } fn playMoves(game: [*c]c.game, str: []const u8) [*c]c.game { - var buffer: [2560]u8 = undefined; //this is bad - const len = @min(str.len, buffer.len - 1); - @memcpy(buffer[0..len], str[0..len]); - buffer[len] = 0; - - return c.playMoves(game, &buffer); + if (str.len < 4) return game; + var splitItr = std.mem.splitSequence(u8, str, " "); + while (splitItr.next()) |moveString| { + var move: c.move = .{ .To = 0, .From = 0, .Promo = 0 }; + if (moveString.len < 4) continue; + move.From = (moveString[0] - 'a') + (moveString[1] - '1'); + move.To = (moveString[2] - 'a') + (moveString[3] - '1'); + move.Promo = if (moveString.len == 5) moveString[4] else 0; + c.makeMove(game, &move); + } + return game; } fn uciGo(game: *c.game) []const u8 {