本篇文章及库只适用于初学者,如果您的水平已经达到一定程度,这对您来说将会是简单的。
本库的开发目的也主要是针对于自己的一段学习总结,其次是给初学者一个方便的库来构建键盘控制的控制台菜单。
你的控制台是不是还在使用像这样的输入控制?
那么为什么不能用像真正游戏一样实现键盘控制的菜单呢?虽然控制台难以实现鼠标操作,但是键盘控制也不难的哇!
不过,这里提供一个简单的库给初学者使用,可以更加方便地完成一个优秀的课程设计之类的作品。
一、库的地址
Github仓库地址。
二、简单使用
你可以直接使用下面的标准样例,代码已经给出了详细的介绍,只需按照自己的需求适当修改即可!
标准构建代码(仅供参考)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 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158
| #include "ConsoleMenu.h"
void OnKeyPressed(KEY_EVENT_RECORD KeyEvent, CONSOLEMENU* cmenu) { if (KeyEvent.wVirtualKeyCode == VK_UP && KeyEvent.bKeyDown == 1) { cmenu->Menu->MenuIndex = (cmenu->Menu->MenuIndex-1)%cmenu->Menu->MenuListNum; cmenu->PrintMenu(cmenu->Menu); } else if (KeyEvent.wVirtualKeyCode == VK_DOWN && KeyEvent.bKeyDown == 1) { cmenu->Menu->MenuIndex = (cmenu->Menu->MenuIndex+1)%cmenu->Menu->MenuListNum; cmenu->PrintMenu(cmenu->Menu); } else if (KeyEvent.wVirtualKeyCode == VK_ESCAPE && KeyEvent.bKeyDown == 1) { cmenu->Refresh(); exit(0); } else if (KeyEvent.wVirtualKeyCode == VK_RETURN && KeyEvent.bKeyDown == 1) { cmenu->Refresh(); if (cmenu->Menu->MenuIndex == 3) { exit(0); } else { printf("进入[%s]\n", cmenu->Menu->MenuContent[cmenu->Menu->MenuIndex]); } } else if (KeyEvent.wVirtualKeyCode == VK_BACK && KeyEvent.bKeyDown == 1) { cmenu->PrintMenu(cmenu->Menu); } }
int main() { int i; printf("Hello World!\n"); CONSOLEMENU a; Init(&a); a.Refresh(); a.SetConsoleMenuWnd(50, 20, "Demo", GREEN, BLACK); a.Menu->AddMenuList("开始游戏"); a.Menu->AddMenuList("查看排行"); a.Menu->AddMenuList("规则说明"); a.Menu->AddMenuList("退出游戏"); a.Menu->AddMenuList("待测试项[2]"); a.Menu->InsertMenuList("待测试项[1]", 4); a.Menu->SwapMenuList(4, 5); a.Menu->DelMenuList(4); a.Menu->DelMenuList(4);
a.PrintMenu(a.Menu); RunKeyEvent(&a); return 0; }
|
标准构建样例运行效果截图:
三、如何使用
相信你注意到了标准构建样例代码第一行的头文件了吧?下面给出导入该库的方法!
3.1 下载库文件
3.2 DEV C++
这里以 DEV C++ 为例子演示一下具体使用方法(小白向)。
3.2.1 构建项目
构建你的项目:
3.2.2 导入库文件
也就是将下载好的文件全部解压到你的项目根目录,例如:
我有一个项目,其文件结构包括以下内容:
原始项目结构1 2 3 4
| Test ├── ConsoleMenu.dev ├── ConsoleMenu.layout └── main.c
|
那么,我解压后对应的文件结构应该是:
添加库文件后的项目结构1 2 3 4 5 6 7
| Test/ ├── lib/ │ └── ConsoleMenu.a ├── ConsoleMenu.dev ├── ConsoleMenu.h ├── ConsoleMenu.layout └── main.c
|
3.2.3 配置项目信息
注意!这里是选择 lib
里面的 ConsoleMenu.a
文件!而这个 lib
文件夹及 ConsoleMenu.a
、ConsoleMenu.h
文件据来自在 GITHUB 上下载的 ConsoleMenu.rar
,应当是解压到项目根目录后自动有的!
3.2.4导入头文件并编程
最后就是导入头文件并编写你的项目了。
建议使用标准构建代码快速编程~