Ну вот и всё. Все всё увидели и остались счастливы. Затмение Солнца, конец СВЕТА и прочие приколы Вселенной.
1#include "tb.h" 2#include <math.h> 3 4App* app; 5 6float phase = 0; 7 8int gray(int g) { 9 10 if (g < 0) g = 0; 11 else if (g > 255) g = 255; 12 return g + g*256 + g*65536; 13} 14 15void circle(float x, float y, int rad) { 16 17 for (int i = -rad; i < rad; i++) 18 for (int j = -rad; j < rad; j++) { 19 20 int r = i*i + j*j; 21 22 if (r < rad*rad) { 23 24 int b = app->point(x + j, y + i) & 255; 25 int k = 100 + rad*16 - r; 26 if (k < 0) k = 0; 27 28 app->pset(x + j, y + i, gray(b + k)); 29 } 30 } 31} 32 33void render() { 34 35 app->cls(0); 36 37 srand(1); 38 39 // Рисовать звездное небо 40 for (int i = 0; i < 512; i++) { 41 42 int x = rand() % 640; 43 int y = rand() % 400; 44 int cl = rand() % 256; 45 app->pset(x, y, gray(cl)); 46 } 47 48 // Солнце и его изменчивость 49 circle(320, 200, 50); 50 circle((320. + 6.*sin(1.0*phase)), 200. + 2.*cos(1.0*phase), 55); 51 circle((320. - 4.*sin(1.2*phase)), 200. - 3.*cos(0.9*phase), 55); 52 circle((320. + 2.*sin(1.1*phase)), 200. - 5.*cos(1.2*phase), 55); 53 54 // Симулятор Луны 55 for (int i = -50; i < 50; i++) 56 for (int j = -50; j < 50; j++) { 57 if (i*i + j*j < 31*31) { 58 app->pset(320 + j, 200 + i, 0); 59 } 60 } 61 62 phase += 0.05; 63} 64 65int main(int argc, char* argv[]) { 66 67 app = new App(); 68 while (app->main()) render(); 69 return app->destroy(); 70}