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ść
ison
» 2011-01-13 23:30:32
w tym swoim programie, który podałeś ostatnio

zamień
C/C++
for( int i = 1; i <= bok - 2; i++ ) // boki
{
    y1++;
    x1 = x + bok - 2;
    gotoxy( x1, y1 );
    cout << a;
    x1 = x;
}
na
C/C++
for( int i = 1; i <= bok; i++ ) // boki
{
    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:
C/C++
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:
C/C++
#include <windows.h>
void gotoxy( const int x, const int y )
{
    COORD tPosition = { x, y };
    SetConsoleCursorPosition( GetStdHandle( STD_OUTPUT_HANDLE ), tPosition );
}
P-26504
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.
P-26507
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?
P-26510
killer625
Temat założony przez niniejszego użytkownika
» 2011-01-14 14:47:29
tak dokładnie
P-26511
ison
» 2011-01-14 14:55:00
zamień
C/C++
case '+': { bok = bok + 2; // powiekszenie
    x--; y--;
    break; }
case '-': { bok = bok - 2; // zmniejszenie
    x++; y++;
    break; }
na
C/C++
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;
P-26513
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  ?
C/C++
for( int i = 1; i <= bok; i++ ) // boki
{
    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
C/C++
y1++;
x1 = x + bok +( i <= bok / 2 ? i:( bok - i + 1 ) );
gotoxy( x1, y1 );
cout << a;
x1 = x;
P-26514
ison
» 2011-01-14 15:22:05
C/C++
x1 = x +( i <= bok / 2 ? i:( bok - i + 1 ) );

//moje podwójne buforowanie w konsoli wyciąga ~4500 fpsów na twoim programie :)
P-26515
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 ?
P-26517
1 2 3 4 5 « 6 » 7
Poprzednia strona Strona 6 z 7 Następna strona