Cześć, piszę właśnie program, taką mini-grę, tworzę tablicę dwuwymiarową 10x10, wypełniam ją losowo cyframi 1 lub 2 i wyświetlam na ekranie. W tym momencie gracz ma podać współrzędne punktu w który chce trafić, jeżeli dany punkt jest dodatni, to program przypisuje mu wartość 0. I w tym momencie zaczyna się problem, trzeba sprawdzić rekurencyjnie czy element wyżej, niżej, z lewej, bądź prawej w taki sam sposób. Niestety wyskakuje mi przepełnienie stosu.
Chodzi o funkcję searchTab()
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
void printTab(int array[][10])
{
int i, j;
for ( i = 0; i < 10; i++ )
{
for ( j = 0; j < 10; j++ )
{
printf("%d ", array[i][j]);
}
printf("\n");
}
}
void searchTab(int array[][10], int x, int y)
{
int shot = array[x][y];
if ( shot )
{
array[x][y] = 0;
if( x > 0 ) searchTab(array, x + 1, y);
if ( x < 9 ) searchTab(array, x - 1, y);
if ( y > 0 ) searchTab(array, x, y + 1);
if ( y < 9 ) searchTab(array, x, y - 1);
}
}
int main()
{
srand(time(0));
int tab[10][10];
int i, j;
int a, b; // współrzędne [x][y] strzału
for ( i = 0; i < 10; i++ )
{
for ( j = 0; j < 10; j++ )
{
tab[i][j] = rand() % 2 + 1;
}
}
printTab(tab);
printf("\nPodaj wspolrzedne [x][y], gdzie chcesz strzelic: \n");
scanf("%d %d", &a, &b);
searchTab(tab, a, b);
printTab(tab);
return 0;
}