Nicolas Winkler před 6 roky
rodič
revize
bf5a453432
4 změnil soubory, kde provedl 21 přidání a 9 odebrání
  1. 3 3
      src/evaluate.rs
  2. 4 4
      src/game.rs
  3. 1 0
      src/main.rs
  4. 13 2
      src/search.rs

+ 3 - 3
src/evaluate.rs

@@ -1,7 +1,7 @@
 use game::*;
 
 
-fn evaluate(game: &Game) -> i32 {
-    return game.get_all_side(game.turn).count_ones()
-        - game.get_all_side(!game.turn).count_ones();
+pub fn evaluate(game: &Game) -> i32 {
+    return game.get_all_side(game.turn).count_ones() as i32
+        - game.get_all_side(!game.turn).count_ones() as i32;
 }

+ 4 - 4
src/game.rs

@@ -4,8 +4,8 @@ use movegen::*;
 pub struct Game
 {
     pub pieces: [Bitboard; 12],
-    turn: Side,
-    en_passant: u8,
+    pub turn: Side,
+    pub en_passant: u8,
 }
 
 impl Default for Game {
@@ -56,13 +56,13 @@ impl Game {
                         let bit_to_set = single_bit_board(col_index, row_index);
                         match c {
                             'p' => { *game.pawns_mut(BLACK) |= bit_to_set },
-                            'k' => { *game.knights_mut(BLACK) |= bit_to_set },
+                            'n' => { *game.knights_mut(BLACK) |= bit_to_set },
                             'b' => { *game.bishops_mut(BLACK) |= bit_to_set },
                             'r' => { *game.rooks_mut(BLACK) |= bit_to_set },
                             'q' => { *game.queens_mut(BLACK) |= bit_to_set },
                             'k' => { *game.kings_mut(BLACK) |= bit_to_set },
                             'P' => { *game.pawns_mut(WHITE) |= bit_to_set },
-                            'K' => { *game.knights_mut(WHITE) |= bit_to_set },
+                            'N' => { *game.knights_mut(WHITE) |= bit_to_set },
                             'B' => { *game.bishops_mut(WHITE) |= bit_to_set },
                             'R' => { *game.rooks_mut(WHITE) |= bit_to_set },
                             'Q' => { *game.queens_mut(WHITE) |= bit_to_set },

+ 1 - 0
src/main.rs

@@ -3,6 +3,7 @@ mod bitboard;
 mod movegen;
 mod engine;
 mod game;
+mod evaluate;
 mod search;
 
 use std::sync::mpsc;

+ 13 - 2
src/search.rs

@@ -1,5 +1,7 @@
 use bitboard::*;
 use movegen::*;
+use game::Game;
+use evaluate::*;
 
 enum MoveUndo {
     Default {
@@ -29,6 +31,15 @@ pub fn search() {
 
 }
 
-/*fn negamax(game: &Game, depth: i32) {
+fn negamax(game: &Game, depth: i32) -> i32 {
+    if depth == 0 {
+        return evaluate(game);
+    }
+
+    let best = i32::min_value();
+    let moves = generate_moves(game, game.turn);
+    for mov in moves {
 
-}*/
+    }
+    return 0;
+}