本文主要是介绍C语言案例:黑客帝国文字瀑布,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在这个寒假,我有幸教授小孩子学习 C 语言。为了让学习过程更加有趣和富有启发,我设计了一个生动的案例。在这篇博客中,我将与大家分享这个案例,希望能给其他教师或者家长带来一些启发。
项目需要用到图形库,参考: Dev C++ 中添加Easy Graphics Engine
案例效果
程序代码
#include <stdio.h>
#include <stdlib.h>
#include <graphics.h>
#include <time.h>#define winWidth 640
#define winHeight 480#define LEN(array) (sizeof(array) / sizeof(array[0]))struct Line
{int x, y;int speed;int fontSize;color_t color;char letter[20];
};// 生成随机数
void generateString(char *dest, int len)
{char allChar[63] = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";int cnt, randNo;// 这里不建议加时间种子,调用时间很接近,会产生大量相同的随机数// srand((unsigned int)time(NULL));for (cnt = 0; cnt <= len; cnt++){randNo = rand() % 62;if (cnt % 2 == 1){ // 字符中间加换行符*dest = '\n';}else{*dest = allChar[randNo];}dest++;}*dest = '\0';
}int main()
{// 初始化绘图窗口initgraph(winWidth, winHeight, INIT_RENDERMANUAL | INIT_NOFORCEEXIT);// 设置背景为黑色setbkcolor(BLACK);ege_enable_aa(true);// srand((unsigned int)time(NULL));// 生成100条字符加入到数组struct Line lines[100];int len = LEN(lines);for (int i = 0; i < len; i++){struct Line line = {};line.x = rand() % winWidth;line.y = 0;line.speed = rand() % 50 + 30;line.fontSize = rand() % 12 + 12;line.color = EGEARGB(rand() % 125 + 125, rand() % 125 + 125, rand() % 125 + 125, 89);generateString(line.letter, rand() % 5 + 5);lines[i] = line;}// 主循环for (; is_run(); delay_fps(60)){cleardevice();for (int i = 0; i < len; i++){int end = lines[i].y - lines[i].fontSize * strlen(lines[i].letter);if (end > winHeight * 2){ // 超出屏幕,重置属性lines[i].x = rand() % 641;lines[i].y = 0;lines[i].speed = rand() % 50 + 30;lines[i].fontSize = rand() % 12 + 12;lines[i].color = EGEARGB(rand() % 125 + 125, rand() % 125 + 125, rand() % 125 + 125, 89);generateString(lines[i].letter, rand() % 5 + 5);}// 移动内容lines[i].y += lines[i].speed;// 设置颜色字体setcolor(lines[i].color);setfont(lines[i].fontSize, lines[i].fontSize, "msyh");int height = lines[i].fontSize * strlen(lines[i].letter) / 2;// 写文字outtextrect(lines[i].x, lines[i].y - height, lines[i].fontSize, height, lines[i].letter);}}// 等待用户按键getch();// 关闭图形界面closegraph();return 0;
}
查看原文:C语言案例:黑客帝国文字瀑布
关注公众号 "字节航海家" 及时获取最新内容
这篇关于C语言案例:黑客帝国文字瀑布的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!