Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <windows.h>
- #include "conio.h"
- using namespace std;
- void czytaj_dane(int &rozmiar, char &znak); //funkcja wczytujaca dane od użytkownika
- void gotoxy(int x, int y); // funkcja przerunięcia elementu
- void rysuj(int x, int y, int rozmiar, char znak); // funkcja rysująca figurę
- void przesun(int x, int y, int rozmiar, char znak); //funkcja odczytująca kierunek przesunięcia
- void HideCursor(); //ukrycie kursora
- void SetWindow(int Width, int Height); // funcka ustawiająca rozmiar okna
- void poczatek(); // funkcja wyświetlająca informacje początkowe
- int main(){
- int rozmiar = 0; // deklaracja zmiennej rozmaru
- char znak; // deklaracja zmiennej znaku ktorym będzie rysowana figura
- int x = 60; // ustawienie środka dla x
- int y = 8; // ustawienie środka dla y
- poczatek();
- czytaj_dane(rozmiar, znak);
- SetWindow(124,35); //ustawienie wielkości okna
- gotoxy(x, y);
- HideCursor();
- rysuj(x, y, rozmiar, znak);
- przesun(x, y, rozmiar, znak);
- }
- //================================================================================================//
- void czytaj_dane(int &rozmiar, char &znak){
- system("CLS");
- cout << "Podaj rozmiar początkowy obiektu (1-14)" << endl;
- do {
- while(!(cin>>rozmiar)){ //dopóki strumień jest w stanie błędu -> dopóki podawane są błędne dane
- cout << "Proszę podać wartość liczbową w zakresie 1-14" << endl;
- cin.clear(); //kasowanie flagi błędudu strumienia
- cin.sync(); //kasowanie zbędnychh znaków z bufora
- }
- if(rozmiar <= 0 || rozmiar > 14){
- cout << "Rozmiar nie moze być mniejszy niz 1, ani większy niz 14" << endl;
- }
- } while(rozmiar <= 0 || rozmiar > 14);
- cout << "Podaj znak"<< endl;
- cin >> znak;
- }
- void gotoxy(int x, int y){
- COORD c;
- c.X = x;
- c.Y = y;
- SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), c);
- }
- void rysuj(int x, int y, int rozmiar, char znak){
- int x1 = x;
- int y1 = y;
- int rozmiar1 = rozmiar;
- system("cls");
- gotoxy(x, y); // Ustawienie punktu zaczepienia
- for (int i = 0; i<rozmiar; i++){ //rysowanie gornej czeęści figury
- gotoxy(x1, y1);
- x1++;
- y1++;
- cout << znak << endl;
- }
- for (int i = 0; i<rozmiar + 1; i++){ //rysowanie dolnej części figury
- gotoxy(x1, y1);
- x1--;
- y1++;
- cout << znak << endl;
- }
- }
- void przesun(int x, int y, int rozmiar, char znak){ //definicja funkcji odpowiedzialna za ruch figory
- int rozmiar1 = rozmiar;
- int x1 = x;
- int y1 = y;
- char klawisz;
- do {
- gotoxy(0,0);
- cout << "Klawisz Esc kokończy pracę programu";
- rysuj(x1, y1, rozmiar1, znak);
- //Ograniczenia ekranu
- int xmin = rozmiar1 + 1;
- int ymin = 1;
- int xmax = 123;
- int ymax = 33 - (rozmiar1*2);
- klawisz = _getch();
- switch (klawisz) {
- case '+' :{ //zwiększanie rozmiaru figory
- if(rozmiar1 < 14){
- rozmiar1++;
- }
- break;
- }
- case '-' :{ //zmniejszanie rozmiaru figory
- if(rozmiar1 > 1){
- rozmiar1--;
- }
- break;
- }
- case 77:{ // Przesunięcie w prawo
- if(x1 < xmax){
- x1++;
- }
- break;
- }
- case 75:{ // Przesunięcie w lewo
- if(x1 >= xmin){
- x1--;
- }
- break;
- }
- case 72:{ // Przesunięcie w gore
- if(y1 >= ymin){
- y1--;
- }
- break;
- }
- case 80:{ // Przesunięcie w doĹ‚
- if(ymax >= y1){
- y1++;
- }
- break;
- }
- }
- } while(klawisz != 27); //zakończenie pracy programu przez klawisz esc
- }
- void HideCursor(){ //definicja funkcji na ukrycie kursora
- ::HANDLE hConsoleOut = ::GetStdHandle(STD_OUTPUT_HANDLE);
- ::CONSOLE_CURSOR_INFO hCCI;
- ::GetConsoleCursorInfo(hConsoleOut, &hCCI);
- hCCI.bVisible = FALSE;
- ::SetConsoleCursorInfo(hConsoleOut, &hCCI);
- }
- void SetWindow(int Width, int Height){ // definicja funkcji ustawienia rozmiaru okna
- _COORD coord;
- coord.X = Width;
- coord.Y = Height;
- _SMALL_RECT Rect;
- Rect.Top = 0;
- Rect.Left = 0;
- Rect.Bottom = Height - 1;
- Rect.Right = Width - 1;
- HANDLE Handle = GetStdHandle(STD_OUTPUT_HANDLE); // Hak
- SetConsoleScreenBufferSize(Handle, coord); // Ustawienie rozmiaru bufora
- SetConsoleWindowInfo(Handle, TRUE, &Rect); // Ustawienie rozmiaru okna
- }
- void poczatek(){ // definicja funkcji ekranu poczatkowego
- cout << endl << endl << endl;
- cout << " Napisz program rysowania znakiem ASCII poniższej figury. Program powinien umożliwiał" << endl;
- cout << " -wybĂłr znaku kodu ASCII;" << endl;
- cout << " -wczytanie początkowych rozmiarów figury;" << endl;
- cout << " -zmianą wielkości figury klawiszami +˛ i -" << endl;
- cout << " -przesuwanie figury za pomocą kursorów “;" << endl;
- cout << " -ograniczenie przesuwania i rozmiarów figury do obszaru ekranu;" << endl;
- cout << endl << endl << endl;
- cout << " *" << endl;
- cout << " *" << endl;
- cout << " *" << endl;
- cout << " *" << endl;
- cout << " *" << endl;
- cout << " *" << endl;
- cout << " *" << endl;
- cout << " *" << endl;
- cout << " *" << endl;
- cout << endl << endl << "Sławomir Pluciński" << endl;
- cout << endl << endl << "Kliknij dowolny klawisz" << endl;
- _getch();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement