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

article/2025/7/13 7:13:14

代码架构:

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

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

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

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

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

#include<stdio.h>
#include<Windows.h>
#include<graphics.h>
#include<conio.h>
#include<time.h>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  1080typedef 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;
}

效果呈现:

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

#include<stdio.h>
#include<Windows.h>
#include<graphics.h>
#include<conio.h>
#include<time.h>
#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;
}

http://chatgpt.dhexx.cn/article/LL3vFiV0.shtml

相关文章

学习编程的方法及入门

&#xff08;入门&#xff09;学习编程可以通过以下步骤进行&#xff1a; 1. 确定学习目标&#xff1a;首先&#xff0c;明确你希望学习编程的具体目标和用途。这有助于你选择学习的编程语言和方向&#xff0c;例如网页开发、移动应用开发或数据分析等。 2. 选择编程语言&…

怎么学习编程?小白如何入门?

前言 编程的范围实在很大&#xff0c;学什么就是小白的首要问题。如果是学编程希望能够将重复工作自动化这类朋友&#xff0c;直接学Python即可。下文会说怎么学习&#xff0c;本文主要针对的是想要通过编程高薪转行的这类人。 一、编程方向 编程可就业的技术岗位非常多&…

易语言编程入门教程学习

易语言是一款中文开发软件&#xff0c;因为是国人开发的&#xff0c;对于国人使用也是比较友好的。其最大的特点&#xff0c;就是易&#xff0c;容易的易&#xff0c;新手入门很容易。 易语言简介 易语言是一门以中文作为程序代码编程语言。以“易”著称。创始人为吴涛。早期版…

入门编程指南:如何从零开始学习编程?

一、自学编程需要注意什么&#xff1f; 自学编程需要注意以下几点&#xff1a; 选择适合自己的编程语言&#xff0c;在学习初期建议选择易入手的编程语言。需要不断地练习&#xff0c;并建立自己的编程项目&#xff0c;以此提高编程技巧和应用能力。追求知识的全面性&#xf…

编程入门不知道怎么学?程序员小白来给你支招

最近有很多朋友私信小编,说想学编程,但是自己基础不好,很多东西都不会,看视频,遇到难点,也不知道怎么解决,甚至有时候竟为了找错误,花了一上午或一下午的时间,作为过来人的小编,确实很明白这些朋友的心情,因为小编也经历过(在此抱抱做安慰,不怕,有我在)。 从互联…

vs2017官方下载地址

Visual Studio 2017 15.9 Release Notes | Microsoft Docshttps://download.microsoft.com/download/D/1/4/D142F7E7-4D7E-4F3B-A399-5BACA91EB569/vs_Community.exe

目前下载VS2017你可能会遇到这个坑

可能现在大伙都已经开始使用VS2019进行开发了。VS2019的下载使用也都很简单。由于工作需要&#xff0c;今天要在笔记本上安装VS2017,结果发现&#xff0c;VS2017的下载变得不是那么容易了&#xff0c;官方的下载方式也隐藏的很深&#xff0c;来来回回折腾了好一会才下载下来&am…

VS2017离线下载、安装教程

扣扣技术交流群&#xff1a;460189483 1. 制作Visual Studio 2017 (VS 2017) 离线安装包 Visual Studio 2017版本&#xff0c;由于版本更新速度加快和与第三方工具包集成的原因&#xff0c;微软研发团队没有为这个版本提供离线下载的安装文件。如果用户处在一个与外网隔离的网…

vs2017下载安装教程

同时给的在线安装程序&#xff0c;运行完一下界面就啥也没有了&#xff0c;没有然后了&#xff0c;网上重新下载的也不行&#xff0c; 如下界面&#xff1a; 最后可以用你的github账号登录微软的官网&#xff0c;下载即可安装&#xff0c;详见&#xff1a; https://baijiahao…

微软官网下载各版本VS的地址

每次重装系统后想安装VS&#xff0c;但是又不想装最新版的VS&#xff0c;于是乎上微软官网下某个版本的VS&#xff08;比如VS2017&#xff09;。但是问题来了&#xff0c;发现怎么找都找不到下载旧版本VS的地方&#xff0c;在总的搜索处搜索VS2017也不行。嘿&#xff0c;我还就…

BAT校招产品经理:52道经典面试问题解答思路

我始终认为&#xff0c;产品经理面试时极具“套路”的&#xff0c;相比较其他岗位&#xff0c;它更要求面试者有极强的随机应变能力&#xff0c;与冷静思考的能力。 那如何最快的&#xff0c;最高效率的&#xff0c;掌握这些套路&#xff0c;并且在面试中表现出自己的沉着&…

在阿里云服务器上部署java项目(四)

在所有原材料下载完成之后&#xff0c;我们去阿里云官方网站上去设置端口&#xff0c;百度搜索阿里云进入官方网站&#xff0c;登录账号密码之后点击控制台 点击我们已开通的云服务器 进入云服务器管理控制台后&#xff0c;会显示我们现有的云服务器&#xff0c;以及实例ID、…

将在线数据加载到阿里云Greenplum

本文说明如何设计一个 ETL 作业以便将在线关系数据库里的数据&#xff0c;加载到阿里云的Greenplum 数据库中&#xff0c;如何调度和监控该ETL 作业的日常运行。 本文使用的软件是开源ETL 工具软件 Kettle 5.x&#xff0c;以及基于Kettle的傲飞数据整合平台&#xff0c;该平台可…

年末阿里百度等大厂技术面试题汇总,书籍+视频+学习笔记+技能提升资源库

前言 最近有不少人问我这样一个问题&#xff1a;「我刚接触编程&#xff0c;准备学习下Android开发&#xff0c;但是担心现在市场饱和了&#xff0c;Android开发的前景怎么样&#xff1f;」 想着可能有很多人都有这样的担心&#xff0c;于是就赶紧写篇文章&#xff0c;来跟你…

Axure RP 9基础教程(3)——添加图标元件

上一节我们学习了如何对一个矩形元件设置交互样式&#xff0c;我们完成了将元件设计为按钮&#xff0c;实现了鼠标悬停的交互样式和单击界面跳转的交互效果。 其实我们完全可以让我们设置的界面更加的美观。比如csdn的创作界面&#xff1a; 我们可以看到&#xff0c;在每个热区…

Android保活黑科技的技术实现,在阿里工作5年了

背景介绍 金三银四,又到了一年一度最火热的跳槽/招聘季节.相信很多小伙伴已经开始投简历,或者已经找到工作了 是的,我就是找到工作的那部分人 很多Android小伙伴最近找不到工作,特别急,其实我在找工作的时候也有过比较着急的情况,所以很能理解大家的心情.一直说要给大家分享一…

阿里iOS三面

转载地址 1.dSYM你是如何分析的&#xff1f; **2.**多线程有哪几种&#xff1f;你更倾向于哪一种&#xff1f; **3.**单例弊端&#xff1f; **4.**如何把异步线程转换成同步任务进行单元测试&#xff1f; **5.**介绍下App启动的完成过程&#xff1f; **6.**比如App启动过慢&am…

阿里程序员的2019Android年终盘点,必备技能知识点,程序员必须收藏

临近年末,回顾总结2019,很多从事Android开发的朋友仍然遇到了很多困难,无法实现突破。 本文旨在通过以下知识点总结 希望能帮助上述陷入移动开发困境的朋友。 所以接下来本篇文章主要介绍 Android 开发中的部分知识点,本文节选自阿里巴巴开发手册,下载地址。文末还有 高级…

BAT等大厂必问技术面试题,进阶学习资料!

前言 Android高级架构师需要学习哪些知识呢&#xff1f; 下面总结一下我认为作为一个资深开发者需要掌握的技能点。 一.字节跳动 讲讲面向过程、面向对象、面向切面。 指针和数组的关系和区别。 讲讲Android handler。 队列和栈的区别和用途。 两个栈实现队列。 输入Ur…

iOS技能 - 最新BAT 面试题目记录

关于面试题&#xff0c;可能没那么多时间来总结答案&#xff0c;有什么需要讨论的地方欢迎大家指教。主要记录一下准备过程&#xff0c;和面试的一些总结&#xff0c;希望能帮助到正在面试或者将要面试的同学吧。 美团 一面 1、简历上写的项目问了一遍&#xff0c;然后开始问…