Hej, problem jest z funkcją w grze saper odpowiadającą za ruch po dynamicznej dwuwymiarowe tablicy struktur za pomocą strzałek, więcej szczegółów jest w komentarzu nad funkcją. Dodam, że jestem raczej początkujący w programowaniu. Za wszelką pomoc bardzo dziękuję bo męczę się z tym od dłuższego czasu :/
//nowagra1 to struktura z wymiarami tablicy
//na początku funkcji są petle do wyświetlania tablicy, każde pole jest strukturą i ma wartość liczbową i czy jest zasłonięte czy odkryte (false/ true). Na początku wszystkie są zasłonięte
// potem sprawdza czy przycisk jest przyciskiem specjalnym (strzałki) jeżeli tak, zmienia wspólrzedne(aktualny_x,aktualny_y) w zależności jaka strzałka jak nie to sprawdza czy jest enter
// enter zmienia pole tablicy o tych wspołrzednych na których jest kursor na odkryte chyba ze pole ma wartosc 9 to kończy funckje
// strzałki działają dobrze bo przed każdym enterem sprawdzam aktualne współrzędne kursora i zmieniają się dobrze
// jedyny błąd jest po wciśnięciu entera bo wtedy odkrywa w ogóle inne pola np zamiast 3,2 to 3,0
// tablica jest w poprawny sposób wypełniona i stworzona, sprawdziłem na parę sposób
void ruch (pola**&t, nowagra &nowagra1)
{
bool koniec = false;
int aktualny_x=0, aktualny_y=0;
while( koniec == false )
{ system ("cls"); //czyść ekran
cout<<aktualny_x<<" "<<aktualny_y;
cout<<endl;
cout<<" ";
for (int j = 0; j<nowagra1.M; j++)
cout<<"----";
cout<<endl;
for (int i = 0; i<nowagra1.N; i++)
{
for (int j = 0; j<nowagra1.M; j++)
{
if(j==0)
cout<<"| ";
if(t[i][j].odkryte==true)
cout<<t[i][j].wartosc<<" | ";
}
cout<<'\n';
}
cout<<" ";
for (int j = 0; j<nowagra1.M; j++)
cout<<"----";
cout<<endl;
unsigned char znak = getch();
switch( znak )
{
case 0:
{
case 13: //enter
t[aktualny_x][aktualny_y].odkryte=true;
if(t[aktualny_x][aktualny_y].wartosc==9)
{
cout<<t[aktualny_x][aktualny_y].wartosc;
koniec=true;
break;
}
else
break;
case 27: //ESC
koniec = true;
break;
}
case 224: //klawisze specjalne
znak = getch();
switch( znak )
{
case 72: //strzałka w górę
aktualny_x--;
if(aktualny_x<0)
aktualny_x=nowagra1.N-1;
break;
case 80: //strzałka w dół
aktualny_x++;
if(aktualny_x>nowagra1.N-1)
aktualny_x=0;
break;
case 75: //strzałka w lewo
aktualny_y--;
if(aktualny_y<0)
aktualny_y=nowagra1.M-1;
break;
case 77: //strzałka w prawo
aktualny_y++;
if(aktualny_y>nowagra1.M-1)
aktualny_y=0;
break;
}
}
}
}
streampos