diff options
Diffstat (limited to 'gnu/games/chess/Xchess/board.c')
-rw-r--r-- | gnu/games/chess/Xchess/board.c | 179 |
1 files changed, 0 insertions, 179 deletions
diff --git a/gnu/games/chess/Xchess/board.c b/gnu/games/chess/Xchess/board.c deleted file mode 100644 index fab97d8..0000000 --- a/gnu/games/chess/Xchess/board.c +++ /dev/null @@ -1,179 +0,0 @@ - -/* This file contains code for X-CHESS. - Copyright (C) 1986 Free Software Foundation, Inc. - -This file is part of X-CHESS. - -X-CHESS is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY. No author or distributor -accepts responsibility to anyone for the consequences of using it -or for whether it serves any particular purpose or works at all, -unless he says so in writing. Refer to the X-CHESS General Public -License for full details. - -Everyone is granted permission to copy, modify and redistribute -X-CHESS, but only under the conditions described in the -X-CHESS General Public License. A copy of this license is -supposed to have been given to you along with X-CHESS so you -can know your rights and responsibilities. It should be in a -file named COPYING. Among other things, the copyright notice -and this notice must be preserved on all copies. */ - - -/* RCS Info: $Revision: 1.1.1.1 $ on $Date: 1993/06/12 14:41:08 $ - * $Source: /home/ncvs/src/gnu/games/chess/Xchess/board.c,v $ - * Copyright (c) 1986 Wayne A. Christopher, U. C. Berkeley CAD Group - * Permission is granted to do anything with this code except sell it - * or remove this message. - * - * Stuff to deal with the board. - */ - -#include "xchess.h" - -board *chessboard; - -void -board_setup() -{ - chessboard = alloc(board); - board_init(chessboard); - return; -} - -void -board_init(b) - board *b; -{ - int i, j; - - for (i = 0; i < 2; i++) - for (j = 0; j < SIZE; j++) - b->square[i][j].color = BLACK; - for (i = 2; i < 6; i++) - for (j = 0; j < SIZE; j++) - b->square[i][j].color = NONE; - for (i = 6; i < 8; i++) - for (j = 0; j < SIZE; j++) - b->square[i][j].color = WHITE; - for (i = 0; i < SIZE; i++) - b->square[1][i].type = b->square[6][i].type = - PAWN; - b->square[0][0].type = b->square[7][0].type = ROOK; - b->square[0][1].type = b->square[7][1].type = KNIGHT; - b->square[0][2].type = b->square[7][2].type = BISHOP; - b->square[0][3].type = b->square[7][3].type = QUEEN; - b->square[0][4].type = b->square[7][4].type = KING; - b->square[0][5].type = b->square[7][5].type = BISHOP; - b->square[0][6].type = b->square[7][6].type = KNIGHT; - b->square[0][7].type = b->square[7][7].type = ROOK; - b->black_cant_castle_k = false; - b->black_cant_castle_q = false; - b->white_cant_castle_k = false; - b->white_cant_castle_q = false; - - return; -} - -void -board_drawall() -{ - int i, j; - - for (i = 0; i < SIZE; i++) - for (j = 0; j < SIZE; j++) - if (chessboard->square[i][j].color != NONE) { - win_drawpiece(&chessboard->square[i][j], i, - j, WHITE); - if (!oneboard) - win_drawpiece(&chessboard->square[i][j], - i, j, BLACK); - } - return; -} - -void -board_move(b, m) - board *b; - move *m; -{ - switch (m->type) { - - case MOVE: - case CAPTURE: - b->square[m->fromy][m->fromx].color = NONE; - b->square[m->toy][m->tox].color = m->piece.color; - b->square[m->toy][m->tox].type = m->piece.type; - if ((m->piece.type == PAWN) && (((m->piece.color == BLACK) && - (m->toy == 7)) || ((m->piece.color == WHITE) && - (m->toy == 0)))) - b->square[m->toy][m->tox].type = QUEEN; - if (m->enpassant) - b->square[m->toy + ((m->piece.color == WHITE) ? 1 : - -1)][m->tox].color = NONE; - break; - - case KCASTLE: - if (m->piece.color == WHITE) { - b->square[7][5].color = m->piece.color; - b->square[7][5].type = ROOK; - b->square[7][6].color = m->piece.color; - b->square[7][6].type = KING; - b->square[7][4].color = NONE; - b->square[7][7].color = NONE; - } else { - b->square[0][5].color = m->piece.color; - b->square[0][5].type = ROOK; - b->square[0][6].color = m->piece.color; - b->square[0][6].type = KING; - b->square[0][4].color = NONE; - b->square[0][7].color = NONE; - } - break; - - case QCASTLE: - if (m->piece.color == WHITE) { - b->square[7][3].color = m->piece.color; - b->square[7][3].type = ROOK; - b->square[7][2].color = m->piece.color; - b->square[7][2].type = KING; - b->square[7][4].color = NONE; - b->square[7][0].color = NONE; - } else { - b->square[0][3].color = m->piece.color; - b->square[0][3].type = ROOK; - b->square[0][2].color = m->piece.color; - b->square[0][2].type = KING; - b->square[0][4].color = NONE; - b->square[0][0].color = NONE; - } - break; - - default: - fprintf(stderr, "Bad move type %d\n", m->type); - } - - if (m->piece.type == KING) { - if (m->piece.color == WHITE) - b->white_cant_castle_q = - b->white_cant_castle_k= true; - else - b->black_cant_castle_q = - b->black_cant_castle_k= true; - } else if (m->piece.type == ROOK) { - if (m->piece.color == WHITE) { - if (m->fromx == 0) - b->white_cant_castle_q = true; - else if (m->fromx == 7) - b->white_cant_castle_k = true; - } else { - if (m->fromx == 0) - b->black_cant_castle_q = true; - else if (m->fromx == 7) - b->black_cant_castle_k = true; - } - } - - return; -} - |