Witam
Mam do napisania w C++ grę saper.
Posiadam problem, z funkcja rozlosowujaca miny.
Funkcja ta powinna działać tak:
/miny nie powinny nachodzić na
siebie i wychodzić poza planszę. Podpowiedź: losujmy jakieś położenie i sprawdzajmy czy nie ma
tam już znaku ‘*’ lub czy nie wchodzimy na brzeg i jeśli coś nam przeszkadza losujemy nowe
położenie (I tak do skutku…). Losowana mina powinna dodawać +1 do położenia na prawo, lewo,
górę, dół od niej (o ile nie ma już tam miny lub o ile to nie ściana planszy)//
Napisałam kod, ale wyskakuje mi błąd "Segmentation fault(core dumped)" i nie potrafie go naprawic
Bardzo prosze o pomoc.
Moj kod:
class saper
{
int wymiar;
char** planszaKomputera;
char** planszaWidza;
int miny;
int nieodkryteNiezaminowane;
public:
saper(int x);
~saper();
void print();
void losowanie();
void sprawdzanie(int x, int y);
void wypis();
int puste();
int czytanie();
};
void saper::losowanie()
{
srand(time(NULL));
int x=0;
int y=0;
if(wymiar==5)
{
miny=6;
}
if(wymiar==7)
{
miny=20;
}
if(wymiar==9)
{
miny=30;
}
for(int i=0; i<miny; i++)
{
if(planszaKomputera[x][y]!='*')
{
x=rand()%wymiar;
y=rand()%wymiar;
planszaKomputera[x][y]='*';
for (int k = -1; k<2; k++)
for (int l = -1; l<2; l++)
{
/*if ((x+l)<0 || (y+k)<0 ) continue;
if ((x+l)>wymiar || (y+k)>wymiar ) continue;
if (planszaKomputera[x+l][y+k]=='*') continue;
planszaKomputera[x+l][y+k]+=1; */
}
miny--;
}
//if(x<0 || y<0) continue;
//if(x>wymiar || y>wymiar) continue;
}
}