[ proka_92 @ 18.05.2012. 15:30 ] @
Pozdrav svima. Pravim igricu potapanje podmornica. Problem mi pravi funkcija koja generise lokacije brodova za racunar, previse vremena joj treba da generise sve brodove (znam i zasto, ali nemam ideju kako da to optimizujem). U svakom slucaju - evo funkcije, pa ako neko moze da pomogne, bio bih mu zahvalan. Code: void popuniRacunar(int ***matrix) { int i, x, y, num, **arr; arr = (int **)calloc(4, sizeof(int *)); if(arr == NULL) exit(1); for(i = 0; i < 4; i++) { arr[i] = (int *)calloc(2, sizeof(int)); if(arr[i] == NULL) exit(1); } x = generisiBroj(1, 11); y = generisiSlovo(); (*matrix)[x][y] = 4; arr[0][0] = (proveriKoordinateInput(x+1, y, 4, 1, *matrix) == 1) ? (x + 1) : 11; arr[0][1] = (proveriKoordinateInput(x+1, y, 4, 1, *matrix) == 1) ? y : 11; arr[1][0] = (proveriKoordinateInput(x-1, y, 4, 1, *matrix) == 1) ? (x - 1) : 11; arr[1][1] = (proveriKoordinateInput(x-1, y, 4, 1, *matrix) == 1) ? y : 11; arr[2][0] = (proveriKoordinateInput(x, y-1, 4, 1, *matrix) == 1) ? x : 11; arr[2][1] = (proveriKoordinateInput(x, y-1, 4, 1, *matrix) == 1) ? (y - 1) : 11; arr[3][0] = (proveriKoordinateInput(x, y+1, 4, 1, *matrix) == 1) ? x : 11; arr[3][1] = (proveriKoordinateInput(x, y+1, 4, 1, *matrix) == 1) ? (y + 1) : 11; num = generisiBroj(0, 4); x = arr[num][0]; y = arr[num][1]; while(!proveriKoordinateInput(x, y, 4, 1, *matrix)) { num = generisiBroj(0, 4); x = arr[num][0]; y = arr[num][1]; } (*matrix)[x][y] = 4; if((*matrix)[x][y-1] == 4) { (*matrix)[x][y+1] = 4; (*matrix)[x][y+2] = 4; } else if((*matrix)[x][y+1] == 4) { (*matrix)[x][y-1] = 4; (*matrix)[x][y-2] = 4; } else if((*matrix)[x-1][y] == 4) { (*matrix)[x+1][y] = 4; (*matrix)[x+2][y] = 4; } else { (*matrix)[x-1][y] = 4; (*matrix)[x-2][y] = 4; } for(i = 0; i < 2; i++) { x = generisiBroj(1, 11); y = generisiBroj(1, 11); while(!proveriKoordinateInput(x, y, 3, 0, *matrix)) { x = generisiBroj(1, 11); y = generisiBroj(1, 11); } (*matrix)[x][y] = 3; arr[0][0] = (proveriKoordinateInput(x+1, y, 3, 1, *matrix) == 1) ? (x + 1) : 11; arr[0][1] = (proveriKoordinateInput(x+1, y, 3, 1, *matrix) == 1) ? y : 11; arr[1][0] = (proveriKoordinateInput(x-1, y, 3, 1, *matrix) == 1) ? (x - 1) : 11; arr[1][1] = (proveriKoordinateInput(x-1, y, 3, 1, *matrix) == 1) ? y : 11; arr[2][0] = (proveriKoordinateInput(x, y-1, 3, 1, *matrix) == 1) ? x : 11; arr[2][1] = (proveriKoordinateInput(x, y-1, 3, 1, *matrix) == 1) ? (y - 1) : 11; arr[3][0] = (proveriKoordinateInput(x, y+1, 3, 1, *matrix) == 1) ? x : 11; arr[3][1] = (proveriKoordinateInput(x, y+1, 3, 1, *matrix) == 1) ? (y + 1) : 11; num = generisiBroj(0, 4); x = arr[num][0]; y = arr[num][1]; while(!proveriKoordinateInput(x, y, 3, 1, *matrix)) { num = generisiBroj(1, 4); x = arr[num][0]; y = arr[num][1]; } (*matrix)[x][y] = 3; if((*matrix)[x][y-1] == 3) (*matrix)[x][y+1] = 3; else if((*matrix)[x][y+1] == 3) (*matrix)[x][y-1] = 3; else if((*matrix)[x-1][y] == 3) (*matrix)[x+1][y] = 3; else (*matrix)[x-1][y] = 3; } for(i = 0; i < 3; i++) { x = generisiBroj(1, 11); y = generisiBroj(1, 11); while(!proveriKoordinateInput(x, y, 2, 0, *matrix)) { x = generisiBroj(1, 11); y = generisiSlovo(); } (*matrix)[x][y] = 2; arr[0][0] = (proveriKoordinateInput(x+1, y, 2, 1, *matrix) == 1) ? (x + 1) : 11; arr[0][1] = (proveriKoordinateInput(x+1, y, 2, 1, *matrix) == 1) ? y : 11; arr[1][0] = (proveriKoordinateInput(x-1, y, 2, 1, *matrix) == 1) ? (x - 1) : 11; arr[1][1] = (proveriKoordinateInput(x-1, y, 2, 1, *matrix) == 1) ? y : 11; arr[2][0] = (proveriKoordinateInput(x, y-1, 2, 1, *matrix) == 1) ? x : 11; arr[2][1] = (proveriKoordinateInput(x, y-1, 2, 1, *matrix) == 1) ? (y - 1) : 11; arr[3][0] = (proveriKoordinateInput(x, y+1, 2, 1, *matrix) == 1) ? x : 11; arr[3][1] = (proveriKoordinateInput(x, y+1, 2, 1, *matrix) == 1) ? (y + 1) : 11; num = generisiBroj(0, 4); x = arr[num][0]; y = arr[num][1]; while(!proveriKoordinateInput(x, y, 2, 1, *matrix)) { num = generisiBroj(0, 4); x = arr[num][0]; y = arr[num][1]; } (*matrix)[x][y] = 2; } for(i = 0; i < 4; i++) { x = generisiBroj(1, 11); y = generisiBroj(1, 11); while(!proveriKoordinateInput(x, y, 1, 0, *matrix)) { x = generisiBroj(1, 11); y = generisiBroj(1, 11); } (*matrix)[x][y] = 1; } for(i = 0; i < 4; i++) free(arr[i]); free(arr); } |