C语言使用getch()在dos上编写闪烁光点函数(界面类)

——感谢我的老师与组员们,是他们帮助我把一个想象拉到现实

一,前置准备

先贴效果图:
光标可以按‘w’,‘s’自由上下移动——光标可以闪烁、任意上下移动;
为了到达这样的效果,我们必须考虑如何对光标进行操作,这时候就需要用到一系列windows事先定义好的函数,也就是所谓的“WindowsAPI”。它在C中主要在头文件:

include <windows.h>

想要让光点能够闪烁,我的思路是程序先打印一个光点,再等待确定的一段时间,然后删除光点,再等待确定的一段时间,如此反复。按照这个思路来,就必须有一个函数能够使系统等待:

Sleep(500); //codeblock测试为等待500毫秒

考虑到界面美化,有没有什么办法可以让原来的光标在这里插入图片描述消失呢?这里需要改变光标状态的API,函数接口为:

GetConsoleCursorInfo(···) //得到光标状态
SetConsoleCursorInfo(···) //设置程序光标状态

这些零碎的问题解决后,一个重要问题就是如何判读键盘输入,这里我用的是一个无阻塞输入函数:getch() ;程序使用它时直接读入一个缓冲区中的字符,不会等待用户输入

二,具体实现

我们按照【一】的准备与思路,一步一步的来写函数,完成功能:

  1. 光标消失与出现:
void infogone(void)	//光标消失
{
    HANDLE hout;	//代表窗口编码的“句柄”
    hout=GetStdHandle(STD_OUTPUT_HANDLE);	//得到当前窗口的编码句柄
    CONSOLE_CURSOR_INFO info;	//代表光标信息的结构体
    GetConsoleCursorInfo(hout,&info);	//把句柄对应窗口的光标信存储在信息结构体中
    info.bVisible=0;	//把结构体中的“光标是否可显示”即“bVisible”成员设置为“不显示”,即0
    SetConsoleCursorInfo(hout,&info);	//把句柄对应窗口的光标按信息结构体中的内容重新设置
}

关于光标显示函数,只要把“.bVisible”成员设置为1再重新设置界面光标就可以了;

  1. 打印闪烁光点
char printflash(void)
{
    infogone();
    fflush(stdin);	//解决各种光点延迟的灵丹妙药
    printf("·");
    while(!kbhit())
    {
           printf("·");
           Sleep(300);	//可自由调控光标闪烁频率,数值越小频率越快
           printf("\b\b  \b\b");
           Sleep(300);
    }
    return getch();
}

这里用到了一个新函数:kbhit(),这个函数的功能是检验键盘有没有被敲击,有的话返回1,没有返回0;这同样也是一个无阻塞函数,具体可以参考:百度百科-kbhit()
简单来说,这个循环就是打印光点的核心;

  1. 移动光标:
<
  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: getch()函数C语言的一个库函数,属于ncurses库。它用于从键盘读取一个字符,但不回显在屏幕上。使用方法如下: 1. 包含头文件:在C程序中包含<conio.h>头文件。 2. 调用getch()函数使用getch()函数读取键盘输入,该函数将立即返回读取到的字符。例如: char ch = getch(); 注意:getch()函数仅在Windows环境中可用,在Linux或其他平台不能使用。 ### 回答2: getch()函数C语言中的一个函数,用于从键盘获取一个字符,并将其返回给调用者。该函数通常用于在控制台程序中获取用户输入的字符,以供程序做相应的处理。 使用getch()函数需要在程序中包含头文件<conio.h>。具体的使用步骤如下: 1. 在程序中包含头文件<conio.h>,以便能够调用getch()函数。 2. 在需要获取用户输入的地方调用getch()函数,将其返回的字符存储到一个变量中。 3. 对获取的字符做相应的处理,如判断字符是否满足某个条件,然后执行相应的逻辑。 下面是一个简单的示例代码,演示了getch()函数使用: #include <stdio.h> #include <conio.h> int main() { char ch; printf("请输入一个字符:"); ch = getch(); printf("您输入的字符是:%c\n", ch); return 0; } 在上述代码中,首先包含了<conio.h>头文件,然后声明了一个字符变量ch。在获取字符的地方调用了getch()函数,并将返回的字符赋值给ch变量。最后,通过printf函数将获取的字符输出到控制台。 需要注意的是,getch()函数在不同的编译器和操作系统上可能实现不同,因此在某些环境中可能无法使用。另外,getch()函数在获取字符后,字符是不会显示在屏幕上的,这与一般的输入方式有所不同。 ### 回答3: getch()函数C语言中的一个输入函数,用于从终端获取一个字符输入,并将其作为返回值返回。 要使用getch()函数,首先需要包含相应的头文件: ```c #include <conio.h> ``` 然后就可以在程序中调用getch()函数了。getch()函数不需要任何参数,使用它可以接收按键输入。例如,可以用下面的代码来获取用户按下的按键并打印出来: ```c #include <stdio.h> #include <conio.h> int main() { char ch; ch = getch(); // 调用getch()函数,获取一个字符输入 printf("您按下了:%c\n", ch); // 打印出获取的字符 return 0; } ``` 当程序执行到getch()函数时,会等待用户在终端按下一个键,然后将该键的ASCII码值作为getch()函数的返回值。在上面的例子中,getch()函数获取到的字符会赋值给变量ch,并通过printf函数打印出来。 需要注意的是,由于getch()函数是非标准函数,所以在某些编译器或平台上可能无法使用。此时,可以考虑使用标准库函数getchar()来代替getch()函数,其使用方法似。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值