C语言案例:黑客帝国文字瀑布

2024-02-05 03:20

本文主要是介绍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语言案例:黑客帝国文字瀑布的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/679624

相关文章

MyBatis分页查询实战案例完整流程

《MyBatis分页查询实战案例完整流程》MyBatis是一个强大的Java持久层框架,支持自定义SQL和高级映射,本案例以员工工资信息管理为例,详细讲解如何在IDEA中使用MyBatis结合Page... 目录1. MyBATis框架简介2. 分页查询原理与应用场景2.1 分页查询的基本原理2.1.1 分

深度解析Java @Serial 注解及常见错误案例

《深度解析Java@Serial注解及常见错误案例》Java14引入@Serial注解,用于编译时校验序列化成员,替代传统方式解决运行时错误,适用于Serializable类的方法/字段,需注意签... 目录Java @Serial 注解深度解析1. 注解本质2. 核心作用(1) 主要用途(2) 适用位置3

GO语言短变量声明的实现示例

《GO语言短变量声明的实现示例》在Go语言中,短变量声明是一种简洁的变量声明方式,使用:=运算符,可以自动推断变量类型,下面就来具体介绍一下如何使用,感兴趣的可以了解一下... 目录基本语法功能特点与var的区别适用场景注意事项基本语法variableName := value功能特点1、自动类型推

GO语言中函数命名返回值的使用

《GO语言中函数命名返回值的使用》在Go语言中,函数可以为其返回值指定名称,这被称为命名返回值或命名返回参数,这种特性可以使代码更清晰,特别是在返回多个值时,感兴趣的可以了解一下... 目录基本语法函数命名返回特点代码示例命名特点基本语法func functionName(parameters) (nam

Java 正则表达式的使用实战案例

《Java正则表达式的使用实战案例》本文详细介绍了Java正则表达式的使用方法,涵盖语法细节、核心类方法、高级特性及实战案例,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 目录一、正则表达式语法详解1. 基础字符匹配2. 字符类([]定义)3. 量词(控制匹配次数)4. 边

Python Counter 函数使用案例

《PythonCounter函数使用案例》Counter是collections模块中的一个类,专门用于对可迭代对象中的元素进行计数,接下来通过本文给大家介绍PythonCounter函数使用案例... 目录一、Counter函数概述二、基本使用案例(一)列表元素计数(二)字符串字符计数(三)元组计数三、C

Go语言连接MySQL数据库执行基本的增删改查

《Go语言连接MySQL数据库执行基本的增删改查》在后端开发中,MySQL是最常用的关系型数据库之一,本文主要为大家详细介绍了如何使用Go连接MySQL数据库并执行基本的增删改查吧... 目录Go语言连接mysql数据库准备工作安装 MySQL 驱动代码实现运行结果注意事项Go语言执行基本的增删改查准备工作

Spring Boot 整合 SSE(Server-Sent Events)实战案例(全网最全)

《SpringBoot整合SSE(Server-SentEvents)实战案例(全网最全)》本文通过实战案例讲解SpringBoot整合SSE技术,涵盖实现原理、代码配置、异常处理及前端交互,... 目录Spring Boot 整合 SSE(Server-Sent Events)1、简述SSE与其他技术的对

Go语言使用Gin处理路由参数和查询参数

《Go语言使用Gin处理路由参数和查询参数》在WebAPI开发中,处理路由参数(PathParameter)和查询参数(QueryParameter)是非常常见的需求,下面我们就来看看Go语言... 目录一、路由参数 vs 查询参数二、Gin 获取路由参数和查询参数三、示例代码四、运行与测试1. 测试编程路

MySQL 临时表与复制表操作全流程案例

《MySQL临时表与复制表操作全流程案例》本文介绍MySQL临时表与复制表的区别与使用,涵盖生命周期、存储机制、操作限制、创建方法及常见问题,本文结合实例代码给大家介绍的非常详细,感兴趣的朋友跟随小... 目录一、mysql 临时表(一)核心特性拓展(二)操作全流程案例1. 复杂查询中的临时表应用2. 临时