zoukankan      html  css  js  c++  java
  • C语言实现控制台中光标随意移动

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

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

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

    I Love You.

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

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

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

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

    3.普通键:输入功能。

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

    下面放代码。

    #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();
    	
    }
    

      

  • 相关阅读:
    ASP.NET- 查找Repeater控件中嵌套的控件
    Oracle- 表的管理
    Oracle- PL/SQL DEV工具的使用收集
    Oracle- PL/SQL DEV的远程配置
    Oracle- 提示查询结果不可更新,请使用...更新结果。
    Oracle- 存储过程和异常捕捉
    MSSQLSERVER数据库- SP_EXECUTESQL的使用
    Oracle- 用户管理
    Oracle- 初识
    c语言交换两个变量的值
  • 原文地址:https://www.cnblogs.com/kmsfan/p/3964810.html
Copyright © 2011-2022 走看看