C语言之实现控制台光标随意移动的实例代码

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

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

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

3、普通键:输入功能。

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

//C语言实现控制台中光标随意移动
#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();
}

以上这篇C语言之实现控制台光标随意移动的实例代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • C语言游戏必备:光标定位与颜色设置的实现方法

    喜欢编写游戏的朋友们,你们有福了,这个资料足以让你玩转WINDOWS和Linux下的光标定位以及颜色,enjoy it. 一.WINDOWS:1.光标定位函数: 复制代码 代码如下: #include <windows.h>#include <conio.h>/****** 光标移到指定位置 ********************************/void gotoxy(HANDLE hOut, int x, int y){      COORD pos;      po

  • C语言之实现控制台光标随意移动的实例代码

    原理引入windows.h,首先是要获得输入的东西,然后通过判断: 1.方向键:执行上下左右的移动功能 2 .回车键:执行换行的功能. 3.普通键:输入功能. 终点就是要获取到屏幕上的坐标,当按下了方向键以后,坐标值+1,或者减一,从而实现了光标的自由移动. //C语言实现控制台中光标随意移动 #include <stdio.h> #include <windows.h> #include <conio.h> HANDLE hout; //获得输入 char getIn

  • C语言之整数划分问题(递归法)实例代码

    C语言之整数划分问题(递归法)实例代码 整数划分问题是算法中的一个经典命题之一,有关这个问题的讲述在讲解到递归时基本都将涉及.所谓整数划分,是指把一个正整数n写成如下形式: n=m1+m2+...+mi; (其中mi为正整数,并且1 <= mi <= n),则{m1,m2,...,mi}为n的一个划分. 如果{m1,m2,...,mi}中的最大值不超过m,即max(m1,m2,...,mi)<=m,则称它属于n的一个m划分.这里我们记n的m划分的个数为f(n,m); 例如但n=4时,他有

  • C语言以数据块的形式读写文件实例代码

    fgets() 有局限性,每次最多只能从文件中读取一行内容,因为 fgets 遇到换行符就结束读取.如果希望读取多行内容,需要使用 fread 函数:相应地写入函数为 fwrite. fread() 函数用来从指定文件中读取块数据.所谓块数据,也就是若干个字节的数据,可以是一个字符,可以是一个字符串,可以是多行数据,并没有什么限制.fread() 的原型为: size_t fread ( void *ptr, size_t size, size_t count, FILE *fp ); fwri

  • jQuery实现div随意拖动的实例代码(通用代码)

    注意js放的位置,要放的靠近,若被其他覆盖,则无法移动. 比如: <div id="move">可移动的DIV</div> 引入jquery.js, jquery-ui.js, <script scr="http://code.jquery.com/jquery-1.10.2.js"></script> <script scr="http://code.jquery.com/ui/1.11.4/jque

  • C语言模式实现C++继承和多态的实例代码

    这个问题主要考察的是C和C++的区别,以及C++中继承和多态的概念. C和C++的区别 C语言是面向过程的语言,而C++是面向对象的过程. 什么是面向对象和面向过程? 面向过程就是分析解决问题的步骤,然后用函数把这些步骤一步一步的进行实现,在使用的时候进行一一调用就行了,注重的是对于过程的分析.面向对象则是把构成问题的事进行分成各个对象,建立对象的目的也不仅仅是完成这一个个步骤,而是描述各个问题在解决的过程中所发生的行为. 面向对象和面向过程的区别? 面向过程的设计方法采用函数来描述数据的操作,

  • C语言中形参和实参详解及实例代码

    形式参数和实际参数 函数的参数分为形参和实参两种.在本小节中,进一步介绍形参.实参的特点和两者的关系.形参出现在函数定义中,在整个函数体内都可以使用,离开该函数则不能使用.实参出现在主调函数中,进入被调函数后,实参变量也不能使用.形参和实参的功能是作数据传送.发生函数调用时,主调函数把实参的值传送给被调函数的形参从而实现主调函数向被调函数的数据传送. 函数的形参和实参具有以下特点: 1.形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元.因此,形参只有在函数内部有效.函

  • C语言二叉排序(搜索)树实例

    本文实例为大家分享了C语言二叉排序(搜索)树实例代码,供大家参考,具体内容如下 /**1.实现了递归 非递归插入(创建)二叉排序(搜索)树: 分别对应Insert_BinSNode(TBinSNode* T,int k),NonRecursion_Insert_BinSNode(TBinSNode* T,int k); 2.实现了递归 非递归查找 二叉排序(搜索)树 : 分别对应Find_BinSNode(TBinSNode *T,int s),NonRecursion_Find_BinSNod

  • C语言实现基于控制台的电子时钟

    使用c语言制作一个控制台的电子时钟,供大家参考,具体内容如下 学习了c语言基本语法后,在学习了time.h的库文件,让我产生了想制作一款电子时钟的念头,那好就开始动手操作吧. 使用到下面这些技术: 首先必须先导入库 /***************** 实时数字时钟(和计算机系统时间关联) ************** #include <time.h>  -- 必须的时间函数头文件 time_t -- 时间类型(time.h 定义) struct tm -- 时间结构,time.h 定义如下

  • C语言实现获取内存信息并输出的实例

    C语言实现获取内存信息并输出的实例 实现实例代码: headfile.h #include <stdio.h> #include <stdlib.h> #include <time.h> #define TRUE 1 #define FALSE 0 #define MAX 10000 typedef int KeyType; typedef int OtherType; typedef struct { KeyType key; OtherType other_data

  • C语言实现双人贪吃蛇游戏实例代码

    贪吃蛇双人小游戏,每局游戏两分钟,死亡则直接失败,若时间结束,则分高者获胜.   上源代码: ​ #include <stdio.h> #include <stdlib.h> #include <Windows.h> #include <time.h> #include<stdbool.h> #include <conio.h> #define SNAKESIZE 100 #define MAPWIDTH 118 #define MA

随机推荐