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

funkcja przesuwająca figurę

Ostatnio zmodyfikowano 2014-11-21 15:47
Autor Wiadomość
bigwig13
Temat założony przez niniejszego użytkownika
funkcja przesuwająca figurę
» 2014-11-21 15:47:58

Program wyświetla figurę, problem polega na tym,że poprzez użycie wywołania funkcji figura jest przesuwana tylko za pomocą jednej ze strzałek do góry i ograniczenie ekranu nie działa. Zaczynam programować nie znam się na tyle, bądź jestem ślepy i nie widzę błędu, za pomoc dziękuję.


C/C++
void Sterowanie( char znak, int wielkosc )
{
    int x1, y1;
    int x, y;
    const int Esq = 27;
    x = 1; y = 1;
    char klawisz;
    gotoxy( 1, 1 );
    HideCursor();
    _getch();
   
    do
    {
       
        system( "cls" ); // zdefiniowac funkcje rysujaca figure
        Rysowanie( wielkosc, znak, x, y );
        gotoxy( 1, 1 );
       
       
        /*for(int i = 1; i <= wielkosc; i++) // lewa strona litery K
        {
        y1++;
        gotoxy(x1,y1);
        cout << znak;
        }
        for(int i = 1; i <= (wielkosc)/2; i++) // polprosta 1. wychodzaca ze srodka lewego boku
        {
        x1++; y1++;
        gotoxy(x1,y1 - (wielkosc/2));
        cout << znak;
        }
        for(int i = 1; i <= (wielkosc)/2; i++) // polprosta 2. wychodzaca ze srodka lewego boku
        {
        x1++; y1--;
        gotoxy(x1 - (wielkosc/2), y1 - wielkosc + 1);
        cout << znak;
        }*/
       
        int gg = 0; // górna granica
        int lg =( wielkosc - 1 ) / 2; // lewa granica
        int pg = 79 -( wielkosc - 1 ) / 2; // prawa granica
        int dg = 24 - wielkosc; // dolna granica
       
        klawisz = _getch();
        switch( klawisz )
        {
           
        case '+': { wielkosc = wielkosc + 2; // powiekszenie
                x--; y--; break; }
        case '-': { wielkosc = wielkosc - 2; //zmniejszenie
                x++; y++; break; }
        case 75: { if( x > lg ) { x--; } break; } // przesuniecie w lewo
        case 77: { if( x > pg ) { x++; } break; } // przesuniecie w prawo
        case 72: { if( x > gg ) { y--; } break; } // przesuniecie do góry
        case 80: { if( x > dg ) { y++; } break; } // przesuniecie w dół
        case Esq: { break; } //wyjscie
        }
    } while( klawisz != Esq );
   
}

void Rysowanie( int wielkosc, char znak, int x, int y )
{
    int x1 = x, y1 = y;
    for( int i = 1; i <= wielkosc; i++ ) // lewa strona litery K
    {
        y1++;
        gotoxy( x1, y1 );
        cout << znak;
    }
    for( int i = 1; i <=( wielkosc ) / 2; i++ ) // polprosta 1. wychodzaca ze srodka lewego boku
    {
        x1++; y1++;
        gotoxy( x1, y1 -( wielkosc / 2 ) );
        cout << znak;
    }
    for( int i = 1; i <=( wielkosc ) / 2; i++ ) // polprosta 2. wychodzaca ze srodka lewego boku
    {
        x1++; y1--;
        gotoxy( x1 -( wielkosc / 2 ), y1 - wielkosc + 1 );
        cout << znak;
    }
   
}
P-121108
« 1 »
  Strona 1 z 1