关闭页面特效

C语言实现控制台中光标随意移动

开始准备学习下C,新手哦~~

今天弄了个控制台程序,光标可以随意在DOS下移动~~

先放一张效果图,不过很丑,大家能不能看懂,哈哈,就是

I Love You.

 

代码注释都有,其实好多东西我都是从其他地方拷贝了一些代码,毕竟是新手,还是需要多向网上的一些大神学习的。

原理就是引入windows.h,首先是要获得输入的东西,然后通过判断:

1.方向键:执行上下左右的移动功能

2:回车键:执行换行的功能。

3.普通键:输入功能。

终点就是要获取到屏幕上的坐标,当按下了方向键以后,坐标值+1,或者减一,从而实现了光标的自由移动。

下面放代码。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#include <stdio.h>
#include <windows.h>
#include <conio.h>
 
HANDLE hout;
 
//获得输入
char getInput()
{
    int ch; //输入字符串
     
    COORD coord; //屏幕上的坐标
    CONSOLE_SCREEN_BUFFER_INFO csbi; //控制台屏幕缓冲区信息
 
    coord.X=10;
    coord.Y=10;
 
    ch=getch();
 
    //0x0d表示回车,0XE0表示上下左右等键的键码
    while(ch==0xE0||ch==0x0d)
    {
        GetConsoleScreenBufferInfo(hout,&csbi);
        coord.X=csbi.dwCursorPosition.X; //得到坐标X的值
        coord.Y=csbi.dwCursorPosition.Y; //得到坐标Y的值
 
        //如果是回车
        if(ch==0x0d)
        {
            coord.X=0;
            coord.Y++;
            SetConsoleCursorPosition(hout,coord);
            break;
        }
 
        ch=getch();
        //上
        if(ch==0x48)
        {
            if(coord.Y!=0)coord.Y--;
        }
 
        //下
        else if(ch==0x50)
        {
            coord.Y++;
        }
 
        //左
        else if(ch==0x4b)
        {
            if(coord.X!=0){coord.X--;}
        }
 
        //右
        else if(ch==0x4d)
        {
            if(coord.X!=79)coord.X++;
            else
            {
                coord.X=0;
                coord.Y++;
            }
        }
 
        SetConsoleCursorPosition(hout,coord);
        ch=getch();
 
 
    }
    return ch;
 
 
    }
 
 
int main()
{
    char ch;
    hout=GetStdHandle(STD_OUTPUT_HANDLE);
    //从键盘获取输入,如果是方向键则执行方向功能,如果是回车键则换行,如果是字符则输出
    while(1)
    {
        ch=getInput();
        printf("%c",ch);
    }
 
 
    getchar();
     
}

  

 


__EOF__

作  者ღKawaii
出  处https://www.cnblogs.com/kmsfan/p/3964810.html
关于博主:一个普通的小码农,为了梦想奋斗
版权声明:署名 - 非商业性使用 - 禁止演绎,协议普通文本 | 协议法律文本
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!

posted @   yangliwen  阅读(11830)  评论(1编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
0
0
关注
跳至底部
document.getElementById("homeTopTitle").innerText="ღKawaii";
点击右上角即可分享
微信分享提示