Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Problem z sterowaniem strzałkami po 2-wymiarowej dynamicznej tablicy struktur

Ostatnio zmodyfikowano 2016-03-26 18:49
Autor Wiadomość
macmik
Temat założony przez niniejszego użytkownika
Problem z sterowaniem strzałkami po 2-wymiarowej dynamicznej tablicy struktur
» 2016-03-26 18:49:32
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 :/

C/C++
//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 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;
               
            }
        }
    }
   
}
P-146588
« 1 »
  Strona 1 z 1