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

Problem z ograniczeniem prawej krawędzi

Ostatnio zmodyfikowano 2010-12-28 14:39
Autor Wiadomość
Marys
Temat założony przez niniejszego użytkownika
Problem z ograniczeniem prawej krawędzi
» 2010-12-28 05:24:20
Już prawie mi wszystko działa tylko mam mały wkurzający problem z ograniczeniem prawej krawędzi przy powiększaniu. Otóż albo mi wychodzi o jeden za zakres albo zatrzymuje się o jeden za mało, dotyczy tylko powiększania.

C/C++
int x, x1, x2 = 1, y, y1, y2 = 27, z, a, szer, g, f;
char klawisz;
string T[ 10 ];
szer = dl - 1;
z = szer - 1;
a =( z - 1 ) / 2;
y =( 25 - dl ) / 2;
x =( 80 - 2 *( z + z - 1 ) - dl - 4 ) / 2;
do
{
    _setcursortype( _NORMALCURSOR );
    clrscr();
    /*Rysowanie pierwszej litery M*/
    //---Funkcja rysująca dwie pionowe kolumny składające się z litery "M"---
    x1 = x;
    y1 = y;
    gotoxy( x1, y1 );
    for( int i = 1; i <= dl; i++ )
    {
        y1++;
        gotoxy( x1, y1 );
        cout << 'M';
        x1 = x + 2 *( z - 1 );
        gotoxy( x1, y1 );
        cout << 'M';
        x1 = x;
    }
    //---Funkcja
    y1 = y;
    x1 = x;
    gotoxy( x1, y1 );
    for( int i = 1; i <= z; i++ )
    {
        y1++;
        gotoxy( x1, y1 );
        cout << 'M';
        x1++;
    }
    for( int i = 1; i <= z - 1; i++ )
    {
        y1--;
        gotoxy( x1, y1 );
        cout << 'M';
        x1++;
    }
    //---------------------------------------------------------------
    /*Rysowanie drugiej litery M*/
    //---Funkcja rysująca dwie pionowe kolumny składające się z litery "M"---
    x1 = x + 2 *( z - 1 ) + 3;
    y1 = y;
    gotoxy( x1, y1 );
    for( int i = 1; i <= dl; i++ )
    {
        y1++;
        x1 = x + 2 *( z - 1 ) + 3;
        gotoxy( x1, y1 );
        cout << 'M';
        x1 = x + 4 *( z - 1 ) + 3;
        gotoxy( x1, y1 );
        cout << 'M';
        x1 = x;
    }
    y1 = y;
    x1 = x + 2 *( z - 1 ) + 3;
    gotoxy( x1, y1 );
    for( int i = 1; i <= z; i++ )
    {
        y1++;
        gotoxy( x1, y1 );
        cout << 'M';
        x1++;
       
    }
    for( int i = 1; i <= z - 1; i++ )
    {
        y1--;
        gotoxy( x1, y1 );
        cout << 'M';
        x1++;
    }
    //------------------------------------
    /*Rysowanie ostatniej cyfry z indesku "2"*/
    //---Funkcja rysująca 3 poziome linie składające z cyfr "2"---
    x1 = x + 4 *( z - 1 ) + 5;
    y1 = y + 1;
    gotoxy( x1, y1 );
    for( int i = 1; i < dl; i++ )
    {
        x1++;
        gotoxy( x1, y1 );
        cout << '2';
        y1 = y +(( dl - dl % 2 ) / 2 - 1 ) + 2;
        gotoxy( x1, y1 );
        cout << '2';
        y1 = y + dl;
        gotoxy( x1, y1 );
        cout << '2';
        y1 = y + 1;
    }
    //---Funkcja rysująca pionowy, prawy, górny element---
    x1 = x + 4 *( z - 1 ) + 4 + dl;
    y1 = y + 2;
    gotoxy( x1, y1 );
    for( int i = 0; i <( dl - dl % 2 ) / 2 - 1; i++ )
    {
        cout << '2';
        y1++;
        gotoxy( x1, y1 );
    }
    //---Funkcja rysująca pionowy, lewy, dolny element---
    x1 = x + 4 *( z - 1 ) + 6;
    y1 = y + dl -(( dl + dl % 2 ) / 2 - 2 );
    gotoxy( x1, y1 );
    for( int i = 0; i <( dl + dl % 2 ) / 2 - 2; i++ )
    {
        cout << '2';
        y1++;
        gotoxy( x1, y1 );
    }
    x1 = x2;
    y1 = y2;
    gotoxy( x1, y1 );
    for( int i = 0; i < 80; i++ )
         cout << '-';
   
    x1 =( 80 - 8 ) / 2;
    y1 = y2 + 1;
    gotoxy( x1, y1 );
    cout << "LEGENDA:";
    T[ 0 ] = "Powiekszanie: +";
    T[ 1 ] = "Pomniejszanie: -";
    T[ 2 ] = "Przsuniecie w lewo: <-";
    T[ 3 ] = "Przesuniecie w prawo: ->";
    T[ 4 ] = "Przesuniecie w gore: ^";
    T[ 5 ] = "Przesuniecie w dol: *";
    T[ 6 ] = "Wyjscie: ESC";
    g = 0;
    f = 1;
    x1 = 1;
    y1++;
    gotoxy( x1, y1 );
    for( int i = 0; i <= 6; i++ )
    {
        x1 = 1;
        y1++;
        gotoxy( x1, y1 );
        cout << T[ g ];
        x1 = 40;
        //y1++;
        gotoxy( x1, y1 );
        cout << T[ f ];
        if( g <= 6 )
             g = g + 2;
       
        if( f <= 5 )
             f = f + 2;
       
    }
    //---------------------------
    _setcursortype( _NOCURSOR );
    klawisz = getch();
    switch( klawisz )
    {
    case 43: if( dl <= 17 && x <= 80 - 2 *( z + z ) - dl - 3 && y <= 25 && x > 1 && y > 0 )
        {
            dl++;
            szer++;
            z++;
            a++;
            y--;
            x--;
            break;
        }
    case 45: if( dl > 5 && szer > 4 )
        {
            dl--;
            szer--;
            z--;
            a--;
            y++;
            x = x + 3;
            break;
        }
    case 72: if( y > 0 )
        {
            y--;
            break;
        }
    case 80: if( y < 26 - dl )
        {
            y++;
            break;
        }
    case 75: if( x > 1 )
        {
            x--;
            break;
        }
    case 77: if( x < 80 - 2 *( z + z - 1 ) - dl - 2 )
        {
            x++;
            break;
        }
    }
}
while( klawisz != 27 );

P-25717
DejaVu
» 2010-12-28 14:39:33
Pewnie warunki masz nieprawidłowe skoro coś Ci się kopie. Niestety nie przetestuję Twojej aplikacji i nie sprawdzę co masz źle, bowiem nie mam biblioteki/środowiska tego, którego używasz. Czytać całego kodu z kolei nie specjalnie mi się chce ;p
P-25756
« 1 »
  Strona 1 z 1