rysowanie figury za pomocą znaków
Ostatnio zmodyfikowano 2011-01-14 17:02
ison |
» 2011-01-13 23:30:32 w tym swoim programie, który podałeś ostatnio zamień for( int i = 1; i <= bok - 2; i++ ) { y1++; x1 = x + bok - 2; gotoxy( x1, y1 ); cout << a; x1 = x; }
na for( int i = 1; i <= bok; i++ ) { y1++; x1 = x + bok -( i <= bok / 2 ? i:( bok - i + 1 ) ); gotoxy( x1, y1 ); cout << a; x1 = x; }
o taki strzałkowy efekt Ci chodziło? co do wychodzenia figury poza ekran to zamień te 4 ify na: if( x > 80 - bok ) x = 80 - bok;
if( x < 0 ) x = 0;
if( y > 22 - bok ) y = 22 - bok;
if( y < 0 ) y = 0;
(zakładam, że górny lewy róg konsoli ma pozycję 0,0, nie wiem jak działa funkcja gotoxy z conio2.h) gotoxy którego używam: #include <windows.h> void gotoxy( const int x, const int y ) { COORD tPosition = { x, y }; SetConsoleCursorPosition( GetStdHandle( STD_OUTPUT_HANDLE ), tPosition ); }
|
|
killer625 Temat założony przez niniejszego użytkownika |
» 2011-01-14 09:07:39 wielkie dzięki to się zgadza, tyle że przy powiększaniu figury dalej wychodzi sobie gdzie chce. |
|
ison |
» 2011-01-14 14:33:06 jak wychodzi gdzie chce? Chodzi Ci o to że można ją powiększyć do rozmiarów większych niż ma konsola?
|
|
killer625 Temat założony przez niniejszego użytkownika |
» 2011-01-14 14:47:29 tak dokładnie |
|
ison |
» 2011-01-14 14:55:00 zamień case '+': { bok = bok + 2; x--; y--; break; } case '-': { bok = bok - 2; x++; y++; break; }
na case '+': if( bok <=( console_size_y < console_size_x ? console_size_y - 4: console_size_x - 4 ) ) { bok += 2; --x; --y; } break; case '-': if( bok > 3 ) { bok -= 2; ++x; ++y; } break;
|
|
killer625 Temat założony przez niniejszego użytkownika |
» 2011-01-14 15:17:09 działa ! ostatnie pytanie z mojej strony, jak przerobić tą część kodu aby strzałka znajdowała się po przeciwnej stronie figury ? for( int i = 1; i <= bok; i++ ) { y1++; x1 = x + bok -( i <= bok / 2 ? i:( bok - i + 1 ) ); gotoxy( x1, y1 ); cout << a; x1 = x; }
w taki sposób: oooooooooooooo o o o o o ooooooooooooooo myślałem że może starczy taka zmiana ale jednak nie, bo po zmianie rozmiaru bok przesuwa się za daleko y1++; x1 = x + bok +( i <= bok / 2 ? i:( bok - i + 1 ) ); gotoxy( x1, y1 ); cout << a; x1 = x;
|
|
ison |
» 2011-01-14 15:22:05 x1 = x +( i <= bok / 2 ? i:( bok - i + 1 ) );
//moje podwójne buforowanie w konsoli wyciąga ~4500 fpsów na twoim programie :) |
|
killer625 Temat założony przez niniejszego użytkownika |
» 2011-01-14 15:31:41 hehe nieźle :D wielkie dzięki wszystko działa :) tylko pytanie czy dałoby się to jakoś tak zmienić że jak ktoś sobie zmieni rozmiar konsoli ( w sensie ze myszką sobie okienko poszerzy ) to żeby figura mogła ruszać się po tym zwiększonym oknie, czy to może już jakaś fizyka kwantowa programowania by była ? |
|
1 2 3 4 5 « 6 » 7 |