Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*Квадрат, вписанный в окружность движется вниз, вверх, вниз, вверх по наклонным линиям.
- При достижении верхней или нижней границы меняет заливку и цвет контура.*/
- #include "graphics.h"
- #include "math.h"
- #include "stdlib.h"
- #include "stdio.h"
- #define esc 27
- //рисование фигуры
- void figure(float xa, float ya, float a)
- {
- cleardevice();
- fillellipse(xa+a/2,ya+a/2,a/powf(2,1/2.0),a/powf(2,1/2.0));
- rectangle(xa,ya,xa+a,ya+a);
- }
- //движение фигуры
- void mve(float *xa, float *ya, float a)
- {
- static int flx = 0, fly = 0;
- float i = *xa, j=*ya;
- do{
- figure(i, j, a);
- if(i > getmaxx() - a - a/powf(2,1/2.0) + a/2) flx = 1;
- if (flx == 0) i+= 0.3;
- if (flx == 1) i-=0.3;
- if(j > getmaxy() - a + a/2 - a/powf(2,1/2.0)) {fly = 1; setfillstyle(1,1+rand()%15); setcolor(1+rand()%15);}
- if (j < a/powf(2,1/2.0) - a/2) {fly = 0; setfillstyle(1,rand()%16);setcolor(1+rand()%15);}
- if (fly == 0) j+= 0.5;
- if (fly == 1) j-=0.5;
- }while(i > a/powf(2,1/2.0) - a/2);
- flx = 0;
- *ya = j;
- *xa = i;
- }
- void main2()
- {
- setlocale(LC_ALL,"");
- int key;
- float a = 40, b = 40, c = 100;
- setfillstyle(1,1);
- setbkcolor(BLACK);
- printf("При достижении левего края экрана нажмите любую кнопку, чтобы продолжить движение кнопку. (Нажатие на стрелку считается за два наажтия)\nC, чтобы изменить цвет фона\nESC, чтобы выйти\n");
- do{
- if (key == 'c' || key == 'с')
- {
- setbkcolor(rand()%16);
- figure(a,b,c);
- }
- else mve(&a, &b, c);
- key = getch();
- }while(key != esc);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement