Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Autor - Tomasz Jasiński
- /*------------------------------Załączanie bibliotek i deklaracje-------------------------------*/
- #include "stdafx.h" // Prekompilowany plik nagłowkowy projektu Visual Studio 2017
- #include "iostream" // Załączenie biblioteki obsługującej strumień wejścia/wyjścia
- #include <conio.h> // Załączenie biblioteki obsługującej funkcję _getch()
- #include <Windows.h> // Załączenie biblioteki pozwalającej na obsługę okna konsoli (określanie rozdzielczości, współrzędnych itp.)
- using namespace std; // Deklaracja korzystania z przestrzeni nazw std
- /*------------------------------Spis funkcji uzywanych w programie------------------------------*/
- void gotoxy(int x, int y) // Funkcja określająca współrzędne punktu x i y, oraz ustawiająca kursor
- {
- COORD c;
- c.X = x;
- c.Y = y;
- SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), c);
- }
- void HideCursor() // Funkcja ukrywająca kursor
- {
- ::HANDLE hConsoleOut = ::GetStdHandle(STD_OUTPUT_HANDLE);
- ::CONSOLE_CURSOR_INFO hCCI;
- ::GetConsoleCursorInfo(hConsoleOut, &hCCI);
- hCCI.bVisible = FALSE;
- ::SetConsoleCursorInfo(hConsoleOut, &hCCI);
- }
- void rozdzielczosc() // Funkcja określająca położenie i nową rozdzielczość okna
- {
- HWND console = GetConsoleWindow();
- RECT window;
- GetWindowRect(console, &window);
- MoveWindow(console, window.left, window.top, 800, 600, TRUE);
- }
- void wstep() // Opis programu
- {
- cout << endl << " OPIS" << endl;
- cout << "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" << endl;
- cout << " Program narysuje figure za pomoca wybranego znaku kodu ASCII." << endl;
- cout << " *Mozna przemieszczac figure za pomoca strzalek kierunkowych klawiatury." << endl;
- cout << " *Mozna takze zmieniac wielkosc figury za pomoca przyciskow:" << endl;
- cout << " (+) ktory zwieksza powierzchnie figury, oraz" << endl;
- cout << " (-) ktory ja zmniejsza." << endl;
- cout << " *W celu zakonczenia programu nacisnij przycisk (ESC)." << endl;
- cout << " Nie mozesz powiekszac figury i przemieszczac jej poza krawedzie okna konsoli." << endl;
- cout << "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" << endl << endl;
- }
- void wczytanieDanych(char &znak, int &rozmiar) // Funkcja wczytująca dane do programu
- {
- cout << "Podaj znak kodu ASCII jakim ma byc rysowana figura: ";
- cin >> znak;
- do {
- cout << endl << "Podaj poczatkowy rozmiar figury (5-30): ";
- cin >> rozmiar;
- if (rozmiar < 5 || rozmiar > 30) cout << "Podaj liczbe z zakresu 5-30"<<endl;
- } while (rozmiar < 5 || rozmiar > 30);
- }
- void rysuj(int x, int &x1, int y, int &y1, int rozmiar, char &znak, char &klawisz) // Funkcja rysująca figurę i obsługująca przemieszczanie i skalowanie jej
- {
- do
- {
- system("cls");
- x1 = x; y1 = y;
- gotoxy(x1, y1);
- for (int i = 0; i < rozmiar / 2; i++) // Rysowanie powierzchni skośnych pomiędzy ramionami
- {
- x1 = x + i;
- gotoxy(x1, y1);
- cout << znak;
- x1 = x + rozmiar - i - 1;
- gotoxy(x1, y1);
- cout << znak << endl;
- y1++;
- }
- if (rozmiar % 2) // Określenie środka figury w przypadku jej nieparzystego rozmiaru
- {
- x1 = x + rozmiar / 2;
- gotoxy(x1, y1);
- y1++;
- cout << znak << endl;
- }
- x1 = x; y1 = y;
- for (int i = 1; i <= rozmiar - 2; i++) // Rysowanie ramion figury
- {
- y1++;
- gotoxy(x1, y1);
- cout << znak;
- x1 = x + rozmiar - 1;
- gotoxy(x1, y1);
- cout << znak;
- x1 = x;
- }
- HideCursor();
- klawisz = _getch();
- switch (klawisz)
- {
- case '+': {
- if (x1 < 2 || x + rozmiar > 105 || y1 > 33 || y<1) break;
- rozmiar = rozmiar + 2; // Powiększanie
- x--; y--;
- break; }
- case '-': {
- if (rozmiar < 7) break;
- rozmiar = rozmiar - 2; // Pomniejszanie
- x++; y++;
- break; }
- case 75: {
- if (x < 2) break;
- x--; break; } // Przemieszczenie w lewo
- case 77: {
- if (x+rozmiar > 105) break;
- x++; break; } // Przemieszczenie w prawo
- case 72: {
- if (y < 1) break;
- y--; break; } // Przemieszczenie do góry
- case 80: {
- if (y+rozmiar > 35) break;
- y++; break; } // Przemieszczenie w dół
- case 27: { break; } // Zakonczenie programu
- }
- } while (klawisz != 27);
- }
- /*----------------------------Wykonywanie programu---------------------*/
- int main() // Funkcja main wykonująca program
- {
- rozdzielczosc();
- int x = 40, y = 6, x1, y1, rozmiar;
- char klawisz, znak;
- wstep();
- wczytanieDanych(znak, rozmiar);
- rysuj(x, x1, y, y1, rozmiar, znak, klawisz);
- return 0;
- }
- /*--------------------------------------------------------------------*/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement