From 465398f210d6a23541aa768714a5221ee0179320 Mon Sep 17 00:00:00 2001 From: Odweta Date: Wed, 18 Feb 2026 23:19:21 +0100 Subject: [PATCH] solved wrong index bug --- src/chess.c | 11 ++++++----- src/render.c | 4 ++-- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/chess.c b/src/chess.c index c9bf3d4..67a4ab0 100644 --- a/src/chess.c +++ b/src/chess.c @@ -5,7 +5,7 @@ void init_board(board_t board) { for (int i = 0; i < BOARD_VERTICAL; i++) { for (int j = 0; j < BOARD_HORIZONTAL; j++) { - board[j][i] = BOARD_DEFAULT_CONFIG[i][j]; + board[i][j] = BOARD_DEFAULT_CONFIG[i][j]; } } } @@ -175,10 +175,14 @@ bool is_dest_opponent(board_t board, player_e player, move_t move) { * 2b. it could be capturable x non-capturable * 2c. it could be out of bounds */ +/** FIXME: does not work -> b1 a3 says 0 */ bool validate_move(board_t board, player_e player, move_t move) { bool none = is_dest_none(board, move.to); bool dest_is_opponent = is_dest_opponent(board, player, move); bool move_legal = is_move_legal(move); + printf("move.from = {%d,%d}; move.to = {%d,%d}\n", move.from.x, move.from.y, move.to.x, move.to.y); + printf("from.piece = %d; to.piece = %d\n", board[move.from.y][move.from.x], board[move.to.y][move.to.x]); + printf("dest is none? %d; dest is opp? %d; legal? %d\n", none, dest_is_opponent, move_legal); if (none && move_legal) { // free ability to move return true; @@ -363,7 +367,6 @@ bool is_king_endangered(board_t board, player_e player, move_t move) { } // checks for mates -/** FIXME: unimplemented */ end_condition_e check_end(board_t board, player_e player, move_t move) { // here 'is_move_legal' is used as a determinator if a piece can move if (is_king_endangered(board, player, move) && !is_move_legal(move)) { @@ -376,9 +379,7 @@ end_condition_e check_end(board_t board, player_e player, move_t move) { } end_condition_e perform_move(board_t *board, player_e player, captured_t *captured, move_t move) { - bool valid = validate_move(*board, player, move); - printf("move valid? %d", valid); - if (valid) { + if (validate_move(*board, player, move)) { if ( *board[move.to.y][move.to.x] != WKING || // accounting for both players *board[move.to.y][move.to.x] != BKING // you cannot capture a king diff --git a/src/render.c b/src/render.c index 91ef2c8..6578979 100644 --- a/src/render.c +++ b/src/render.c @@ -11,9 +11,9 @@ void show_board(board_t board, player_e player) { for (int i = 0; i < BOARD_VERTICAL; i++) { printf("%-2d [", i+1); for (int j = 0; j < BOARD_HORIZONTAL-1; j++) { - printf("%-2d ", board[j][i]); + printf("%-2d ", board[i][j]); } - printf("%d]\n", board[BOARD_HORIZONTAL-1][i]); + printf("%d]\n", board[i][BOARD_HORIZONTAL-1]); } printf("\ncurrently plays: ");