From 743c395e11a1b5c7713e1699d8e3c0d7b1eb7019 Mon Sep 17 00:00:00 2001 From: Josh-Heaps Date: Fri, 12 Jun 2026 10:51:26 -0600 Subject: [PATCH] Choose color against cpu --- JoshHeaps.Net/Controllers/ChessController.cs | 9 +++- JoshHeaps.Net/Pages/Chess.cshtml | 9 ++++ JoshHeaps.Net/Resources/chess_engine.dll | Bin 157184 -> 192512 bytes JoshHeaps.Net/wwwroot/css/chess/game.css | 41 ++++++++++++++++++ .../wwwroot/js/ChessScripts/ChessAPI.js | 4 +- .../wwwroot/js/ChessScripts/ChessModals.js | 10 +++++ .../wwwroot/js/ChessScripts/chessMain.js | 3 +- native/chess_engine/src/chess_engine.cpp | 35 +++++++++------ 8 files changed, 92 insertions(+), 19 deletions(-) diff --git a/JoshHeaps.Net/Controllers/ChessController.cs b/JoshHeaps.Net/Controllers/ChessController.cs index df9190f..46e38e9 100644 --- a/JoshHeaps.Net/Controllers/ChessController.cs +++ b/JoshHeaps.Net/Controllers/ChessController.cs @@ -35,7 +35,7 @@ public class ChessController( /// [HttpGet("new")] [HttpGet("new/{difficulty}")] - public ActionResult CreateGame(int difficulty = 20) + public ActionResult CreateGame(int difficulty = 20, string color = "random") { var gameState = chessService.CreateNewGame(); _games[gameState.GameId] = gameState; @@ -45,7 +45,12 @@ public class ChessController( gameState.BlackJoined = true; Guid playerId = Guid.NewGuid(); Guid computerId = Guid.NewGuid(); - var isWhite = Random.Shared.Next(2) == 0; + var isWhite = color.ToLowerInvariant() switch + { + "white" => true, + "black" => false, + _ => Random.Shared.Next(2) == 0, + }; gameState.Computer = engineFactory.Create(difficulty); diff --git a/JoshHeaps.Net/Pages/Chess.cshtml b/JoshHeaps.Net/Pages/Chess.cshtml index d87778c..817ae1a 100644 --- a/JoshHeaps.Net/Pages/Chess.cshtml +++ b/JoshHeaps.Net/Pages/Chess.cshtml @@ -89,6 +89,15 @@ + + @section Scripts { diff --git a/JoshHeaps.Net/Resources/chess_engine.dll b/JoshHeaps.Net/Resources/chess_engine.dll index f7f7bfdc03c585b3dac8d98228a4d63c8ea2ec43..190af57982bcd281d2a36570973b1f68c9ce2724 100644 GIT binary patch literal 192512 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 AkN^Mx delta 39207 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 { + document.getElementById("colorModal").style.display = "block"; + window.selectColor = (color) => { + document.getElementById("colorModal").style.display = "none"; + resolve(color); + }; + }); } }; diff --git a/JoshHeaps.Net/wwwroot/js/ChessScripts/chessMain.js b/JoshHeaps.Net/wwwroot/js/ChessScripts/chessMain.js index 826816f..0f48029 100644 --- a/JoshHeaps.Net/wwwroot/js/ChessScripts/chessMain.js +++ b/JoshHeaps.Net/wwwroot/js/ChessScripts/chessMain.js @@ -91,7 +91,8 @@ async function startCPUGame() { try { const difficulty = await ChessModals.promptDifficulty(); - const gameData = await ChessAPI.createCPUGame(difficulty); + const color = await ChessModals.promptColor(); + const gameData = await ChessAPI.createCPUGame(difficulty, color); GameState.setGameInfo(gameData.gameId, gameData.id, gameData.isWhite); GameState.clearPreviousMove(); diff --git a/native/chess_engine/src/chess_engine.cpp b/native/chess_engine/src/chess_engine.cpp index 740531e..a674594 100644 --- a/native/chess_engine/src/chess_engine.cpp +++ b/native/chess_engine/src/chess_engine.cpp @@ -208,14 +208,32 @@ static int evaluatePawn(const chess::Position& pos, const chess::Color c, const return score; } +static int piece_value(chess::PieceType pt) { + switch (pt) { + case chess::PAWN: return 100; + case chess::KNIGHT: return 320; + case chess::BISHOP: return 330; + case chess::ROOK: return 500; + case chess::QUEEN: return 900; + default: return 0; + } +} + static int castleIncentive(const chess::Position& pos, chess::Color c) { - if (!pos.pieces(chess::QUEEN)) - return 0; + chess::Bitboard pcs = pos.pieces(); + int total = 0; + while (pcs) { + chess::Square s = chess::pop_lsb(pcs); + chess::Piece pc = pos.piece_on(s); + chess::Color c = chess::color_of(pc); + total += piece_value(chess::type_of(pc)); + } + chess::Square k = pos.king_square(c); bool castled = (c == chess::WHITE) ? (k == chess::G1 || k == chess::C1) : (k == chess::G8 || k == chess::C8); - return castled ? 600 : 0; + return castled ? (total / 10) : 0; } static int evaluatePiece(const chess::Position& pos, const chess::Square& s, const chess::Piece& pc, const chess::Color& c) { @@ -274,17 +292,6 @@ static int evaluate_stm(const chess::Position& pos, bool whiteToMove) { static int score_to_tt(int s, int ply) { return s >= MATE_BOUND ? s + ply : s <= -MATE_BOUND ? s - ply : s; } static int score_from_tt(int s, int ply) { return s >= MATE_BOUND ? s - ply : s <= -MATE_BOUND ? s + ply : s; } -static int piece_value(chess::PieceType pt) { - switch (pt) { - case chess::PAWN: return 100; - case chess::KNIGHT: return 320; - case chess::BISHOP: return 330; - case chess::ROOK: return 500; - case chess::QUEEN: return 900; - default: return 0; - } -} - /* Heuristic for searching the most promising moves first, which makes alpha-beta prune far * more. Bands, highest first: the TT best move, then captures by MVV-LVA (most valuable * victim, least valuable attacker), then the two killer moves for this ply (quiet moves that