#include "board.h" int check_allowed_tile(char* tile, int position, char* board) { for (int i = 0; i < 4; i++) { int index = (position * TILE_SIZE + i) + direction_increments[i]; printf("Checking board index %i\n", index); // TODO: board should have sentinel row/column if (index >= 0 && index < BOARD_BYTES) { char neighboring_edge = board[index]; if (neighboring_edge > 0 && neighboring_edge != tile[i] && neighboring_edge != '_') { printf("Failed on edge %i (%c). Neighboring edge is %c\n", i, tile[i], neighboring_edge); return 0; } } } return 1; } void place_tile(char* tile, int position, char* board) { if (!check_allowed_tile(tile, position, board)) { printf("Could not place the tile!"); return; } for (int i = 0; i < TILE_SIZE; i++) { board[position * TILE_SIZE + i] = tile[i]; } } void print_board(char* board) { for (int row = 0; row < BOARD_WIDTH; row++) { for (int tile = 0; tile < BOARD_WIDTH; tile++) { printf("_%c_", board[TILE_SIZE * (row * BOARD_WIDTH + tile)]); } printf("\n"); for (int tile = 0; tile < BOARD_WIDTH; tile++) { printf( "%c%c%c", board[TILE_SIZE * (row * BOARD_WIDTH + tile) + 3], board[TILE_SIZE * (row * BOARD_WIDTH + tile) + 4], board[TILE_SIZE * (row * BOARD_WIDTH + tile) + 1] ); } printf("\n"); for (int tile = 0; tile < BOARD_WIDTH; tile++) { printf("_%c_", board[TILE_SIZE * (row * BOARD_WIDTH + tile) + 2]); } printf("\n"); } } void initialize_board(char* board) { for (int i = 0; i < BOARD_BYTES; i++) { board[i] = '_'; } } int main() { // Board char board[BOARD_BYTES]; initialize_board(board); place_tile("ABCDE", 7, board); place_tile("FGHBJ", 8, board); place_tile("FGHGJ", 9, board); place_tile("FGAGJ", 1, board); print_board(board); return 0; }