Advertisement
Guest User

$$$

a guest
Aug 27th, 2014
176
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.78 KB | None | 0 0
  1. /*Квадрат, вписанный в окружность движется вниз, вверх, вниз, вверх по наклонным линиям.
  2. При достижении верхней или нижней границы меняет заливку и цвет контура.*/
  3.  
  4. #include "graphics.h"
  5. #include "math.h"
  6. #include "stdlib.h"
  7. #include "stdio.h"
  8. #define esc 27
  9.  
  10. //рисование фигуры
  11. void figure(float xa, float ya, float a)
  12. {
  13. cleardevice();
  14. fillellipse(xa+a/2,ya+a/2,a/powf(2,1/2.0),a/powf(2,1/2.0));
  15. rectangle(xa,ya,xa+a,ya+a);
  16. }
  17.  
  18. //движение фигуры
  19. void mve(float *xa, float *ya, float a)
  20. {
  21. static int flx = 0, fly = 0;
  22. float i = *xa, j=*ya;
  23. do{
  24. figure(i, j, a);
  25. if(i > getmaxx() - a - a/powf(2,1/2.0) + a/2) flx = 1;
  26. if (flx == 0) i+= 0.3;
  27. if (flx == 1) i-=0.3;
  28. if(j > getmaxy() - a + a/2 - a/powf(2,1/2.0)) {fly = 1; setfillstyle(1,1+rand()%15); setcolor(1+rand()%15);}
  29. if (j < a/powf(2,1/2.0) - a/2) {fly = 0; setfillstyle(1,rand()%16);setcolor(1+rand()%15);}
  30. if (fly == 0) j+= 0.5;
  31. if (fly == 1) j-=0.5;
  32. }while(i > a/powf(2,1/2.0) - a/2);
  33. flx = 0;
  34. *ya = j;
  35. *xa = i;
  36. }
  37.  
  38. void main2()
  39. {
  40. setlocale(LC_ALL,"");
  41. int key;
  42. float a = 40, b = 40, c = 100;
  43. setfillstyle(1,1);
  44. setbkcolor(BLACK);
  45. printf("При достижении левего края экрана нажмите любую кнопку, чтобы продолжить движение кнопку. (Нажатие на стрелку считается за два наажтия)\nC, чтобы изменить цвет фона\nESC, чтобы выйти\n");
  46. do{
  47. if (key == 'c' || key == 'с')
  48. {
  49. setbkcolor(rand()%16);
  50. figure(a,b,c);
  51. }
  52. else mve(&a, &b, c);
  53. key = getch();
  54. }while(key != esc);
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement