public void Move(MoveModel move, ref PieceModel [,] board) { board[move.y, move.x] = this; board[y, x] = null; x = move.x; y = move.y; // next steps here if (move.isCapture()) { PieceModel piece = board[move.capture.removeY, move.capture.removeX]; piece.doRemove(ref board); OnJump(); } else { OnMove(); } //doMove(); if (type == PieceType.KING) { return; } doKinging(ref board); }
public float evaluate(PieceColor color, BoardModel board) { float eval = 1f; float pointSimple = 1f; float pointCapture = 5f; int rows = board.board.GetLength(0); int cols = board.board.GetLength(1); int i; int j; for (i = 0; i < rows; i++) { for (j = 0; j < cols; j++) { PieceModel p = board.board[i, j]; if (p == null) { continue; } if (p.color != color) { continue; } Move[] moves = p.GetMoves(ref board.board); foreach (Move mv in moves) { MoveModel m = (MoveModel)mv; if (m.isCapture()) { eval += pointCapture; } else { eval += pointSimple; } } } } return(eval); }
// Update is called once per frame public void testForDoubleJump(MoveModel m) { if (m.isCapture()) { Move[] jumpMoves = board.board.getPiecesMoves(m.piece); List <Move> tempJumpMoves = new List <Move>(); if (jumpMoves.Length > 0) { foreach (Move secondJumpMove in jumpMoves) { MoveModel nextJump = (MoveModel)secondJumpMove; if (nextJump.isCapture()) { tempJumpMoves.Add(nextJump); Square highlightSquare = board.map[nextJump.y, nextJump.x]; highlightSquare.highLightMoveable(); } } } if (tempJumpMoves.Count > 0) { possibleMoves = tempJumpMoves.ToArray(); Debug.Log("possibleMoves" + possibleMoves + " " + tempJumpMoves.Count + " " + tempJumpMoves); onlyJumps = true; Square successSquare = board.map[m.y, m.x]; successSquare.highLight(); // } else { resetPlayer(); } } else { resetPlayer(); } }