当前位置:首页 > 数码 > C语言代码-数字雨 (c语言代码大全)

C语言代码-数字雨 (c语言代码大全)

admin7个月前 (04-29)数码29

简介

雨水是我们日常生活中经常遇到的一种自然现象。有时候,我们会会在雨中漫步,欣赏那美丽的雨景。在计算机世界里,我们如何用代码来模拟这种美丽的雨景呢?本文将通过一个简单的控制台程序,来展示如何实现一个模拟雨水下落的效果。

代码概览

本程序主要使用了WindowsAPI和C语言。通过定义一个RNDROP结构体来表示雨滴,并使用数组来存储一定数量的雨滴。程序的主要逻辑在main函数中实现,包括初始化控制台信息、随机设置雨滴初始位置和内容、实现雨滴下落过程、以及控制雨滴下落速度等。

关键技术点

  • 定义结构体
  • 初始化控制台信息
  • 随机设置雨滴初始位置和内容
  • 雨滴下落过程的实现
  • 控制雨滴下落速度

详细实现

  1. 定义结构体:
    typedef struct {
      int x, y;
      char ch;
    } RAINDROP;

  2. 初始化控制台信息:
    在main函数中,首先获取控制台的宽度和高度,为后续的雨滴下落提供参考。
    RAINDROP raindropLine[BUFFER_SIZE];
    HANDLE HOUT = GetStdHandle(STD_OUTPUT_HANDLE);

  3. 随机设置雨滴初始位置和内容:
    使用rand()函数随机生成雨滴的初始位置和内容。
    raindropLine[i].x = rand() % WIDTH;

  4. 雨滴下落过程的实现:
    在主循环中,不断更新雨滴的位置,并利用光标控制和颜色设置来显示雨滴。
    gotoxy(raindropLine[i].x, raindropLine[i].y);
    set_color(FOREGROUND_GREEN);
    putchar(raindropLine[i].ch);

    同时,当雨滴下落过快时,重新设置其位置,使其重新开始下落。
    if (raindropLine[i].y > HEIGHT + RAIN_LENGTH)
    raindropLine[i].x = rand() % WIDTH;
    raindropLine[i].y = rand() % HEIGHT;

  5. 控制雨滴下落速度:
    通过Sleep(50)函数实现时间的延迟,使雨滴呈现连续下落的效果。同时,根据不同的显示分辨率调整雨滴的大小和下落速度。

  6. 高亮显示雨滴:
    为了使雨滴更显眼,使用FOREGROUND_GREEN|FOREGROUND_INTENSITY来设置高亮颜色。
    set_color(FOREGROUND_GREEN | FOREGROUND_INTENSITY);
    putchar(raindropLine[i].ch);

  7. 程序结束:
    在主循环结束后返回0,表示程序正常退出。
    return 0;

效果展示

完整代码

include <time.h>
include <Windows.h>
include <stdio.h>

const int BUFFER_SIZE = 100;
const int RAIN_LENGTH = 18;

typedef struct {
  int x, y;
  char ch;
} RAINDROP;

RAINDROP raindropLine[BUFFER_SIZE];
HANDLE HOUT = GetStdHandle(STD_OUTPUT_HANDLE);

void gotoxy(int x, int y) {
  COORD pos;
  pos.X = x;
  pos.Y = y;
  SetConsoleCursorPosition(HOUT, pos);
}

void set_color(wAttributes) {
  SetConsoleTextAttribute(HOUT, wAttributes);
}

int main() {
  CONSOLE_SCREEN_BUFFER_INFO csbi;
  COORD consoleSize;

  GetConsoleScreenBufferInfo(HOUT, &csbi);
  consoleSize.X = csbi.srWindow.Right - csbi.srWindow.Left + 1;
  consoleSize.Y = csbi.srWindow.Bottom - csbi.srWindow.Top + 1;

  const int WIDTH = consoleSize.X;
  const int HEIGHT = consoleSize.Y;
  
  srand(time(NULL));

  for (int i = 0; i < BUFFER_SIZE; i++) {
    raindropLine[i].x = rand() % WIDTH;
    raindropLine[i].y = rand() % HEIGHT;
    raindropLine[i].ch = (i % 10) + '0';
  }

  while (1) {
    for (int i = 0; i < BUFFER_SIZE; i++) {
      gotoxy(raindropLine[i].x, raindropLine[i].y);
      set_color(FOREGROUND_GREEN);
      putchar(raindropLine[i].ch);

      raindropLine[i].y++;

      if (raindropLine[i].y > HEIGHT + RAIN_LENGTH) {
        raindropLine[i].x = rand() % WIDTH;
        raindropLine[i].y = rand() % HEIGHT;
      }
    }
    Sleep(50);
  }

  return 0;
}

c语言 如何判断输入的是数字还是字母

需要准备的材料分别有:电脑、C语言编译器。

1、首先,打开C语言编译器,新建一个初始的文件,例如。

2、其次,在文件中,输入C语言代码:char a = getchar(); getchar();

if (a <= 9 && a >= 0) printf(数字);else printf(字母);

3、然后,编译器运行文件,输入数字,此时会成功判断输入内容为数字。

4、最后,输入字母,此时成功判断了输入内容为字母。

c语言定义一个用于输入整数数组元素的函数?

要定义一个用于输入整数数组元素的函数,您可以使用以下C语言代码:

在上述代码中,我们定义了一个名为input_array的函数,该函数接受两个参数:一个整数数组arr和一个整数n,表示数组的长度。函数使用for循环迭代数组中的每个元素,并使用scanf函数从用户输入中读取一个整数,并将其存储到当前元素中。

在main函数中,我们声明一个长度为10的整数数组arr,并使用input_array函数输入数组元素。您可以将数组长度和数组变量名更改为您需要的值。

c语言代码大全

请注意,上述代码中的输入方法是简单的示例代码,并且不具有健壮性。在实际编程中,您需要考虑各种输入情况,例如输入值不是整数等,以避免潜在的错误。

免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。

标签: C语言

“C语言代码-数字雨 (c语言代码大全)” 的相关文章

优化内存访问-C语言中的volatile-理解变量易变性 (优化内存访问的方法)

优化内存访问-C语言中的volatile-理解变量易变性 (优化内存访问的方法)

概念 在 C 语言中, volatile 是一个关键字,用于告诉编译器变量的值是易变的,可能会在意料之外的情况下发生改变。 volatile 关键字用于修饰...

自学-C-最令人毛骨悚然的恐怖之处-语言 (自学c++有多难)

自学-C-最令人毛骨悚然的恐怖之处-语言 (自学c++有多难)

自学C语言,是一条充满挑战的道路。这门编程语言的复杂性和晦涩难懂的概念,让新手感到畏难。只要你有足够的毅力,你能够掌握这个强大的编程语言。 1. 学习资料的挑战 C语言学习资料往往十...

拿捏C语言-就看这一篇! (c语言-nan)

拿捏C语言-就看这一篇! (c语言-nan)

嵌入式系统是我们日常生活中无处不在的一部分。从智能手机到家用电器,从汽车到医疗设备,嵌入式系统的应用范围广泛且不断增长。C语言是一种高效、简洁、灵活的编程语言,是嵌入式系统开发中最常用的编程语言之...