Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <math.h>
- #include <unistd.h>
- #include <curses.h>
- #define N 24
- #define M 80
- #define X 9
- #define Y 24
- typedef struct Point{
- int x;
- int y;
- } Point;
- typedef struct Picture{
- char **plane;
- char **background;
- } Picture;
- void initCurses() {
- initscr();
- cbreak();
- noecho();
- keypad(stdscr, TRUE);
- curs_set(0);
- }
- void setUp(char **tab)
- {
- int i=0, j=0;
- for(i=0;i<N;i++)
- for(j=0;j<M;j++)
- tab[i][j] = ' ';
- }
- void setUpPlane(char **tab)
- {
- int i=0, j=0;
- for(i=0;i<X;i++)
- for(j=0;j<Y;j++)
- tab[i][j] = ' ';
- }
- void clearPlane(const Point point)
- {
- int i,j;
- for(i = 0; i<X; i++)
- for(j=0; j<Y; j++)
- mvaddch(point.x+i,point.y+j,' ');
- }
- void drawPlane(char **plane, const Point point)
- {
- int i,j;
- for(i = 0; i<X; i++)
- for(j=0; j<Y; j++)
- mvaddch(point.x+i,point.y+j, plane[i][j]);
- }
- void printTab(char **tab)
- {
- int i,j;
- for(i=0;i<N;i++)
- for(j=0;j<M;j++)
- mvprintw(i,j,"%c", tab[i][j]);
- refresh();
- }
- void changeArm(char arm[N][M])
- {
- static int position = 0;
- if(position == 0) {
- mvaddch(27,41,'#');
- mvaddch(27,42,'#');
- mvaddch(27,43,' ');
- mvaddch(27,44,' ');
- mvaddch(28,41,'\\');
- mvaddch(28,43,'\\');
- mvaddch(28,44,' ');
- mvaddch(29,42,'\\');
- mvaddch(29,43,' ');
- mvaddch(29,44,'\\');
- mvaddch(30,43,'\\');
- mvaddch(30,44,'_');
- position=1;
- }else {
- //zmieniamy wartosci w tablicy
- mvaddch(27,41,' ');
- mvaddch(27,42,' ');
- mvaddch(27,43,'#');
- mvaddch(27,44,'#');
- mvaddch(28,41,' ');
- mvaddch(28,43,'|');
- mvaddch(28,44,'|');
- mvaddch(29,42,' ');
- mvaddch(29,43,'|');
- mvaddch(29,44,'|');
- mvaddch(30,43,'|');
- mvaddch(30,44,'|');
- position=0;
- }
- Point point;
- for(point.x=0;point.x<N;point.x++)
- for(point.y=0;point.y<M;point.y++)
- mvprintw(point.x, point.y, "%c", arm[N][M]);
- refresh();
- }
- WINDOW *newWindow(int hight, int width, const Point startingPoint)
- {
- WINDOW *localWindow;
- localWindow = newwin(hight, width, startingPoint.x, startingPoint.y);
- box(localWindow, 0, 0);
- wrefresh(localWindow);
- return localWindow;
- }
- char **newPlane()
- {
- char **plane = (char **)malloc(X*sizeof(char *));
- int i;
- for(i=0; i<X; i++)
- plane[i] = (char *)calloc(Y, sizeof(char));
- setUpPlane(plane);
- return plane;
- }
- char **newBackground()
- {
- char **background = (char **)malloc(N*sizeof(char *));
- int i;
- for(i=0; i<N; i++)
- background[i] = (char *)calloc(M, sizeof(char));
- setUp(background);
- return background;
- }
- Picture *newPicture()
- {
- Picture *new = (struct Picture *)malloc(sizeof(Picture));
- new->plane = newPlane();
- new->background = newBackground();
- return new;
- }
- void deletePicture(Picture *picture)
- {
- int i;
- for(i=0; i<N; i++)
- free(picture->background[i]);
- free(picture->background);
- for(i=0; i<X; i++)
- free(picture->plane[i]);
- free(picture->plane);
- free(picture);
- }
- int main()
- {
- Point point = {0,0};
- float r,t;
- Picture *picture = newPicture();
- char arm[N][M];
- initCurses();
- if(has_colors() == TRUE)
- {
- start_color();
- init_pair(1, COLOR_YELLOW, COLOR_MAGENTA);
- init_pair(2, COLOR_BLUE, COLOR_WHITE);
- init_pair(3, COLOR_CYAN, COLOR_WHITE);
- init_pair(4, COLOR_YELLOW, COLOR_RED);
- init_pair(5, COLOR_BLACK, COLOR_GREEN);
- init_pair(6, COLOR_MAGENTA, COLOR_WHITE);
- }
- printTab(picture->background);
- Point point2 = {30,20};
- WINDOW *window = newWindow(10, 50, point2);
- for(t=0; t<20.4; t+=0.8)
- {
- clearPlane(point);
- r=5;
- point.y=round(r*(t-sin(t)));
- point.x=round(r*(1-cos(t)));
- drawPlane(picture->plane,point);
- changeArm(arm);
- if(has_colors() == TRUE)
- {
- if(t>15)
- {
- wattron(window, COLOR_PAIR(1) | A_REVERSE);
- mvwprintw(window, 1, 1, "Samolot jest nad glowa czlowieka");
- wattroff(window, COLOR_PAIR(1) | A_REVERSE);
- }
- else if(t<2)
- {
- wattron(window, COLOR_PAIR(2) | A_BOLD);
- mvwprintw(window, 1, 1, "Samolot zaczyna lot");
- wattroff(window, COLOR_PAIR(2) | A_BOLD);
- }
- else if(t>2 && t<5)
- {
- mvwprintw(window, 1, 1, " ");
- wattron(window, COLOR_PAIR(3) | A_STANDOUT);
- mvwprintw(window, 1, 1, "Samolot wznosi sie");
- wattroff(window, COLOR_PAIR(3) | A_STANDOUT);
- }
- else if(t>6 && t<7)
- {
- mvwprintw(window, 1, 1, " ");
- }
- else if(t>7 && t<9)
- {
- wattron(window, COLOR_PAIR(4) | A_DIM);
- mvwprintw(window, 1, 1, "Samolot opada");
- wattroff(window, COLOR_PAIR(4) | A_DIM);
- }
- else if(t>9 && t<10)
- {
- mvwprintw(window, 1, 1, " ");
- }
- else if(t>5 && t<18)
- {
- wattron(window, COLOR_PAIR(5) | A_BLINK);
- mvwprintw(window, 3, 1, "Mezczyzna macha reka");
- wattroff(window, COLOR_PAIR(5) | A_BLINK);
- }
- else
- {
- wclear(window);
- box(window, 0, 0);
- }
- if(t>17)
- {
- wattron(window, COLOR_PAIR(6) | A_UNDERLINE);
- mvwprintw(window, 5, 1, "Samolot konczy lot");
- wattroff(window, COLOR_PAIR(6) | A_UNDERLINE);
- }
- }
- wrefresh(window);
- refresh();
- Sleep(500);
- }
- getch();
- deletePicture(picture);
- endwin();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement