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

rysowanie figury za pomocą znaków

Ostatnio zmodyfikowano 2011-01-14 17:02
Autor Wiadomość
DejaVu
» 2011-01-10 21:02:39
No to teraz zamień 80 i 25 wzorami, które zostały podane i będzie gotowe.
P-26420
killer625
Temat założony przez niniejszego użytkownika
» 2011-01-10 21:12:18
z wzorami jest dokładnie tak samo.
P-26422
DejaVu
» 2011-01-10 21:59:14
Jak nie dopisałeś warunków, które Ci podałem to nic dziwnego, że nic się nie dzieje. To co dopisałeś jest tylko i wyłącznie do ustalenia szerokości i wysokości konsoli.
P-26429
killer625
Temat założony przez niniejszego użytkownika
» 2011-01-10 22:43:29
okej, dodałem te warunki, aczkolwiek działa to na góre i lewo ale w dół i w prawo figura sie znow przenosi w pojedynczej linii. Nie wiem może źle warunki wpisałem.

C/C++
#include <iostream>
#include <conio2.h>
#include <windows.h>
using namespace std;
const int Esq = 27;
int main()

{
    int x, y, x1, y1, bok;
    char klawisz, a;
    x = 40; y = 8;
   
    cout << "Podaj rozmiar boku: ";
    cin >> bok;
   
    cout << "Podaj znak z ktorego ma byc zbudowana figura: ";
    cin >> a;
   
    do
    {
        CONSOLE_SCREEN_BUFFER_INFO csbi;
        GetConsoleScreenBufferInfo( GetStdHandle( STD_OUTPUT_HANDLE ), & csbi );
        int console_size_x = csbi.srWindow.Right - csbi.srWindow.Left + 1;
        int console_size_y = csbi.srWindow.Bottom - csbi.srWindow.Top + 1;
       
        if( x - bok > 80 )
             x = 80 - bok;
       
        if( x < 1 )
             x = 1;
       
        if( y - bok > 25 )
             y = 25 - bok;
       
        if( y < 1 )
             y = 1;
       
       
        _setcursortype( _NORMALCURSOR );
        clrscr();
       
        x1 = x; y1 = y;
        gotoxy( x1, y1 );
        for( int i = 1; i <= bok; i++ ) // górna krawedz
             cout << a;
       
        for( int i = 1; i <= bok - 2; i++ ) // boki
        {
            y1++;
            x1 = x + bok - 2;
            gotoxy( x1, y1 );
            cout << a;
            x1 = x;
        }
        y1++;
        gotoxy( x1, y1 );
        for( int i = 1; i <= bok; i++ ) // dolna krawedz
             cout << a;
       
        _setcursortype( _NOCURSOR ); // wylaczenie kursora
        klawisz = getch();
        switch( klawisz )
        {
        case '+': { bok = bok + 2; // powiekszenie
                x--; y--;
                break; }
        case '-': { bok = bok - 2; // zmniejszenie
                x++; y++;
                break; }
        case 75: { x--; break; } // przesuniecie w lewo
        case 77: { x++; break; } // przesuniecie w prawo
        case 72: { y--; break; } // przesuniecie do gory
        case 80: { y++; break; } // przesuniecie do dolu
        case Esq: { break; } // wyjscie 
        }
    }
    while( klawisz != Esq );
   
    return 0;
}
P-26430
DejaVu
» 2011-01-10 23:32:47
Ustal o ile za daleko możesz ją przesunąć i popraw warunki oraz wartość maksymalną jaka może być uzyskana na każdej z osi.
P-26431
killer625
Temat założony przez niniejszego użytkownika
» 2011-01-10 23:43:57
hmm, jak ustawiłem np 75 i 20 dla x i y to przy przesuwaniu w góre i lewo jest dalej ok, a w dół i prawo przewija się poza okno aż zniknie cała i pojawia się od nowa w rogu. ehhhh ciężki orzech do zgryzienia.
P-26432
DejaVu
» 2011-01-10 23:47:22
No jak kto ciężki? Maksymalna pozycja to rozmiar ekranu minus szerokość rysowanej figury (i minus jeden, jeżeli Twoje gotoxy liczy współrzędne od (1,1)). Czysta matematyka się kłania.
P-26433
killer625
Temat założony przez niniejszego użytkownika
» 2011-01-11 09:37:32
już chyba próbowałem wszystkiego co tylko mi do głowy przyszło i w dalszym ciągu wychodzi poza dolną i prawą krawędź.
P-26434
1 2 « 3 » 4 5 6 7
Poprzednia strona Strona 3 z 7 Następna strona