public void Transposition_ExecuteMove_Tests() { var transposition = new TranspositionTables(); transposition.Initialize(); var board = new Board(); board.InitializeEmptyBoard(); // var firstPawnMove = new SingleMove("d2", "d4"); var firstMoveHash = board.Shared.Transpositions.GetNewBoardHash(firstPawnMove, board, board.BoardHash); board.ExecuteMove(firstPawnMove); firstMoveHash.ShouldBe(board.BoardHash); // var second = new SingleMove("e7", "e5"); var secondMoveHash = board.Shared.Transpositions.GetNewBoardHash(second, board, board.BoardHash); board.ExecuteMove(second); secondMoveHash.ShouldBe(board.BoardHash); // var capture = new SingleMove("d4", "e5", true); var captureMoveHash = board.Shared.Transpositions.GetNewBoardHash(capture, board, board.BoardHash); board.ExecuteMove(capture); captureMoveHash.ShouldBe(board.BoardHash); }
public void KingLocationsUpdateOk() { var white = new King(true, "a1"); var black = new King(false, "a8"); var board = new Board(); board.AddNew(white, black); board.Kings = (white, black); var move = new SingleMove("a1", "a2"); //player1.Board.ExecuteMove(move); var player1 = new Logic(true, new Board(board, move)); var kingReference = player1.Board.Kings.white; kingReference.ShouldNotBeNull(); if (kingReference == null) { throw new ArgumentException(); } kingReference.CurrentPosition.ToAlgebraic().ShouldBe("a2"); var listReference = player1.Board.PieceList.First(p => p.IsWhite); listReference.CurrentPosition.ToAlgebraic().ShouldBe("a2"); var arrayReference = player1.Board.ValueAtDefinitely("a2".ToTuple()); arrayReference.CurrentPosition.ToAlgebraic().ShouldBe("a2"); }
public void Transposition_DifferentMoves_SameHash() { // 8 K // 7 // 6 // 5 // 4P // 3 K // 2 // 1 // ABCDEFGH var board1 = new Board(); var board2 = new Board(); var pieces = new List <PieceBase> { new Pawn(false, "a4"), new King(true, "d3"), new King(false, "d8") }; board1.AddNew(pieces); board2.AddNew(pieces); var move1a = new SingleMove("d3", "c4"); board1.ExecuteMove(move1a); var move2a = new SingleMove("c4", "d5"); board1.ExecuteMove(move2a); var move1b = new SingleMove("d3", "d4"); board2.ExecuteMove(move1b); var move2b = new SingleMove("d4", "d5"); board2.ExecuteMove(move2b); board1.BoardHash.ShouldBe(board2.BoardHash); }
private void ImageButton_Click(object sender, RoutedEventArgs e) { var contxt = (sender as Button)?.Content; var data = (contxt as Image)?.DataContext; var card = (data as Card); if (card == null) { return; } var cardsList = new List <Card>(); foreach (var currentCard in ImagesCollectionName.ItemsSource) { cardsList.Add(currentCard as Card); } var tempCard = cardsList.FirstOrDefault(c => c.ImageName.Equals(card.ImageName) && c.CardType.Equals(card.CardType)); if (tempCard.Inverted == true) { return; } SingleMove.SetCard(tempCard); tempCard.Inverted = true; tempCard.RefreshImgValue(); System.Threading.Thread.Sleep(30); if (SingleMove.TwoCardsSet) { cardsList.Where(c => c.ImageName == SingleMove.FirstCard.ImageName || c.ImageName == SingleMove.SecondCard.ImageName) .ToList() .ForEach(c => { c.Inverted = SingleMove.FirstEqualsSecond(); c.RefreshImgValue(); }); SingleMove.Clear(); } }