Advertisement
Guest User

Untitled

a guest
Jan 22nd, 2017
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.97 KB | None | 0 0
  1. // projekt.cpp : Defines the entry point for the console application.
  2. //Napisz program rysowania znakiem ASCII figury o kształcie "Z"
  3. //Program powinien umożliwić:
  4. //-wybór znaku kodu ASCII
  5. //-wczytanie początkowych danych figury
  6. //-przesuwanie figury oraz jej pomniejszanie
  7. //-ograniczenie przesuwania i rozmiarów figury do obszaru ekranu
  8.  
  9. #include "stdafx.h"
  10. #include <cstdlib>
  11. #include <iostream>
  12. #include <conio.h>
  13. #include <cstdlib>
  14. #include <Windows.h>
  15.  
  16. using namespace std;
  17.  
  18. //deklaracje funkcji
  19. void gotoxy(int, int);                  //funkcja badajaca polozenie kursora
  20. int wherex();
  21. int wherey();
  22. void Intro();                           //Wstep
  23. void WysSzerKonsoli(int, int);          //Funkcja ustawiajaca poczatkowy rozmiar okna konsoli
  24. void PobierzDane(int &, char &, int &); //Funkcja pobierajaca rozmiar figury, kod znaku ASCII w jakim bedzie rysowana
  25. void Rysuj(int &, char &, int, int);    //Funkcja rysujaca figure za pomoca znaku ASCII
  26. //void przesun();                           //Funkcja pozwalajaca na manipulacje figura
  27. void rozmiar(int &, int &, int &, int);
  28.  
  29. int _tmain(int argc, _TCHAR* argv[])
  30. {
  31.     WysSzerKonsoli(100, 50);
  32.     Intro();
  33.     int wysokoscfigury = 50;
  34.     int szerokoscfigury = 25;
  35.     int szerokosc_okna = 100;
  36.     int wysokosc_okna = 50;
  37.     int ascii, size = 50, x = size, y = size;
  38.     char znak;
  39.     PobierzDane(ascii, znak, size);
  40.     Rysuj(size, znak, wysokoscfigury, szerokoscfigury);
  41.     rozmiar(x, y, size, ascii);
  42.     //przesun();
  43.  
  44.     _getch();
  45.     return 0;
  46. }
  47. void gotoxy(int x, int y)
  48. {
  49.     COORD c;
  50.     c.X = x;
  51.     c.Y = y;
  52.     SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), c);
  53. }
  54. int wherex()
  55. {
  56.  
  57.     CONSOLE_SCREEN_BUFFER_INFO csbi;
  58.     GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &csbi);
  59.     return csbi.dwCursorPosition.X;
  60. }
  61. int wherey()
  62. {
  63.     CONSOLE_SCREEN_BUFFER_INFO csbi;
  64.     GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &csbi);
  65.     return csbi.dwCursorPosition.Y;
  66. }
  67. void Intro()
  68. {
  69.     cout << "Program umozliwia rysowanie figury 'Z' przy pomocy podanego znaku ASCII\no wybranym rozmiarze." << endl << endl;
  70.     cout << "Dodatkowo figura moze byc przesuwana za pomoca strzalek na klawiaturze\noraz zmniejszana i powiekszana znakami - i +." << endl << endl;
  71.     cout << "Klawisz ESC konczy dzialanie programu." << endl << endl;
  72. }
  73. void WysSzerKonsoli(int szerokosc_okna, int wysokosc_okna) //funkcja ustawiajaca poczatkowa szerokosc i wysokosc okna konsoli
  74. {
  75.     _COORD coord;
  76.     coord.X = szerokosc_okna;
  77.     coord.Y = wysokosc_okna;
  78.  
  79.     _SMALL_RECT Rect;
  80.     Rect.Top = 0;
  81.     Rect.Left = 0;
  82.     Rect.Bottom = wysokosc_okna - 1;
  83.     Rect.Right = szerokosc_okna - 1;
  84.  
  85.     HANDLE Handle = GetStdHandle(STD_OUTPUT_HANDLE);      
  86.     SetConsoleScreenBufferSize(Handle, coord);            
  87.     SetConsoleWindowInfo(Handle, TRUE, &Rect);            
  88. }
  89. void PobierzDane(int &ascii, char &znak, int &size)
  90. {                                                                              
  91.     do
  92.     {                                                                                      
  93.         cout << "Podaj kod znaku ASCII (33-127): ";     //Petla pobierajaca ASCII i sprawdzajaca czy znajduje sie on w odpowiednim zakresie    
  94.         cin >> ascii;
  95.         if (ascii<33 || ascii>127)
  96.         {
  97.             cout << "Liczba nie znajduje sie w zadanym zakresie.\nNacisnij dowolny klawisz aby wpisac ponownie";
  98.             _getch();
  99.         }
  100.     } while (ascii<33 || ascii>127);
  101.  
  102.     znak = (char)ascii;
  103.  
  104.     do
  105.     {
  106.         cout << "Podaj rozmiar poczatkowy z zakresu 2-20: "; //Petla pobierajaca poczatkowy rozmiar figury
  107.         cin >> size;
  108.         if (size<2 || size>20)
  109.         {
  110.             cout << "Liczba nie znajduje sie w zadanym zakresie.\nNacisnij dowolny klawisz aby wpisac ponownie";
  111.             _getch();
  112.             system("cls");
  113.         }
  114.     } while (size<2 || size>20);
  115.  
  116.     system("cls");
  117. }
  118.  
  119. void Rysuj(int & size, char & znakascii, int wysokoscfigury, int szerokoscfigury) //funkcja rysujaca figure za pomoca funkcji gotoxy()
  120. {
  121.  
  122.         system("cls");
  123.         int i, x, y;
  124.         int bok = size;
  125.         for (i = 0, x = wysokoscfigury - bok / 2, y = szerokoscfigury + bok / 2; i <= size; i++, x++)   //poziom, gora
  126.         {
  127.             gotoxy(x, y);
  128.             cout << znakascii;
  129.         }
  130.         for (i = 0, x = wysokoscfigury, y = szerokoscfigury; i <= bok / 2; i++, x++, y--)               //skos
  131.         {
  132.             gotoxy(x, y);
  133.             cout << znakascii;
  134.         }
  135.         for (i = 0, x = wysokoscfigury, y = szerokoscfigury; i <= bok / 2; i++, x--, y++)               //skos
  136.         {
  137.             gotoxy(x, y);
  138.             cout << znakascii;
  139.         }
  140.  
  141.         for (i = 0, x = wysokoscfigury + bok / 2, y = szerokoscfigury - bok / 2; i <= size; i++, x--)   //poziom, dol
  142.         {
  143.             gotoxy(x, y);
  144.             cout << znakascii;
  145.         }
  146.        
  147. }
  148.  
  149. /*void przesun()
  150. {
  151.     int size = 20;
  152.     char znakascii;
  153.     int wysokoscfigury=size, szerokoscfigury=size;
  154.     int wiersz = 50, szerokosc = size, kolumna = 100;
  155.     Rysuj(size, znakascii, wysokoscfigury, szerokoscfigury);
  156.     int znak = 0;
  157.     while ((znak = _getch()) != 27);
  158.     {
  159.    
  160.         switch (znak)
  161.         {
  162.            
  163.         case 77: //przesuwanie w prawo
  164.             wysokoscfigury++;
  165.             if (wysokoscfigury > wiersz)
  166.             {
  167.                 wysokoscfigury = wiersz;
  168.  
  169.             }
  170.             break;
  171.         case 75: // przesuwanie w lewo
  172.             wysokoscfigury--;
  173.             if (wysokoscfigury < szerokosc / 2)
  174.             {
  175.                 wysokoscfigury = szerokosc / 2;
  176.             }
  177.             break;
  178.         case 72:  //przesuwa w gore
  179.             szerokoscfigury--;
  180.             if (szerokoscfigury < szerokosc + szerokosc / 2)
  181.             {
  182.                 szerokoscfigury = szerokosc + szerokosc / 2;
  183.             }
  184.             break;
  185.         case 80:  //przesuwanie w dol
  186.             szerokoscfigury++;
  187.             if (szerokoscfigury > kolumna)
  188.             {
  189.                 szerokoscfigury = kolumna;
  190.             }
  191.             break;
  192.         case 43:szerokosc++;    //powoduje powiekszenie figury za pomoca +
  193.             if (wysokoscfigury - (szerokosc + szerokosc / 2) <= 0 || wysokoscfigury - (szerokosc + szerokosc / 2) >= wiersz)//ograniczenie powiekszania figury
  194.             {
  195.                 szerokosc--;
  196.             }
  197.             break;
  198.         case 45:szerokosc--;    //powoduje zmniejszenie figury za pomoca -
  199.             if (szerokosc <= 1)
  200.             {
  201.                 szerokosc = 1;  //do wielkosci szerokosc =1
  202.             }
  203.             break;
  204.            
  205.         }
  206.         Rysuj(size, znakascii, wysokoscfigury, szerokoscfigury);
  207.        
  208.     }
  209. }*/
  210. void rozmiar(int &x, int &y, int &size, int znakascii)
  211. {
  212.     if (znakascii == 43 && size<20) // ASCII 43 = znak "+"
  213.         size++; // Zwiekszamy rozmiar o 1
  214.     else if (znakascii == 45 && size>2) // ASCII 45 = znak "-"
  215.         size--; // Zmniejszamy rozmiar o 1
  216. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement