/* Main */ int main(int argc, char * argv[]) { resizeScreen(); printf("Hello Army!\n\n"); /* Create board */ cell ** board = createBoard(width, height); /* Clear board */ cleanBoard(board); /* Read board from file */ readBoard(board); for (int i = 0; i < 1000; i++) { /* Print board */ printBoard(board); /* Day */ day(board); /* Wait for enter */ char c = getchar(); } /* Delete board */ deleteBoard(board); /* stop the program from exiting */ char c = getchar(); }
bool mergeLeft(struct tile **board, int size, int pos_rel, int multi) { bool plus = false; int current_row, current_col; for (int i = 0; i < size; i++) { for (int j = 0; j < size; j++) { if (j != size - 1 && board[i][j].value != 0) { //move from left to right if (board[i][j].value == board[i][j + 1].value) { board[i][j].value = 2 * board[i][j].value; plus = true; current_row = i; current_col = j; win(board[i][j].value); board[i][j + 1].value = 0; //calculate points for 2 people if (pos_rel == SHIFT_RIGHT) { score += board[current_row][current_col].value; } else { score_p2 += board[current_row][current_col].value; } printScore(score, score_p2, multi); } } } } cleanBoard(board, size, pos_rel); return plus; }
bool mergeDown(struct tile **board, int size, int pos_rel, int multi) { bool plus = false; int current_row, current_col; for (int col = 0; col < size; col++) { for (int row = size - 1; row >= 0; row--) { if (row != 0 && board[row][col].value != 0) { if (board[row][col].value == board[row - 1][col].value) { board[row][col].value = 2 * board[row][col].value; plus = true; current_row = row; current_col = col; win(board[row][col].value); board[row - 1][col].value = 0; if (pos_rel == SHIFT_RIGHT) { score += board[current_row][current_col].value; } else { score_p2 += board[current_row][current_col].value; } printScore(score, score_p2, multi); } } } } cleanBoard(board, size, pos_rel); return plus; }
bool mergeRight(struct tile **board, int size, int pos_rel, int multi) { bool plus = false; int current_col; int current_row; for (int i = 0; i < size; i++) { for (int j = size - 1; j >= 0; j--) { //if the tile is not the first column keep going from right to left if (j != 0 && board[i][j].value != 0) { if (board[i][j].value == board[i][j - 1].value) { board[i][j].value = 2 * board[i][j].value; plus = true; board[i][j - 1].value = 0; current_row = i; current_col = j; //check if the added value == goal win(board[i][j].value); //update score if (pos_rel == SHIFT_RIGHT) { score += board[current_row][current_col].value; } else { score_p2 += board[current_row][current_col].value; } printScore(score, score_p2, multi); } } } } //clean the board cleanBoard(board, size, pos_rel); return plus; }