Advertisement
Guest User

Untitled

a guest
Jan 28th, 2020
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.25 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4. #include <unistd.h>
  5. #include <curses.h>
  6. #define N 24
  7. #define M 80
  8. #define X 9
  9. #define Y 24
  10.  
  11.  
  12. typedef struct Point{
  13. int x;
  14. int y;
  15. } Point;
  16.  
  17. typedef struct Picture{
  18. char **plane;
  19. char **background;
  20. } Picture;
  21.  
  22. void initCurses() {
  23. initscr();
  24. cbreak();
  25. noecho();
  26. keypad(stdscr, TRUE);
  27. curs_set(0);
  28. }
  29.  
  30. void setUp(char **tab)
  31. {
  32. int i=0, j=0;
  33. for(i=0;i<N;i++)
  34. for(j=0;j<M;j++)
  35. tab[i][j] = ' ';
  36. }
  37.  
  38. void setUpPlane(char **tab)
  39. {
  40. int i=0, j=0;
  41. for(i=0;i<X;i++)
  42. for(j=0;j<Y;j++)
  43. tab[i][j] = ' ';
  44.  
  45. }
  46.  
  47. void clearPlane(const Point point)
  48. {
  49. int i,j;
  50. for(i = 0; i<X; i++)
  51. for(j=0; j<Y; j++)
  52. mvaddch(point.x+i,point.y+j,' ');
  53. }
  54.  
  55. void drawPlane(char **plane, const Point point)
  56. {
  57. int i,j;
  58. for(i = 0; i<X; i++)
  59. for(j=0; j<Y; j++)
  60. mvaddch(point.x+i,point.y+j, plane[i][j]);
  61. }
  62.  
  63. void printTab(char **tab)
  64. {
  65. int i,j;
  66. for(i=0;i<N;i++)
  67. for(j=0;j<M;j++)
  68. mvprintw(i,j,"%c", tab[i][j]);
  69. refresh();
  70. }
  71.  
  72. void changeArm(char arm[N][M])
  73. {
  74. static int position = 0;
  75. if(position == 0) {
  76. mvaddch(27,41,'#');
  77. mvaddch(27,42,'#');
  78. mvaddch(27,43,' ');
  79. mvaddch(27,44,' ');
  80. mvaddch(28,41,'\\');
  81. mvaddch(28,43,'\\');
  82. mvaddch(28,44,' ');
  83. mvaddch(29,42,'\\');
  84. mvaddch(29,43,' ');
  85. mvaddch(29,44,'\\');
  86. mvaddch(30,43,'\\');
  87. mvaddch(30,44,'_');
  88. position=1;
  89. }else {
  90. //zmieniamy wartosci w tablicy
  91. mvaddch(27,41,' ');
  92. mvaddch(27,42,' ');
  93. mvaddch(27,43,'#');
  94. mvaddch(27,44,'#');
  95. mvaddch(28,41,' ');
  96. mvaddch(28,43,'|');
  97. mvaddch(28,44,'|');
  98. mvaddch(29,42,' ');
  99. mvaddch(29,43,'|');
  100. mvaddch(29,44,'|');
  101. mvaddch(30,43,'|');
  102. mvaddch(30,44,'|');
  103. position=0;
  104. }
  105.  
  106. Point point;
  107. for(point.x=0;point.x<N;point.x++)
  108. for(point.y=0;point.y<M;point.y++)
  109. mvprintw(point.x, point.y, "%c", arm[N][M]);
  110. refresh();
  111. }
  112.  
  113. WINDOW *newWindow(int hight, int width, const Point startingPoint)
  114. {
  115. WINDOW *localWindow;
  116. localWindow = newwin(hight, width, startingPoint.x, startingPoint.y);
  117. box(localWindow, 0, 0);
  118.  
  119. wrefresh(localWindow);
  120. return localWindow;
  121. }
  122.  
  123. char **newPlane()
  124. {
  125. char **plane = (char **)malloc(X*sizeof(char *));
  126. int i;
  127. for(i=0; i<X; i++)
  128. plane[i] = (char *)calloc(Y, sizeof(char));
  129.  
  130. setUpPlane(plane);
  131.  
  132. return plane;
  133. }
  134.  
  135. char **newBackground()
  136. {
  137. char **background = (char **)malloc(N*sizeof(char *));
  138. int i;
  139. for(i=0; i<N; i++)
  140. background[i] = (char *)calloc(M, sizeof(char));
  141.  
  142. setUp(background);
  143.  
  144. return background;
  145. }
  146.  
  147. Picture *newPicture()
  148. {
  149. Picture *new = (struct Picture *)malloc(sizeof(Picture));
  150. new->plane = newPlane();
  151. new->background = newBackground();
  152.  
  153. return new;
  154. }
  155.  
  156. void deletePicture(Picture *picture)
  157. {
  158. int i;
  159. for(i=0; i<N; i++)
  160. free(picture->background[i]);
  161.  
  162. free(picture->background);
  163.  
  164. for(i=0; i<X; i++)
  165. free(picture->plane[i]);
  166.  
  167. free(picture->plane);
  168.  
  169. free(picture);
  170. }
  171.  
  172. int main()
  173. {
  174. Point point = {0,0};
  175. float r,t;
  176.  
  177. Picture *picture = newPicture();
  178.  
  179. char arm[N][M];
  180.  
  181. initCurses();
  182.  
  183. if(has_colors() == TRUE)
  184. {
  185. start_color();
  186. init_pair(1, COLOR_YELLOW, COLOR_MAGENTA);
  187. init_pair(2, COLOR_BLUE, COLOR_WHITE);
  188. init_pair(3, COLOR_CYAN, COLOR_WHITE);
  189. init_pair(4, COLOR_YELLOW, COLOR_RED);
  190. init_pair(5, COLOR_BLACK, COLOR_GREEN);
  191. init_pair(6, COLOR_MAGENTA, COLOR_WHITE);
  192. }
  193.  
  194. printTab(picture->background);
  195.  
  196. Point point2 = {30,20};
  197.  
  198. WINDOW *window = newWindow(10, 50, point2);
  199.  
  200. for(t=0; t<20.4; t+=0.8)
  201. {
  202. clearPlane(point);
  203. r=5;
  204. point.y=round(r*(t-sin(t)));
  205. point.x=round(r*(1-cos(t)));
  206. drawPlane(picture->plane,point);
  207. changeArm(arm);
  208. if(has_colors() == TRUE)
  209. {
  210. if(t>15)
  211. {
  212. wattron(window, COLOR_PAIR(1) | A_REVERSE);
  213. mvwprintw(window, 1, 1, "Samolot jest nad glowa czlowieka");
  214. wattroff(window, COLOR_PAIR(1) | A_REVERSE);
  215. }
  216. else if(t<2)
  217. {
  218. wattron(window, COLOR_PAIR(2) | A_BOLD);
  219. mvwprintw(window, 1, 1, "Samolot zaczyna lot");
  220. wattroff(window, COLOR_PAIR(2) | A_BOLD);
  221. }
  222. else if(t>2 && t<5)
  223. {
  224. mvwprintw(window, 1, 1, " ");
  225. wattron(window, COLOR_PAIR(3) | A_STANDOUT);
  226. mvwprintw(window, 1, 1, "Samolot wznosi sie");
  227. wattroff(window, COLOR_PAIR(3) | A_STANDOUT);
  228. }
  229. else if(t>6 && t<7)
  230. {
  231. mvwprintw(window, 1, 1, " ");
  232. }
  233. else if(t>7 && t<9)
  234. {
  235. wattron(window, COLOR_PAIR(4) | A_DIM);
  236. mvwprintw(window, 1, 1, "Samolot opada");
  237. wattroff(window, COLOR_PAIR(4) | A_DIM);
  238. }
  239. else if(t>9 && t<10)
  240. {
  241. mvwprintw(window, 1, 1, " ");
  242. }
  243. else if(t>5 && t<18)
  244. {
  245. wattron(window, COLOR_PAIR(5) | A_BLINK);
  246. mvwprintw(window, 3, 1, "Mezczyzna macha reka");
  247. wattroff(window, COLOR_PAIR(5) | A_BLINK);
  248. }
  249. else
  250. {
  251. wclear(window);
  252. box(window, 0, 0);
  253. }
  254. if(t>17)
  255. {
  256. wattron(window, COLOR_PAIR(6) | A_UNDERLINE);
  257. mvwprintw(window, 5, 1, "Samolot konczy lot");
  258. wattroff(window, COLOR_PAIR(6) | A_UNDERLINE);
  259. }
  260. }
  261. wrefresh(window);
  262. refresh();
  263.  
  264. Sleep(500);
  265. }
  266.  
  267. getch();
  268.  
  269. deletePicture(picture);
  270.  
  271. endwin();
  272. return 0;
  273. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement