作品介绍:
在数字化艺术的世界里,我们经常寻求模拟自然现象的方式,为观众带来沉浸式的体验。本作品“随机火花生成器”就是一个尝试,通过编程模拟了火花的随机生成和消散过程。
在这段代码中,我们使用了EasyX图形库,这是一个为C/C++语言设计的图形编程接口,使得在Windows平台上进行图形编程变得简单而高效。程序首先初始化了一个1200x960像素的窗口,并设置了背景色为黑色,为火花的展示提供了一个暗沉的背景。
接着,程序进入一个循环,每次循环中都会随机选择一个位置(x, y)作为火花的起始点,并基于y坐标计算火花的半径,使得火花在屏幕的不同高度上呈现出不同的大小,增强了视觉效果的层次感和动态感。然后,使用RGB颜色模式随机设置火花的填充颜色和线条颜色,之后在该位置上绘制一个填充的圆形,模拟火花的形状。
由于火花的特性是短暂而明亮的,所以我们在每次循环中都会重新绘制所有的火花,而不是在已有的火花上进行累加,这样就使得火花看起来像是在不断地闪烁和生成。
最后,程序进入一个无限循环,保持窗口的打开状态,直到用户外部终止程序。这样,用户就可以长时间地欣赏火花的随机生成和消散过程,感受数字化艺术带来的魅力。
总的来说,“随机火花生成器”是一个简洁而富有创意的作品,它通过模拟自然现象的方式,展现了编程艺术的无限可能。无论是对于学习编程的人还是对于欣赏艺术的人,都是一个值得一探的有趣之作。
效果图:
完整代码:
#include<easyx.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define WIN_H 960
#define WIN_W 1200
int main()
{
int r, g, b;
srand(time(0));
initgraph(WIN_W, WIN_H);
setbkcolor(BLACK);
cleardevice();
for (int i = 0; i < 1000; i++)
{
int x = rand() % WIN_W;
int y = rand() % WIN_H;
int rs = rand() % 8;
int rb = (y / 100) + 2; // Calculate the radius based on y-coordinate
setlinecolor(RGB(229, 128, 10)); // Set the line color before drawing
setfillcolor(RGB(245, 171, 57)); // Set the fill color before drawing
// Draw a filled circle with the current fill color
fillcircle(x, y, rb);
// Optionally, draw an outline around the filled circle with the current line color
// circle(x, y, radius);
}
while (1)
{
// Keep the program running until it is externally terminated
}
return 0;
}