-umibozu- | Salut,
Je code un démineur en console, et j'utilise la récursivité (en taous cas j'essaye), j'ai une erreur de segmentation dans la fonction qui dévoile les cases, je la post ici.
J'utilise 2 tableaux, pour l'instant ils sont initialisés normalement donc je dois tester à chaque fois les bords, les coins et les côtés pour éviter justement ce genre d'erreur, mais je ne comprend pas pourquoi ça ne fonctionne pas.
[ Code :
- void devoileCase(char tableauJeu[TAILLE][TAILLE], char tableauMine[TAILLE][TAILLE], int y, int x)
- {
- if(tableauMine[y][x] == 0)
- {
- tableauJeu[y][x] = VIDE;
- if(x == 0 && y == 0)
- {
- devoileCase(tableauJeu, tableauMine, y+1, x);
- devoileCase(tableauJeu, tableauMine, y+1, x+1);
- devoileCase(tableauJeu, tableauMine, y, x+1);
- }
- else if(x == 0 && (y > 0 && y < TAILLE))
- {
- devoileCase(tableauJeu, tableauMine, y-1, x);
- devoileCase(tableauJeu, tableauMine, y-1, x+1);
- devoileCase(tableauJeu, tableauMine, y, x+1);
- devoileCase(tableauJeu, tableauMine, y+1, x);
- devoileCase(tableauJeu, tableauMine, y+1, x+1);
- }
- else if(x == 0 && y == TAILLE)
- {
- devoileCase(tableauJeu, tableauMine, y, x+1);
- devoileCase(tableauJeu, tableauMine, y-1, x+1);
- devoileCase(tableauJeu, tableauMine, y-1, x);
- }
- else if((x > 0 && x < TAILLE) && y == 0)
- {
- devoileCase(tableauJeu, tableauMine, y, x-1);
- devoileCase(tableauJeu, tableauMine, y, x+1);
- devoileCase(tableauJeu, tableauMine, y+1, x-1);
- devoileCase(tableauJeu, tableauMine, y+1, x);
- devoileCase(tableauJeu, tableauMine, y+1, x+1);
- }
- else if((x > 0 && x < TAILLE) && y == TAILLE)
- {
- devoileCase(tableauJeu, tableauMine, y-1, x-1);
- devoileCase(tableauJeu, tableauMine, y-1, x);
- devoileCase(tableauJeu, tableauMine, y-1, x+1);
- devoileCase(tableauJeu, tableauMine, y, x-1);
- devoileCase(tableauJeu, tableauMine, y, x+1);
- }
- else if(x == TAILLE && (y > 0 && y < TAILLE))
- {
- devoileCase(tableauJeu, tableauMine, y-1, x-1);
- devoileCase(tableauJeu, tableauMine, y-1, x);
- devoileCase(tableauJeu, tableauMine, y, x-1);
- devoileCase(tableauJeu, tableauMine, y+1, x-1);
- devoileCase(tableauJeu, tableauMine, y+1, x);
- }
- else if(x == TAILLE && y == 0)
- {
- devoileCase(tableauJeu, tableauMine, y, x-1);
- devoileCase(tableauJeu, tableauMine, y+1, x-1);
- devoileCase(tableauJeu, tableauMine, y+1, x);
- }
- else if(x == TAILLE && y == TAILLE)
- {
- devoileCase(tableauJeu, tableauMine, y-1, x-1);
- devoileCase(tableauJeu, tableauMine, y-1, x);
- devoileCase(tableauJeu, tableauMine, y, x-1);
- }
- else
- {
- devoileCase(tableauJeu, tableauMine, y-1, x-1);
- devoileCase(tableauJeu, tableauMine, y-1, x);
- devoileCase(tableauJeu, tableauMine, y-1, x+1);
- devoileCase(tableauJeu, tableauMine, y, x-1);
- devoileCase(tableauJeu, tableauMine, y, x+1);
- devoileCase(tableauJeu, tableauMine, y+1, x-1);
- devoileCase(tableauJeu, tableauMine, y+1, x);
- devoileCase(tableauJeu, tableauMine, y+1, x+1);
- }
- }
- if(tableauMine[y][x] == 1) tableauJeu[y][x] = '1';
- if(tableauMine[y][x] == 2) tableauJeu[y][x] = '2';
- if(tableauMine[y][x] == 3) tableauJeu[y][x] = '3';
- if(tableauMine[y][x] == 4) tableauJeu[y][x] = '4';
- if(tableauMine[y][x] == 5) tableauJeu[y][x] = '5';
- if(tableauMine[y][x] == 6) tableauJeu[y][x] = '6';
- if(tableauMine[y][x] == 7) tableauJeu[y][x] = '7';
- if(tableauMine[y][x] == 8) tableauJeu[y][x] = '8';
- if(tableauMine[y][x] == 9) tableauJeu[y][x] = '9';
- }
|
|