void Board::generate() { int i,j,k,l; int num; int tLeft = length*height; int x, y; int **temp = new int *[height+2]; for (i = 0; i <= height+1; i++) temp[i] = new int[length+2]; for (i = 0; i <= height+1; i++) for (j = 0; j <= length+1; j++) matrix[i][j] = temp[i][j] = -1; srand((unsigned int)time(NULL)); for (i = 0; i < (height*length)/2; i++) { num = rand() % pictureType; for (j = 0; j < 2; j++) { x = rand()%height+1; y = rand() % length+1; while (matrix[x][y] != -1) { y++; if ( y == length+1) { y = 1; x += 1; } if (x == height+1) x = 1; } matrix[x][y] = num; } } while (tLeft > 0) { for (i = 1; i <= height; i++) for(j = 1; j <= length; j++) for (k = 1; k <= height; k++) for (l = 1; l <= length; l++) { if (i == k && j == l) continue; if (matrix[i][j] != -1 && matrix[k][l] != -1) { //std::cout << i << ' ' << j << ':' << matrix[i][j] << '\n'; if (linkable(i,j,k,l)) { temp[i][j] = matrix[i][j]; temp[k][l] = matrix[k][l]; matrix[i][j] = matrix[k][l] = -1; tLeft -= 2; } } } rearrange(matrix); //show(); } for (i = 0; i < height; i++) delete []matrix[i]; delete []matrix; matrix = temp; }
void WMRemoveBoxSubview(WMBox * bPtr, WMView * view) { if (WMRemoveFromArrayMatching(bPtr->subviews, matchView, view)) { rearrange(bPtr); } }
void Board::rearrange() { rearrange(matrix); }