С помощью функции getimage и putimage изобразить фигуру, движущуюся случайным образом по экрану на фоне звездного неба.
Примечание: Звездным небом называется множество точек на экране, цвет и координаты которых вычисляются с помощью генератора случайных чисел
Программирование кода на Си/Си
Код на C++ #include <graphics.h> #include <conio.h> #include <stdlib.h> #include <dos.h> int change(int current) { if (random(32767) > 30000) { switch (random(5)) { case 0: return -2; case 1: return -1; case 2: return 0; case 3: return 1; case 4: return 2; } } return current; } void main(void) { int gd = VGA, gm = VGAHI, i; int StartX = 100, StartY = 50, r = 20; int ulx, uly, lrx, lry, width, height, size; int dx = 0, dy = 0; int do_job = 1; void * img; initgraph(&gd, &gm, "c:\\temp\\bc31\\bgi"); setfillstyle(SOLID_FILL, getmaxcolor()); fillellipse(StartX, StartY, r, (r / 3) + 2); ellipse(StartX, StartY - 4, 190, 357, r, r / 3); line(StartX + 7, StartY - 6, StartX + 10, StartY - 12); circle(StartX - 10, StartY - 12, 2); line(StartX - 7, StartY - 6, StartX - 10, StartY - 12); circle(StartX + 10, StartY - 12, 2); ulx = StartX - (r + 1); uly = StartY - 14; lrx = StartX + (r + 1); lry = StartY + (r / 3) + 3; width = lrx - ulx + 1; height = lry - uly + 1; size = imagesize(ulx, uly, lrx, lry); img = malloc(size); getimage(ulx, uly, lrx, lry, img); cleardevice(); for (i = 1; i < 1000; i++) putpixel(random(640), random(480), random(16)); while (do_job) { putimage(StartX, StartY, img, XOR_PUT); delay(50); putimage(StartX, StartY, img, XOR_PUT); dx = change(dx); dy = change(dy); StartX += dx; StartY += dy; if (StartX > 639 - width) StartX = 639 - width; if (StartY > 479 - height) StartY = 479 - height; if (StartX < 0) StartX = 0; if (StartY < 0) StartY = 0; if (kbhit()) do_job = (getch() != ' '); } closegraph(); }
Теги:графика,Программирование на Си/С, исходник на Си/C++,алгоритм,фигура, getimage,putimage
|