Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

/** * fifteen.c * * Computer Science 50 * Problem Set 3 * * Implements Game of Fifteen (generalized to d x d). * *

/** * fifteen.c * * Computer Science 50 * Problem Set 3 * * Implements Game of Fifteen (generalized to d x d). * * Using fifteen d * * wherebt the board's dimensions are to be d x d, * where d must be in [DIM_MIN,DIM_MAX] * * Note that usleep is obsolete, but it offers more granularity than * sleep and is simpler to use then nanosleep; man usleep for more. */ #define _XOPEN_SOURCE 500 #include #include #include #include // Restrictions #define DIM_MIN 3 #define DIM_MAX 3 // board int board[DIM_MAX][DIM_MAX]; // dimensions int d; // prototypes void clear(void); void greet(void); void init(void); void draw(void); int move(int tile); int won(void); int main(int argc, char* argv[]) { // ensure proper usage if (argc != 2) { printf("Usage: fifteen d "); return 1; } // ensure valid dimensions d = atoi(argv[1]); if (d < DIM_MIN || d > DIM_MAX) { printf("Board must be between %i x %i and %i x %i, inclusive. ", DIM_MIN, DIM_MIN, DIM_MAX, DIM_MAX); return 2; } // open log FILE* file =fopen("log.txt", "w"); if(file == NULL) { return 3; } // greet user with instructions greet(); // initialize the board init(); // accept moves until someone wins while (1) { // clear screen clear(); // draw the current state of the board draw(); // log the current state of the baord for (int j = 0; j < d; j++) { // fprintf(file, "%i", board[i][j]); if ( j < d - 1) { fprintf(file, "l"); } } fprintf(file, " "); } fflush(file); // check for win if (won()) { printf("ftw! "); exit(0); } // prompt for move printf("Tile to move: "); int tile = get_int(); // quit if user inputs 0 if (tile == 0) { exit(0); } // log the move fprintf(file, "%i ", tile); fflush(file); // move if possible else report illegal move if (!move(tile)) { printf(" illegal move. "); usleep(500000); } // sleep for animations sake usleep(500000); // close log fclose(file); return 0; } /** * Clears screen using ANSI escape sequences. * / * void clear(void) { clear(); printf("WELCOME TO GAME OF FIFTEEN "); usleep(200000); } /** * Initializes the game's board with tiles numbering 1 through d * d - 1 * (i.e., fills 2d array with values but does not actually print them). */ void init(void) { int counter = d * d, tmp = d; if(--counter % 2 != 0) { tmp--; for(int i = 0, j = d - 1; i < d - 3; i++, j--) board[d-1][i] = j; board[d - 1][d - 1] = 0; board[d - 1][d - 2] = 2; board[d - 1][d - 3] = 1; } for(int i = 0; i < tmp; i++) for(int j = 0; j < d; j++) { board[i][j] = counter --; } } /** Prints board in present state * */ void draw(void) { for(int i = 0; i < d; i++) { for(int j = 0; j < d; j++) { if(board[i][j] < 10) printf(" "); printf("%i", board[i][j]); } printf(" "); } } /** * If tile borders empty space, move tile and return true, else * returns false */ int move(int tile) { int x = - 1, y; for(int i = 0; i < d; i++) for(int j = 0; j < d; j++) if(board[i][j] == tile) { x = i; y = j; break; } if(x == -1) return 0; if(x-1 >= 0 && board[x-1][y] == 0) { board[x-1][y] = tile; board[x][y] = 0; return 1; } else if(x+1 < d && board[x+1][y] == 0) { board[x+1][y] = tile; board[x][y] = 0; return 1; } else if(y - 1 >= 0 && board[x][y-1] == 0) { board[x][y+1] = tile; board[x][y] = 0; return 1; } return 0; } /** * Returns true if the game is won * else false */ int won(void) { for(int i = 0; i < d; i ++) { for(int j = 0; j < d; j++) if(j+1 < d && board[i][j] > board[i][j+1]) return 0; if(i+1 < d && board[i][d-1] > board[i+1][0]) return 0; } int testArr[(d*d)]; int counter = 0; // put all 10 array for(int i = 0; counter < (d*d); i++){ for(int j = 0; j < d; j++ ){ testArr[counter++] = board[i][j]; } } //check for all array in ascending order for(int i = 0; i < counter - 2; i++) { if(testArr[i] > testArr[i+1]) { return 0; } } return 1; } how do I solve this error ? fifteen.c:135:1: error: '/*' within block comment [-Werror,-Wcomment] /** ^ 1 error generated. make: *** [fifteen] Error 1

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Students also viewed these Databases questions

Question

Provide examples of Dimensional Tables.

Answered: 1 week ago