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

Przesuwanie figury c++

Ostatnio zmodyfikowano 2023-01-26 19:04
Autor Wiadomość
wiktorlem
Temat założony przez niniejszego użytkownika
Przesuwanie figury c++
» 2023-01-26 18:05:57
Siema!

Mam do wykonania na studia projekt który w skrócie polega na:
Wydrukowaniu określonego kształtu
Określeniu jego podstawowej wielkości i znaku ASCII z którego ma się składać
Dodatkowo ma być możliwość przesuwania go za pomocą strzałek i zwiększania/zmniejszania używając +/-. Mam 4 pierwsze punkty ale kompletnie nie mam pomyslu na to jak zaimplementować przesuwanie danego kształtu/obiektu. Wiem że istnieją zmienne typu COORD, ale nie mogłem znaleźć zbyt wielu informacji o nich. Jeśli ktoś byłby w stanie jakoś to klarownie wytłumaczyć bądź też podrzucić linka do poradnika, (oczywiście anglojęzyczne też wchodzą w gre) byłbym bardzo wdzięczny. Fragment kodu próbowałem użyć z podobnego projektu który znalazłem na jednym forum, ale niezbyt mi wychodziło

Podrzucam mój kod.
C/C++
#include <iostream>
#include <windows.h>
#include <conio.h>
using namespace std;
void rysuj( int w, char z, int x, int y ); //funckja rysująca figurę
void zmien_rozmiar( int w, char z, int x, int y ); //powiekszanie i pomniejszanie figury
void menu(); //menu dla uzytkownika


/* void gotoxy(int x,int y)
{
    COORD c;
    c.X=x;
    c.Y=y;
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),c);
}
 */ //gotoxy
/*
int wherex()
{

    CONSOLE_SCREEN_BUFFER_INFO csbi;
    GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &csbi);
    return csbi.dwCursorPosition.X;
}
int wherey()
{
    CONSOLE_SCREEN_BUFFER_INFO csbi;
    GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &csbi);
    return csbi.dwCursorPosition.Y;
}

  */ // te dziwne funkcje niby od kordow


int main()
{
   
int x = 0, y = 0; //początkowe koordynaty
   
int w = 0; //rozmiar figury
   
char znak; //znak ASCII z którego ma się składać figura
   
char zna;
   
   
//
   
menu();
   
cout << "Podaj rozmiar figury: ";
   
cin >> w;
   
cout << "Podaj znak z klawiatury z ktorego ma sie skladac figura:";
   
cin >> znak;
   
do
   
{
       
rysuj( w, znak, 1, 1 );
       
       
zmien_rozmiar( w, znak, x, y );
       
cout << "zaby zakonczyc dzialanie programu wcisnij enter" << endl;
       
zna = getch();
   
} while( zna != 32 );
   
   
return 0;
}
void menu() //menu dla uzytkownika
{
   
cout << "WITAJ W PROGRAMIE" << endl;
   
cout << "ABY ZMIENIAC ROZMIAR FIGURY WCISNIJ + LUB -" << endl;
   
cout << "ABY PRZESUWAC FIGURE WCISNIJ STRZALKE W GORE, DOL, LEWO, LUB PRAWO" << endl;
   
cout << "ABY ZAKONCZYC DZIALANIE PROGRAMU WCISNIJ SPACJE" << endl;
   
}
void rysuj( int w, char z, int x, int y ) //funckja rysująca figurę

{
   
for( int i = x; i < w; ++i )
   
{
       
for( int j = y; j < w; ++j )
       
{
           
if(( j == x ) ||( j ==( w - 1 ) ) ||( i == j && j > w / 2 ) ||( j + i -( w - 1 ) == x && j <( w - 1 ) / 2 ) ) //rysowanie figury zmienna w odpowiada zmiennej n przy wczytywaniu danych
               
 cout << z;
           
else
               
 cout << " ";
           
       
}
       
cout << endl;
   
}
   
}

void zmien_rozmiar( int w, char z, int x, int y ) //zmiana rozmiaru
{
   
char znak;
   
znak = getch();
   
switch( znak )
   
{
   
case '+':
       
{
           
system( "cls" );
           
w += 1;
           
rysuj( w, z, x, y );
           
break;
       
}
   
case '-':
       
{
           
system( "cls" );
           
w -= 1;
           
rysuj( w, z, x, y );
           
break;
       
}
       
       
    }
   
}

Z góry dzięki!
P-179910
pekfos
» 2023-01-26 19:04:08
Mam 4 pierwsze punkty ale kompletnie nie mam pomyslu na to jak zaimplementować przesuwanie danego kształtu/obiektu.
Wypisz dodatkowe spacje na początku każdej linii by przesuwać w poziomie. Dodatkowe puste linie dla pionu.

Wiem że istnieją zmienne typu COORD, ale nie mogłem znaleźć zbyt wielu informacji o nich.
https://learn.microsoft.com/en-us/windows/console/coord-str
P-179911
« 1 »
  Strona 1 z 1