在我正在开发的游戏项目中,我被严重放慢 - 到了放弃的程度 - 似乎没有任何库可以简化在文本模式下显示菜单的过程(即80x25文本框,command.com/cmd.exe的本机界面)。
我需要能够提供选择列表的内容,理想情况下包括多个页面,并包含要输入的值以选择其中一个;提示用户;当用户未能输入有效的内容时,轻轻地谴责用户(可能敲响铃声并重新绘制“选择一个:”提示);并返回可用于确定传递了哪个选项的内容。
事实证明这比听起来要多得多;而现在,在家工作的时候出现(或即将出现)的问题完全相同。有没有人知道任何非copyleft库具有可以传递选项的存储容器的功能,在屏幕上显示它们并获得用户的选择?
回答:Ncurses非常适合此目的,包括明确提供菜单驱动程序。它具有MIT风格的许可证,使其与商业用途兼容。但是,它不适用于MS-DOS或Windows。 (我在上面引用了command.com,但没有想过要明确说明这是关于微软架构的问题。)
然而,看起来它在过去的DOS和Windows上已经成功编译了,而且我相信我能够得到它,或者至少能够得到它,或者至少它需要的部分才能工作,尤其是鉴于它是我所追求的菜单逻辑而不是线条画等。问题Good resources for writing console style applications for Windows?在这方面也应该有用。
稍后,其他答案:Windows提供了大量开箱即用的显示功能,如图所示here - 尽管不包括菜单显示系统,与ncurses相反。 ncurses菜单逻辑和Windows API的混合组合?它可能像cygwin一样可行;
很多以后的额外答案:ncurses和pdcurses都可以非常顺利地使用Windows,即使不使用Windows API也不仅仅是创建和调整显示大小。我决定使用pdcurses,并学会构建自己的菜单 - 允许回调,轻松扩展的屏幕消息队列,使用C ++字符串类以及其他此类功能。
进一步更新:Curses的菜单库是用C语言编写的,因此就char *序列而言。我放弃了尝试使用它们,并编写了我自己的菜单,使用低级curses函数进行屏幕显示。