예제 #1
0
    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);
    }
예제 #2
0
    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);
    }
예제 #3
0
 // 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();
     }
 }