Skip to content
This repository has been archived by the owner on May 26, 2022. It is now read-only.

BackMountainDevil/BeautyConsoleMenu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

简介

v1

控制台菜单是不少刚开始学编程的人都要面临的问题,最后大部分都是这样子的,大体上都一个模子,这里将 ta 称之为 v1。 首先输出菜单项和其对应的编号,然后用户输入编号进行操作。其实这是有进一步提升的空间的。

// file: v1.c
  printf("|   MENU SELECTION DEMO    |\n");
  printf("| Options:                 |\n");
  printf("|        1. Option 1       |\n");
  printf("|        2. Option 2       |\n");
  printf("|        3. Option 3       |\n");
  printf("|        4. Exit           |\n");
  printf("Select option: ");

之前编译过 Linux 内核,ta 的菜单也是在控制台里的,之后在ESP - IDF中也看到了类似的菜单,两者大体上和 BIOS 操作逻辑差不多,比 v1 多了啥呢?这里将这个类型归类为 v2

v2

使用一下就会发现,v2 比 v1 多出的点:

  • 键盘上下键选择菜单项,回车确认,无需输入对应的菜单项编号
  • 支持多个功能键: 如 F10
  • 带多种颜色
  • 带长宽自适应

v2-1 效果预览 v2-2 效果预览

无论是键盘上下还是其它功能键,都要获取键盘的输入,并且不需要像之前那样需要显示出来。要使用 system() 的时候,需要引入 <stdlib.h> ,不然就会报错提示 C99 标准不允许隐试调用,采用 C89 编译也不是好办法。

为了探究为什么 getch-linux 中方向键、回车键等获取的值是多个而且均与 getch-win中的不同,用getchar试了一下发现方向键输入的时候真的是一次输入了三个字符,而且其中前两个是一样的,第三个则和大写字母一样。。。也就是说用这两函数分辨这几个按键有点头大。

从输出中还可以得到的结果有 getchar 连回车的值也获取到了,这也印证了每个输出都会莫名其妙多出了

You input is:
<-> 10

VT 控制码

  • \033[B;Fm: B-背景色,F-前景色 背景颜色: 40:黑,41:深红,42:绿,43:黄色,44:蓝色,45:紫色,46:深绿,47:白色 前景色(字体颜色):30:黑,31:红,32:绿,33:黄,34:蓝色,35:紫色,36:深绿,37:白色

程序

目前代码都是在 Linux 平台试验通过,暂时不兼容 Windows 平台

参考

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published