Advertisement
Guest User

projekt

a guest
Jan 22nd, 2018
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.81 KB | None | 0 0
  1. // Autor - Tomasz Jasiński
  2.  
  3. /*------------------------------Załączanie bibliotek i deklaracje-------------------------------*/
  4.  
  5. #include "stdafx.h" // Prekompilowany plik nagłowkowy projektu Visual Studio 2017
  6. #include "iostream" // Załączenie biblioteki obsługującej strumień wejścia/wyjścia
  7. #include <conio.h> // Załączenie biblioteki obsługującej funkcję _getch()
  8. #include <Windows.h> // Załączenie biblioteki pozwalającej na obsługę okna konsoli (określanie rozdzielczości, współrzędnych itp.)
  9. using namespace std; // Deklaracja korzystania z przestrzeni nazw std
  10.  
  11. /*------------------------------Spis funkcji uzywanych w programie------------------------------*/
  12.  
  13. void gotoxy(int x, int y) // Funkcja określająca współrzędne punktu x i y, oraz ustawiająca kursor
  14. {
  15. COORD c;
  16. c.X = x;
  17. c.Y = y;
  18. SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), c);
  19. }
  20.  
  21. void HideCursor() // Funkcja ukrywająca kursor
  22. {
  23. ::HANDLE hConsoleOut = ::GetStdHandle(STD_OUTPUT_HANDLE);
  24. ::CONSOLE_CURSOR_INFO hCCI;
  25. ::GetConsoleCursorInfo(hConsoleOut, &hCCI);
  26. hCCI.bVisible = FALSE;
  27. ::SetConsoleCursorInfo(hConsoleOut, &hCCI);
  28. }
  29.  
  30. void rozdzielczosc() // Funkcja określająca położenie i nową rozdzielczość okna
  31. {
  32. HWND console = GetConsoleWindow();
  33. RECT window;
  34. GetWindowRect(console, &window);
  35. MoveWindow(console, window.left, window.top, 800, 600, TRUE);
  36. }
  37.  
  38. void wstep() // Opis programu
  39. {
  40. cout << endl << " OPIS" << endl;
  41. cout << "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" << endl;
  42. cout << " Program narysuje figure za pomoca wybranego znaku kodu ASCII." << endl;
  43. cout << " *Mozna przemieszczac figure za pomoca strzalek kierunkowych klawiatury." << endl;
  44. cout << " *Mozna takze zmieniac wielkosc figury za pomoca przyciskow:" << endl;
  45. cout << " (+) ktory zwieksza powierzchnie figury, oraz" << endl;
  46. cout << " (-) ktory ja zmniejsza." << endl;
  47. cout << " *W celu zakonczenia programu nacisnij przycisk (ESC)." << endl;
  48. cout << " Nie mozesz powiekszac figury i przemieszczac jej poza krawedzie okna konsoli." << endl;
  49. cout << "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" << endl << endl;
  50. }
  51.  
  52. void wczytanieDanych(char &znak, int &rozmiar) // Funkcja wczytująca dane do programu
  53. {
  54. cout << "Podaj znak kodu ASCII jakim ma byc rysowana figura: ";
  55. cin >> znak;
  56. do {
  57. cout << endl << "Podaj poczatkowy rozmiar figury (5-30): ";
  58. cin >> rozmiar;
  59. if (rozmiar < 5 || rozmiar > 30) cout << "Podaj liczbe z zakresu 5-30"<<endl;
  60. } while (rozmiar < 5 || rozmiar > 30);
  61. }
  62.  
  63. 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
  64. {
  65. do
  66. {
  67. system("cls");
  68. x1 = x; y1 = y;
  69. gotoxy(x1, y1);
  70. for (int i = 0; i < rozmiar / 2; i++) // Rysowanie powierzchni skośnych pomiędzy ramionami
  71. {
  72. x1 = x + i;
  73. gotoxy(x1, y1);
  74. cout << znak;
  75. x1 = x + rozmiar - i - 1;
  76. gotoxy(x1, y1);
  77. cout << znak << endl;
  78. y1++;
  79. }
  80.  
  81. if (rozmiar % 2) // Określenie środka figury w przypadku jej nieparzystego rozmiaru
  82. {
  83. x1 = x + rozmiar / 2;
  84. gotoxy(x1, y1);
  85. y1++;
  86. cout << znak << endl;
  87. }
  88. x1 = x; y1 = y;
  89. for (int i = 1; i <= rozmiar - 2; i++) // Rysowanie ramion figury
  90. {
  91. y1++;
  92. gotoxy(x1, y1);
  93. cout << znak;
  94. x1 = x + rozmiar - 1;
  95. gotoxy(x1, y1);
  96. cout << znak;
  97. x1 = x;
  98. }
  99. HideCursor();
  100. klawisz = _getch();
  101. switch (klawisz)
  102. {
  103. case '+': {
  104. if (x1 < 2 || x + rozmiar > 105 || y1 > 33 || y<1) break;
  105. rozmiar = rozmiar + 2; // Powiększanie
  106. x--; y--;
  107. break; }
  108. case '-': {
  109. if (rozmiar < 7) break;
  110. rozmiar = rozmiar - 2; // Pomniejszanie
  111. x++; y++;
  112. break; }
  113. case 75: {
  114. if (x < 2) break;
  115. x--; break; } // Przemieszczenie w lewo
  116. case 77: {
  117. if (x+rozmiar > 105) break;
  118. x++; break; } // Przemieszczenie w prawo
  119. case 72: {
  120. if (y < 1) break;
  121. y--; break; } // Przemieszczenie do góry
  122. case 80: {
  123. if (y+rozmiar > 35) break;
  124. y++; break; } // Przemieszczenie w dół
  125. case 27: { break; } // Zakonczenie programu
  126. }
  127. } while (klawisz != 27);
  128. }
  129. /*----------------------------Wykonywanie programu---------------------*/
  130.  
  131. int main() // Funkcja main wykonująca program
  132. {
  133. rozdzielczosc();
  134. int x = 40, y = 6, x1, y1, rozmiar;
  135. char klawisz, znak;
  136. wstep();
  137. wczytanieDanych(znak, rozmiar);
  138. rysuj(x, x1, y, y1, rozmiar, znak, klawisz);
  139. return 0;
  140. }
  141. /*--------------------------------------------------------------------*/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement