#include #include "board.h" void print_board(char* board) { for (int row = 0; row < BOARD_ROW_BYTES; row++) { for (int i = 0; i < BOARD_ROW_BYTES; i++) { int position = BOARD_ROW_BYTES * row + i; if (board[position] == EMPTY && is_center_position(position)) printf("*"); else printf("%c", board[position]); } printf("\n"); } } void initialize_board(char* board) { for (int i = 0; i < BOARD_BYTES; i++) { board[i] = EMPTY; } } int is_center_position(int position) { return ((position / BOARD_ROW_BYTES) % 2 == 1) && ((position % BOARD_ROW_BYTES) % 2 == 1); } int is_allowed_placement(char* tile, int position, char* board) { for (int i = 0; i < 4; i++) { char neighbor = board[position + neighbor_increments[i]]; if (neighbor != EMPTY && neighbor != tile[i + 1]) return 0; } return 1; } int place_tile(char* tile, int position, char* board) { if (!is_center_position(position)) { printf("Not a valid tile position: %i\n", position); return 0; } if (!is_allowed_placement(tile, position, board)) { printf("Can not place tile %s\n", tile); return 0; } board[position] = tile[0]; for (int i = 0; i < 4; i++) { board[position + neighbor_increments[i]] = tile[i + 1]; } return 1; } int main() { char board[BOARD_BYTES]; initialize_board(board); place_tile("RFRFR", 6, board); place_tile("RCCRR", 8, board); place_tile("RRFRF", 18, board); place_tile("CFFFC", 16, board); print_board(board); return 0; }