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 gotoxy(int x, int y);
- void rysowanie(int x, int y, int rozmiar, char znak);
- void przenie(int x, int y, int rozmiar, char znak);
- void HideCursor();
- void start();
- void WindowSize(int Width, int Height);
- void wczytywanie(int &rozmiar, char &znak);
- 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
- WindowSize(90,35);
- start();
- wczytywanie(rozmiar,znak);
- gotoxy(x, y);
- HideCursor();
- rysowanie(x, y, rozmiar, znak);
- przenie(x, y, rozmiar, znak);
- }
- void wczytywanie(int &rozmiar, char &znak) {
- system("CLS");
- cout << "Podaj dlugosc ramienia X-a, z przedzialu 1-9 i zatwierdz enterem \n";
- do{
- while (!( cin >> rozmiar))
- {
- cin.clear();
- cin.sync();
- }
- if (rozmiar <= 0 || rozmiar > 10)
- {
- cout << "Podana dlugosc jest niewlasciwa \n";
- cout << "Prosze podac wartosci liczbowe z zakresu 1-9 i zatwierdzic enterem \n";
- cin >> rozmiar;
- }
- }
- while (rozmiar <= 0 || rozmiar > 10);
- cout << "Wybierz dowolny znak z klawiatury, ktorym ma zostac narysowany X i zatwierdz enterem\n";
- cin >> znak;
- }
- 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 WindowSize(int Width, int Height){ // definicja funkcji ustawienia rozmiaru okna
- _COORD coord;
- coord.X = Width;
- coord.Y = Height;
- _SMALL_RECT Rect;
- Rect.Top = 1;
- 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 gotoxy(int x, int y) //definicja funkcji ustawiającej kursor
- {
- COORD c;
- c.X = x;
- c.Y = y;
- SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), c);
- }
- void przenie(int x, int y, int rozm, char zn) //definicja funkcji odpowiadajacej za zmiane rozmiaru X-a i zmieniajacej jej polozenie
- {
- int rozm1= rozm;
- int x1= x;
- int y1= y;
- char p;
- do
- {
- gotoxy(0, 0); //punkt zaczepienia
- rysowanie(x1, y1, rozm1, zn);
- int xmax = 123-(2*rozm1);
- int xmin = 1;
- int ymin = 1+(2*rozm1);
- int ymax = 30;
- p = _getch();
- switch(p)
- {
- case 75: //strzalka w lewo
- {
- if( x1 >= xmin)
- {
- x1--;
- }
- break;
- }
- case 77: //strzalka w prawo
- {
- if( x1 < xmax)
- {
- x1++;
- }
- break;
- }
- case 72: //strzalka w gore
- {
- if( y1 >= ymin)
- {
- y1--;
- }
- break;
- }
- case 80: //strzalka w dól
- {
- if( ymax >= y1)
- {
- y1++;
- }
- break;
- }
- case '+': //powiekszenie
- {
- if( rozm1 < 10)
- {
- rozm1++;
- }
- break;
- }
- case '-': //zmiejszenie
- {
- if( rozm1 > 1)
- {
- rozm1--;
- }
- break;
- }
- }
- }while(p != 27);
- }
- void start(){
- cout << " Napisz program rysowania znakiem ASCII poniższej figury chujem." << endl;
- cout << "---------------\n";
- cout << "| |\n";
- cout << "| * * |\n";
- cout << "| * * |\n";
- cout << "| ** |\n";
- cout << "| * * |\n";
- cout << "| * * |\n";
- cout << "| |\n";
- cout << "---------------\n";
- cout << " Program powinien umożliwić: "<< endl;
- cout << "− wybór znaku kodu ASCII;" << endl;
- cout << "− wczytanie początkowych rozmiarów figury;" << endl;
- cout << "− przesuwanie figury klawiszami ←, →, ↑, ↓;"<< endl;
- cout << "− powiększanie oraz zmniejszanie rozmiaru figury za pomocą klawiszy + i -;"<< endl;
- cout << "− ograniczenie przesuwania i rozmiarów figury do obszaru ekranu;"<< endl;
- _getch();
- }
- void rysowanie(int x, int y, int rozmiar, char znak){
- int x1 = x;
- int y1 = y;
- int y2=y1;
- int rozmiar1 = rozmiar;
- system("cls");
- gotoxy(x, y); // Ustawienie punktu zaczepienia
- for (int i=0; i<rozmiar; i++) // od lewego gornego
- {
- gotoxy(x1, y1);
- if (i==0) {
- cout << "o";}
- else {
- }
- x1++;
- y1++;
- cout << znak;
- }
- for (int i = 0; i<rozmiar; i++){ //rysowanie gornej czeêœci figury
- gotoxy(x1, y2);
- x1--;
- y2++;
- cout << znak << endl;
- } }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement