§ Это переписанное затмение

Уже ранее было, но я выкладываю в исключительных целях, конечно же.
Snimok_ekrana_2024-01-05_14-45-51.png
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