§ Это переписанное затмение
Уже ранее было, но я выкладываю в исключительных целях, конечно же.
1#include <qb.h>
2
3float phase = 0;
4
5
6void starfeld() {
7
8 srand(1);
9
10
11 for (int i = 0; i < 300; i++) {
12 pset(rand() % 320, rand() % 200, rand());
13 }
14}
15
16
17void circ(int x, int y, int rad) {
18
19 for (int i = -rad; i < rad; i++)
20 for (int j = -rad; j < rad; j++) {
21
22 int r = i*i + j*j;
23 if (r < rad*rad) {
24
25 int b = point(x + j, y + i);
26 int k = b + 110 + rad*16 - r;
27 if (k < 0) k = 0;
28
29 k += b;
30 if (k > 255) k = 255;
31
32 pset(x + j, y + i, k);
33 }
34 }
35}
36
37
38void moon() {
39
40 for (int i = -50; i < 50; i++)
41 for (int j = -50; j < 50; j++) {
42 if (i*i + j*j < 31*31) {
43 pset(160 + j, 100 + i, 0);
44 }
45 }
46}
47
48program(13) palette_gray(); fps {
49
50 cls(0);
51
52
53 starfeld();
54
55
56 circ(160, 100, 50);
57 circ((160. + 3.*sin(1.0*phase)), 100. + 1.*cos(1.0*phase), 54);
58 circ((160. - 2.*sin(1.2*phase)), 100. - 2.*cos(0.9*phase), 55);
59 circ((160. + 1.*sin(1.1*phase)), 100. - 3.*cos(1.2*phase), 56);
60
61
62 moon();
63
64
65 locate(9, 9); color(64 ); print("Moon Adventure");
66 locate(8, 8); color(200); print("Moon Adventure");
67
68 phase += 0.05;
69
70} end