经典代码雨----C语言实现

代码架构:

1、初始化窗口(窗口大小信息)

2、描绘雨点信息(颜色,数字)

3、初始化雨(雨点位置变化)

4、下雨操作(坐标更新)

5、更新窗口(场景描绘)

#include
#include
#include
#include
#include


void init_window();

void hua_rain(int n);

void down_rain();

void date_windows();

void init_rain();

预备工作:

定义雨点结构体:主要包含坐标信息、雨点数量。

1、初始化窗口信息。

2、描绘雨点信息。

3、初始化雨(雨点位置变化)

#define rain_num   100
#define WIN_HEIGHT 640
#define WIN_WIDTH  1080

typedef struct Rain
{
	int x;
	int y;
}rain;

rain rains[rain_num];

void init_window()
{
	system("title  黑客帝国-代码雨");
	initgraph(WIN_WIDTH, WIN_HEIGHT);
}


void init_rain()
{
	for (int i = 0; i < rain_num; i++)
	{
		rains[i].x = rand() % WIN_WIDTH;
		rains[i].y = rand() % WIN_HEIGHT;
	}
}

void hua_rain(int n)
{
	for (int i = 0; i < n; i++)
	{
		settextcolor(RGB(0, 255, 0));
		outtextxy(rains[n].x, rains[n].y, rand() % 2 + 48);
	}
}

 4、下雨操作:

雨点 X , Y 坐标变换,重复实验得到数据 Y+=25; X+=1;

让雨点在窗口内坐标不断变化----从而实现雨点下落。

void down_rain()
{
	for (int i = 0; i < rain_num; i++)
	{
		hua_rain(i);
		rains[i].y += 25;
		rains[i].x += 1;
		if (rains[i].y > WIN_HEIGHT)
		{
			rains[i].x = rand() % WIN_WIDTH;
			rains[i].y = rand() % 50;
		}
	}
}

5、更新窗口(场景描绘):

BeginBatchDraw():开始工作区----EndBatchDraw():结束工作区

GetTickCount是一种函数。GetTickCount返回 从操作系统启动所经过(elapsed)的毫秒数,它的是DWORD。

void date_windows()
{
	BeginBatchDraw();
	DWORD t1, t2;
	t1 = GetTickCount64();
	while (1)
	{
		t2 = GetTickCount64();

		if (t2 - t1 > 20)
		{
			cleardevice();
			down_rain();
			EndBatchDraw();
			t1 = t2;
		}
	}
}

总结代码:


int main()
{
	srand(time(NULL));
	init_window();
	init_rain();
	date_windows();
	return 0;
}

效果呈现:

经典代码雨----C语言实现_第1张图片

 以下就是全部源码分享了:

#include
#include
#include
#include
#include
#define rain_num   100
#define WIN_HEIGHT 640
#define WIN_WIDTH  1080
typedef struct Rain
{
	int x;
	int y;
}rain;
rain rains[rain_num];
void hua_rain(int n)
{
	for (int i = 0; i < n; i++)
	{
		settextcolor(RGB(0, 255, 0));
		outtextxy(rains[n].x, rains[n].y, rand() % 2 + 48);
	}
}
void init_window()
{
	system("title  黑客帝国-代码雨");
	initgraph(WIN_WIDTH, WIN_HEIGHT);
}
void down_rain()
{
	for (int i = 0; i < rain_num; i++)
	{
		hua_rain(i);
		rains[i].y += 25;
		rains[i].x += 1;
		if (rains[i].y > WIN_HEIGHT)
		{
			rains[i].x = rand() % WIN_WIDTH;
			rains[i].y = rand() % 50;
		}
	}
}
void date_windows()
{
	BeginBatchDraw();
	DWORD t1, t2;
	t1 = GetTickCount64();
	while (1)
	{
		t2 = GetTickCount64();

		if (t2 - t1 > 20)
		{
			cleardevice();
			down_rain();
			EndBatchDraw();
			t1 = t2;
		}
	}
}
void init_rain()
{
	for (int i = 0; i < rain_num; i++)
	{
		rains[i].x = rand() % WIN_WIDTH;
		rains[i].y = rand() % WIN_HEIGHT;
	}
}
int main()
{
	srand(time(NULL));
	init_window();
	init_rain();
	date_windows();
	return 0;
}

你可能感兴趣的:(数据结构,c语言)