C语言实现 全屏字符下滑动画效果

大家好 , 我是逼哥 , 记得每天好好学习 , 天天向上 , 尤其是大学生 . 不要荒废学业.

首先说明 , 我使用的开发环境是  vs2017  , 有些函数方法可能不通用 ,大家可以百度下其他方法. 向童老师致敬.

 

先给你们看看实际效果:

 

贴出实现的代码:

#include <graphics.h>
#include <time.h>
#include <conio.h>

#define High 800  // 游戏画面尺寸
#define Width 1000
#define CharSize 25 // 每个字符显示的大小
void main()
{
	int highNum = High / CharSize;
	int widthNum = Width / CharSize;
	// 存储对应字符矩阵中需要输出字符的ASCII码
	int CharRain[Width / CharSize][High / CharSize];
	int CNum[Width / CharSize]; // 每一列的有效字符个数
	int ColorG[Width / CharSize]; // 每一列字符的颜色
	int i, j, x, y;
	srand((unsigned)time(NULL)); // 设置随机函数种子
	for (i = 0; i<widthNum; i++) // 初始化字符矩阵
	{
		CNum[i] = (rand() % (highNum * 9 / 10)) + highNum / 10; // 这一列的有效字符个数
		ColorG[i] = 255;
		for (j = 0; j<CNum[i]; j++)
			CharRain[j][i] = (rand() % 26) + 65;  // 产生A-Z的随机ASCII码
	}
	initgraph(Width, High);
	BeginBatchDraw();
	settextstyle(25, 10, _T("Courier"));	// 设置字体
								// 下面每一帧,让字符向下移动,然后最上面产生新的字符
	while (1)
	{
		for (i = 0; i<widthNum; i++)
		{
			if (CNum[i]<highNum - 1)  // 当这一列字符没有填满时
			{
				for (j = CNum[i] - 1; j >= 0; j--)  // 向下移动一格
					CharRain[j + 1][i] = CharRain[j][i];
				CharRain[0][i] = (rand() % 26) + 65;  // 最上面的产生A-Z的随机ASCII码
				CNum[i] = CNum[i] + 1; // 这一列的有效字符的个数+1
			}
			else // 这一列字符已经填满
			{
				if (ColorG[i]>40)
					ColorG[i] = ColorG[i] - 20; // 让满的这一列逐渐变暗
				else
				{
					CNum[i] = (rand() % (highNum / 3)) + highNum / 10; // 这一列字符的个数
					ColorG[i] = (rand() % 75) + 180;  // 这一列字符的颜色
					for (j = 0; j<CNum[i]; j++)  // 重新初始化这一列字符
						CharRain[j][i] = (rand() % 26) + 65;  // 产生A-Z的随机ASCII码
				}
			}
		}
		// 输出整个字符矩阵
		for (i = 0; i<widthNum; i++)
		{
			x = i * CharSize; // 当前字符的x坐标
			for (j = 0; j<CNum[i]; j++)
			{
				y = j * CharSize;  // 当前字符的y坐标
				setcolor(RGB(0, ColorG[i], 0));
				outtextxy(x, y, CharRain[j][i]); // 输出当前字符
			}
		}
		FlushBatchDraw();
		Sleep(100);
		clearrectangle(0, 0, Width - 1, High - 1);	// 清空画面全部矩形区域
	}
	EndBatchDraw();
	_getch();
	closegraph();
}

 

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

逼哥很疯狂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值