Lines Matching refs:piece

51 IsMoveLegal(const Piece *piece, const Piece *dest)  in IsMoveLegal()  argument
60 else if ( piece->bwSide == dest->bwSide ) in IsMoveLegal()
74 Piece *piece; in PieceNew() local
76 piece = (Piece *)malloc(sizeof(Piece)); in PieceNew()
78 if (!piece) in PieceNew()
81 piece->xyzPos.xFile = x; in PieceNew()
82 piece->xyzPos.yRank = y; in PieceNew()
83 piece->xyzPos.zLevel = z; in PieceNew()
85 piece->bwSide = col; in PieceNew()
86 piece->nName = nType; in PieceNew()
87 piece->bVisible = TRUE; in PieceNew()
88 piece->bHasMoved = FALSE; in PieceNew()
90 return piece; in PieceNew()
94 PieceDelete(Piece *piece) in PieceDelete() argument
96 if (Board[piece->xyzPos.zLevel][piece->xyzPos.yRank][piece->xyzPos.xFile] == in PieceDelete()
97 piece) in PieceDelete()
98 Board[piece->xyzPos.zLevel][piece->xyzPos.yRank][piece->xyzPos.xFile] = in PieceDelete()
108 free(piece); in PieceDelete()
109 piece = NULL; in PieceDelete()
113 PieceMayMove(Piece *piece, in PieceMayMove() argument
118 if (!piece || !piece->bVisible) in PieceMayMove()
125 if (xNew == piece->xyzPos.xFile && in PieceMayMove()
126 yNew == piece->xyzPos.yRank && in PieceMayMove()
127 zNew == piece->xyzPos.zLevel) in PieceMayMove()
135 (Board[zNew][yNew][xNew]->bwSide == piece->bwSide)) in PieceMayMove()
141 switch (piece->nName) in PieceMayMove()
144 retval = KingMayMove(piece, xNew, yNew, zNew); in PieceMayMove()
147 retval = QueenMayMove(piece, xNew, yNew, zNew); in PieceMayMove()
150 retval = BishopMayMove(piece, xNew, yNew, zNew); in PieceMayMove()
153 retval = KnightMayMove(piece, xNew, yNew, zNew); in PieceMayMove()
156 retval = RookMayMove(piece, xNew, yNew, zNew); in PieceMayMove()
159 retval = PrinceMayMove(piece, xNew, yNew, zNew); in PieceMayMove()
162 retval = PrincessMayMove(piece, xNew, yNew, zNew); in PieceMayMove()
165 retval = AbbeyMayMove(piece, xNew, yNew, zNew); in PieceMayMove()
168 retval = CannonMayMove(piece, xNew, yNew, zNew); in PieceMayMove()
171 retval = GalleyMayMove(piece, xNew, yNew, zNew); in PieceMayMove()
174 retval = PawnMayMove(piece, xNew, yNew, zNew); in PieceMayMove()
183 if ( FakeMoveAndIsKingChecked(piece, xNew, yNew, zNew) == TRUE ) in PieceMayMove()
197 PieceMove(Piece *piece, in PieceMove() argument
203 if (!(moveType = PieceMayMove(piece, xNew, yNew, zNew))) in PieceMove()
209 thisMove.xyzBefore.xFile = piece->xyzPos.xFile; in PieceMove()
210 thisMove.xyzBefore.yRank = piece->xyzPos.yRank; in PieceMove()
211 thisMove.xyzBefore.zLevel = piece->xyzPos.zLevel; in PieceMove()
219 thisMove.pVictim = Board[zNew][yNew + (piece->bwSide == WHITE ? in PieceMove()
234 thisMove.nHadMoved = piece->bHasMoved; in PieceMove()
240 piece->bHasMoved = TRUE; in PieceMove()
241 PieceDisplay(piece, FALSE); in PieceMove()
242 Board[piece->xyzPos.zLevel][piece->xyzPos.yRank][piece->xyzPos.xFile] = NULL; in PieceMove()
251 Board[zNew][yNew][xNew] = piece; in PieceMove()
252 piece->xyzPos.xFile = xNew; in PieceMove()
253 piece->xyzPos.yRank = yNew; in PieceMove()
254 piece->xyzPos.zLevel = zNew; in PieceMove()
255 PieceDisplay(piece, TRUE); in PieceMove()
300 if (IsKingChecked( piece->bwSide )) in PieceMove()
319 PieceDisplay(piece, FALSE); in PieceMove()
320 PiecePromote(piece); /* This function asks for promotion type, etc. */ in PieceMove()
440 KingMayMove(Piece *piece, in KingMayMove() argument
447 xDiff = xNew - piece->xyzPos.xFile; in KingMayMove()
448 yDiff = yNew - piece->xyzPos.yRank; in KingMayMove()
449 zDiff = zNew - piece->xyzPos.zLevel; in KingMayMove()
456 if ( (piece->bHasMoved && (xDiff > 2)) || in KingMayMove()
467 if (FakeMoveAndIsKingChecked( piece, xNew, yNew, zNew) || in KingMayMove()
469 FakeMoveAndIsKingChecked( piece, (xNew + piece->xyzPos.xFile)/2, in KingMayMove()
489 if (xNew > piece->xyzPos.xFile) in KingMayMove()
494 if (piece->bHasMoved || in KingMayMove()
508 for (xCur = piece->xyzPos.xFile + xInc; xCur != xRook; xCur += xInc) in KingMayMove()
524 QueenMayMove(Piece *piece, in QueenMayMove() argument
533 xDiff = xNew - piece->xyzPos.xFile; in QueenMayMove()
534 yDiff = yNew - piece->xyzPos.yRank; in QueenMayMove()
535 zDiff = zNew - piece->xyzPos.zLevel; in QueenMayMove()
549 pDestSquare = TraverseDir(piece, xDiff, yDiff, zDiff, in QueenMayMove()
551 return IsMoveLegal(piece, pDestSquare); in QueenMayMove()
555 BishopMayMove(Piece *piece, in BishopMayMove() argument
563 xDiff = xNew - piece->xyzPos.xFile; in BishopMayMove()
564 yDiff = yNew - piece->xyzPos.yRank; in BishopMayMove()
565 zDiff = zNew - piece->xyzPos.zLevel; in BishopMayMove()
577 pDestSquare = TraverseDir(piece, xDiff, yDiff, zDiff, in BishopMayMove()
579 return IsMoveLegal(piece, pDestSquare); in BishopMayMove()
583 KnightMayMove(Piece *piece, in KnightMayMove() argument
589 if (zNew != piece->xyzPos.zLevel) in KnightMayMove()
595 xDiff = xNew - piece->xyzPos.xFile; in KnightMayMove()
596 yDiff = yNew - piece->xyzPos.yRank; in KnightMayMove()
610 RookMayMove(Piece *piece, in RookMayMove() argument
618 xDiff = xNew - piece->xyzPos.xFile; in RookMayMove()
619 yDiff = yNew - piece->xyzPos.yRank; in RookMayMove()
620 zDiff = zNew - piece->xyzPos.zLevel; in RookMayMove()
632 pDestSquare = TraverseDir(piece, xDiff, yDiff, zDiff, in RookMayMove()
634 return IsMoveLegal(piece, pDestSquare); in RookMayMove()
638 PrinceMayMove(Piece *piece, in PrinceMayMove() argument
644 if (zNew != piece->xyzPos.zLevel) in PrinceMayMove()
650 xDiff = xNew - piece->xyzPos.xFile; in PrinceMayMove()
651 yDiff = yNew - piece->xyzPos.yRank; in PrinceMayMove()
666 PrincessMayMove(Piece *piece, in PrincessMayMove() argument
673 if (zNew != piece->xyzPos.zLevel) in PrincessMayMove()
679 xDiff = xNew - piece->xyzPos.xFile; in PrincessMayMove()
680 yDiff = yNew - piece->xyzPos.yRank; in PrincessMayMove()
692 pDestSquare = TraverseDir(piece, xDiff, yDiff, 0, in PrincessMayMove()
694 return IsMoveLegal(piece, pDestSquare); in PrincessMayMove()
698 AbbeyMayMove(Piece *piece, in AbbeyMayMove() argument
705 if (zNew != piece->xyzPos.zLevel) in AbbeyMayMove()
711 xDiff = xNew - piece->xyzPos.xFile; in AbbeyMayMove()
712 yDiff = yNew - piece->xyzPos.yRank; in AbbeyMayMove()
724 pDestSquare = TraverseDir(piece, xDiff, yDiff, 0, in AbbeyMayMove()
726 return IsMoveLegal(piece, pDestSquare); in AbbeyMayMove()
730 CannonMayMove(Piece *piece, in CannonMayMove() argument
737 xDiff = xNew - piece->xyzPos.xFile; in CannonMayMove()
738 yDiff = yNew - piece->xyzPos.yRank; in CannonMayMove()
739 zDiff = zNew - piece->xyzPos.zLevel; in CannonMayMove()
757 GalleyMayMove(Piece *piece, in GalleyMayMove() argument
764 if (zNew != piece->xyzPos.zLevel) in GalleyMayMove()
770 xDiff = xNew - piece->xyzPos.xFile; in GalleyMayMove()
771 yDiff = yNew - piece->xyzPos.yRank; in GalleyMayMove()
783 pDestSquare = TraverseDir(piece, xDiff, yDiff, 0, in GalleyMayMove()
785 return IsMoveLegal(piece, pDestSquare); in GalleyMayMove()
789 PawnMayMove(Piece *piece, in PawnMayMove() argument
795 if (zNew != piece->xyzPos.zLevel) in PawnMayMove()
801 xDiff = xNew - piece->xyzPos.xFile; in PawnMayMove()
802 yInc = yDiff = yNew - piece->xyzPos.yRank; in PawnMayMove()
811 ((yInc < 0) && (piece->bwSide == WHITE)) || in PawnMayMove()
812 ((yInc > 0) && (piece->bwSide == BLACK))) /* Moving backwards */ in PawnMayMove()
850 Board[zNew][yNew - yInc][xNew]->bwSide != piece->bwSide && /* Is enemy */ in PawnMayMove()
869 (piece->bHasMoved && yDiff == 2)) /* Move too far */ in PawnMayMove()
882 Board[zNew][yNew][xNew]->bwSide == piece->bwSide)) in PawnMayMove()
889 if ((yNew == FILES-1 && piece->bwSide == WHITE) || in PawnMayMove()
890 (yNew == 0 && piece->bwSide == BLACK)) in PawnMayMove()