C/C++——黑客数字雨特效

实现效果如图:

在这里插入图片描述

代码如下:

#include<stdio.h>
#include<graphics.h>
#include<time.h>
#define WIDTH 1680	//宽度
#define HEIGTH 820	//高度
#define STR_SIZE 20	//字符串长度
#define STR_NUM 128 //字符串最大值
#define STR_WIDTH 15//字符串所占宽度
//数字雨结构体
struct Rain
{
    
    
	int x, y;
	int speed;
	char str[STR_SIZE];
}rain[STR_NUM];
//创建随机字符串
char CreateCh()
{
    
    
	char temp = 0;
	int flag = rand() & 3;
	
	if (flag == 0)
		temp = rand() % 26+'a';
	else if(flag == 1)
		temp = rand() % 26+'A';
	else
		temp = rand() % 10+'0';

	return temp;
}
//字符串初始化
void GameInit()
{
    
    
	//字符串位置初始化
	for (int i = 0; i < STR_NUM; i++)
	{
    
    
		rain[i].x = i * STR_WIDTH;
		rain[i].y = rand() % HEIGTH;
		rain[i].speed = rand() % 5 + 5;
	}
	//赋予字符串
	for (int i = 0; i < STR_NUM; i++)
	{
    
    
		for (int j = 0; j < STR_SIZE; j++)
		{
    
    
			rain[i].str[j] = CreateCh();
		}
	}

}
//字符串条形绘制
void GameDraw()
{
    
    
	cleardevice();
	for (int i = 0; i < STR_NUM; i++)
	{
    
    
		for (int j = 0; j < STR_SIZE; j++)
		{
    
    
			outtextxy(rain[i].x,rain[i].y-STR_WIDTH*j,rain[i].str[j]);//rain[i].y-STR_WIDTH*j-->成条形字符串
			settextcolor(RGB(0, 255 - 13 * j,0));
		}
	}
}
//字符串掉落
void GamePlay()
{
    
    
	for (int i = 0; i < STR_NUM; i++)
	{
    
    
		rain[i].y += rain[i].speed;
		//rain[i].y-STR_SIZE*STR_WIDTH-->使每串字符串到底结束
		if (rain[i].y-STR_SIZE*STR_WIDTH > HEIGTH)
		{
    
    
			rain[i].y = 0;
		}
	}
}
//字符串掉落过程字符随机改变
void ChangeCh()
{
    
    
	for (int i = 0; i < STR_NUM; i++)
	{
    
    
		rain[rand() % STR_NUM].str[rand() % STR_SIZE] = CreateCh();
	}
}
int main()
{
    
    
	initgraph(WIDTH, HEIGTH);
	GameInit();//字符串初始化
	DWORD t1, t2;//定义两个获取系统时间变量
	t1 = t2 = GetTickCount();//获取系统时间
	while (1)
	{
    
    
		BeginBatchDraw();//开始批量绘制
		GameDraw();//绘制字符串于界面
		ChangeCh();//随机改变字符串
		if (t2 - t1 > 20)
		{
    
    
			GamePlay();//掉落时间为20ms
			t1 = t2;
		}
		t2 = GetTickCount();
		EndBatchDraw();
	}
	closegraph();
	return 0;
}

**

过程步骤:

**在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_53391957/article/details/117229848