用于显示文本模式菜单的库?

2023-12-01

在我正在开发的一个游戏项目中,我的速度严重减慢,甚至到了放弃的地步,因为似乎没有任何库可以简化在文本模式下显示菜单的过程(即, 80x25 文本框,command.com/cmd.exe 的本机界面)。

我需要一些可以提供选择列表的东西,最好包括多个页面,并包括要输入的值以选择其中一个;提示用户;当用户未能输入有效内容时,温和地斥责用户(可能是响铃并重新绘制“选择一个:”提示);并返回可用于确定通过了哪个选项的内容。

事实证明,这比听起来要多得多的工作;现在,在家里让我如此严重减慢速度的完全相同的问题在工作中也出现了(或即将出现)。有谁知道任何非 Copyleft 库具有可以传递选项存储容器、将它们显示在屏幕上并获得用户选择的功能?

Answer:Ncurses 非常适合此目的,包括显式提供菜单驱动程序。它具有 MIT 风格的许可证,使其与商业用途兼容。但是,它不适用于 MS-DOS 或 Windows。 (我在上面引用了 command.com,但没有想到明确说明这是一个有关 Microsoft 架构的问题。)

然而,看起来它过去已经在 DOS 和 Windows 上成功编译,我有信心我能够得到它,或者至少是我需要的部分,工作,特别是考虑到它菜单逻辑而不是我所追求的线条图之类的。问题为 Windows 编写控制台样式应用程序的好资源吗?在这方面也应该有用。

稍后补充答案:Windows 提供了大量开箱即用的显示功能,如图所示here——虽然这确实not与 ncurses 相比,包括菜单显示系统。 ncurses 菜单逻辑和 Windows API 的邪恶混合体?它可能是像 cygwin 一样可行的选择......

很久以后的补充答案:ncurses 和 pdcurses 都可以在 Windows 上非常顺利地工作,即使除了创建和调整显示大小之外不使用 Windows API 进行任何操作。我决定使用 pdcurses,并学会了构建自己的菜单——允许回调、轻松扩展的屏幕消息队列、C++ 字符串类的使用以及其他此类功能。

进一步更新:Curses 的菜单库是用 C 编写的,因此按照 char* 序列工作。我放弃了尝试使用它们,而是编写了自己的菜单,使用低级的curses函数进行屏幕显示。


你要ncurses.它通常与您的发行版一起安装。

这可能有点痛苦,但这是我所知道的在命令行中获得像样的“gui”的最佳方法,而不仅仅是键入字符+回车。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用于显示文本模式菜单的库? 的相关文章

  • C 编程 - 文件 - fwrite

    我有一个关于编程和文件的问题 while current NULL if current gt Id Doctor 0 current current gt next id doc current gt Id Doctor if curre
  • 以文化中立的方式将字符串拆分为单词

    我提出了下面的方法 旨在将可变长度的文本拆分为单词数组 以进行进一步的全文索引处理 删除停止词 然后进行词干分析 结果似乎不错 但我想听听关于这种实现对于不同语言的文本的可靠性的意见 您会建议使用正则表达式来代替吗 请注意 我选择不使用 S
  • GLKit的GLKMatrix“列专业”如何?

    前提A 当谈论线性存储器中的 列主 矩阵时 列被一个接一个地指定 使得存储器中的前 4 个条目对应于矩阵中的第一列 另一方面 行主 矩阵被理解为依次指定行 以便内存中的前 4 个条目指定矩阵的第一行 A GLKMatrix4看起来像这样 u
  • Web 客户端和 Expect100Continue

    使用 WebClient C NET 时设置 Expect100Continue 的最佳方法是什么 我有下面的代码 我仍然在标题中看到 100 continue 愚蠢的 apache 仍然抱怨 505 错误 string url http
  • 按成员序列化

    我已经实现了template
  • 在结构中使用 typedef 枚举并避免类型混合警告

    我正在使用 C99 我的编译器是 IAR Embedded workbench 但我认为这个问题对于其他一些编译器也有效 我有一个 typedef 枚举 其中包含一些项目 并且我向该新类型的结构添加了一个元素 typedef enum fo
  • 在哪里可以找到列出 SSE 内在函数操作的官方参考资料?

    是否有官方参考列出了 GCC 的 SSE 内部函数的操作 即 头文件中的函数 除了 Intel 的 vol 2 PDF 手册外 还有一个在线内在指南 https www intel com content www us en docs in
  • Asp.NET WebApi 中类似文件名称的路由

    是否可以在 ASP NET Web API 路由配置中添加一条路由 以允许处理看起来有点像文件名的 URL 我尝试添加以下条目WebApiConfig Register 但这不起作用 使用 URIapi foo 0de7ebfa 3a55
  • 嵌套接口:将 IDictionary> 转换为 IDictionary>?

    我认为投射一个相当简单IDictionary
  • BitTorrent 追踪器宣布问题

    我花了一点业余时间编写 BitTorrent 客户端 主要是出于好奇 但部分是出于提高我的 C 技能的愿望 我一直在使用理论维基 http wiki theory org BitTorrentSpecification作为我的向导 我已经建
  • 带动态元素的 WPF 启动屏幕。如何?

    我是 WPF 新手 我需要一些帮助 我有一个加载缓慢的 WPF 应用程序 因此我显示启动屏幕作为权宜之计 但是 我希望能够在每次运行时更改屏幕 并在文本区域中显示不同的引言 这是一个生产力应用程序 所以我将使用非愚蠢但激励性的引言 当然 如
  • 如何在 C 中调用采用匿名结构的函数?

    如何在 C 中调用采用匿名结构的函数 比如这个函数 void func struct int x p printf i n p x 当提供原型的函数声明在范围内时 调用该函数的参数必须具有与原型中声明的类型兼容的类型 其中 兼容 具有标准定
  • 这些作业之间是否存在顺序点?

    以下代码中的两个赋值之间是否存在序列点 f f x 1 1 x 2 不 没有 在这种情况下 标准确实是含糊不清的 如果你想确认这一点 gcc 有这个非常酷的选项 Wsequence point在这种情况下 它会警告您该操作可能未定义
  • Windows 窗体:如果文本太长,请添加新行到标签

    我正在使用 C 有时 从网络服务返回的文本 我在标签中显示 太长 并且会在表单边缘被截断 如果标签不适合表单 是否有一种简单的方法可以在标签中添加换行符 Thanks 如果您将标签设置为autosize 它会随着您输入的任何文本自动增长 为
  • 如何使用 C# / .Net 将文件列表从 AWS S3 下载到我的设备?

    我希望下载存储在 S3 中的多个图像 但目前如果我只能下载一个就足够了 我有对象路径的信息 当我运行以下代码时 出现此错误 遇到错误 消息 读取对象时 访问被拒绝 我首先做一个亚马逊S3客户端基于我的密钥和访问配置的对象连接到服务器 然后创
  • 如何从两个不同的项目中获取文件夹的相对路径

    我有两个项目和一个共享库 用于从此文件夹加载图像 C MainProject Project1 Images 项目1的文件夹 C MainProject Project1 Files Bin x86 Debug 其中有project1 ex
  • cmake 将标头包含到每个源文件中

    其实我有一个简单的问题 但找不到答案 也许你可以给我指一个副本 所以 问题是 是否可以告诉 cmake 指示编译器在每个源文件的开头自动包含一些头文件 这样就不需要放置 include foo h 了 谢谢 CMake 没有针对此特定用例的
  • 基于 OpenCV 边缘的物体检测 C++

    我有一个应用程序 我必须检测场景中某些项目的存在 这些项目可以旋转并稍微缩放 更大或更小 我尝试过使用关键点检测器 但它们不够快且不够准确 因此 我决定首先使用 Canny 或更快的边缘检测算法 检测模板和搜索区域中的边缘 然后匹配边缘以查
  • 哪种 C 数据类型可以表示 40 位二进制数?

    我需要表示一个40位的二进制数 应该使用哪种 C 数据类型来处理这个问题 如果您使用的是 C99 或 C11 兼容编译器 则使用int least64 t以获得最大的兼容性 或者 如果您想要无符号类型 uint least64 t 这些都定
  • 对来自流读取器的过滤数据执行小计

    编辑问题未得到解答 我有一个基于 1 个标准的过滤输出 前 3 个数字是 110 210 或 310 给出 3 个不同的组 从流阅读器控制台 问题已编辑 因为第一个答案是我给出的具体示例的字面解决方案 我使用的实际字符串长度为 450 个

随机推荐

  • PropertyTester 的触发评估

    The 两年前的代码必须升级到E4 现在一堆东西不能用了 其中之一是IEvaluationService如果像这样使用
  • 没有标准回调签名的 MeteorwrappAsync 或 bindEnvironment

    我正在尝试打电话createTableIfNotExists在此 npm 包中 并在服务器端 Meteor 中同步执行此操作 https www npmjs com package azure storage 但是 回调签名的类型funct
  • 如何在 Scala 中将一个列表拆分为另一个列表

    我是 Scala 新手 我需要一个解决方案来解决我的问题 想象一下我有这些列表 val list1 List 1 2 3 4 5 6 7 8 9 10 11 val list2 List 6 5 我的愿望是使用 list2 拆分列表列表中的
  • 如何检测浏览器选项卡中的关闭?

    您好 我正在寻找有关关闭选项卡 不是浏览器 事件的信息 如果 Java 中存在用于小程序的事件 我想知道是否有相关事件或检查方法 我想捕获该事件并制作一个小弹出框 说明您的会话将过期或类似的内容 对于 java 或 Javascript 来
  • 使用 jqui_sortable 排序后 div 元素之间的间距扭曲

    在我的闪亮应用程序中构建一个非常好的附加功能 用户可以重新组织页面内的绘图 时 我遇到了一个问题 我注意到正在重新定位 排序 的 div 元素之间的间距在执行此操作时发生变化 导致之后的绘图未对齐 我已经尝试调整margin值为零 0或一定
  • 如何将自定义 Android.mk 与新的 gradle 构建系统一起使用

    我知道如何使用自定义Android mk与旧的梯度 sourceSets main jniLibs srcDir src main jni jni srcDirs disable automatic ndk build call call
  • 使用 Autodesk A360 中的 URN 创建查看器应用程序

    我创建了一个查看器应用程序 它使用两条腿身份验证并显示已上传到我自己的存储桶的项目 现在 我希望能够查看已上传到 Autodesk A360 的项目 而不是查看自己存储桶中的项目 为此 我已完成以下步骤 实现了三足认证 项目中的A360账号
  • 从元胞数组中的每个元胞中提取特定元素

    我有一个元胞数组A尺寸的10x10 说 每个单元依次包含一个5x20矩阵 我想选择 i j 每个单元格的元素 其中 i j 是循环内的索引 我可以跑4个for循环并轻松得到答案 它may甚至更快 因为已经多次讨论循环可能比 cellfun
  • C# 根据字符串名称实例化一个类

    让多个类做很多事情 我必须实例化其中一个类 填充一些属性并调用一个方法 样本将具有以下方法 例如 public class Method100Response201 public string R1 01 get set public vo
  • 如何在R中计算组合和排列?

    如何计算 R 中组合和排列的数量 The 组合包在 Linux 上安装失败 并显示以下消息 gt install packages Combinations Installing package s into home maxim R x8
  • JSP上传下载视频

    我想设计一个允许管理员下载和上传视频的网站 谁能指导我该怎么做 和上传下载图片一样吗 有网站有例子吗 上传也可以用同样的方法完成 你基本上只需要得到一个InputStream在服务器端 然后您可以写入任何OutputStream你想要 例如
  • Java - 类可以访问其嵌套类的私有字段吗?

    据我了解 私有字段只能在定义它们的类中访问 我有一个基本单链表的代码 public class LinkedList private class Node private String data private Node next priv
  • 使用用户名和密码进行 Flutter Firebase 身份验证

    是否可以使用用户名和密码实施 Firebase 身份验证 不是电子邮件和密码 在 Flutter 中 有没有办法使用 Firebase Auth 插件来做到这一点 从逻辑上讲你可以控制电子邮件地址 我的意思是 如果您愿意 您可以维护电子邮件
  • CSS:将 div 水平设置为 2 行

    可以说我有 div class cont div class single 1 div div class single 2 div div class single 3 div div class single 4 div div cla
  • 在子类的构造函数中使用生成器模式

    我目前正在使用 Builder 模式 严格遵循 Wikipedia 文章中建议的 Java 实现建造者模式 http en wikipedia org wiki Builder pattern 这是一个示例代码 说明了我的实现 public
  • 如何打印 Gremlin 管道/遍历结果

    我在名为的文件中有下面的代码traversal groovy 我从命令行调用gremlin e traversal groovy Begin traversal groovy g TinkerGraphFactory createTinke
  • tkinter - 为什么会有像 bbox 这样的东西?

    现在我更多地使用 tkinter Canvas 我想知道 bbox 的使用 对我来说 我使用 bbox 来获取元素的坐标 但 Canvas 已经有一个方法来返回项目的坐标 那么他们为什么要发明像 bbox 这样的东西呢 对比tcl官方描述h
  • setTimeout不加延迟和立即执行函数一样吗?

    我正在查看网络应用程序中的一些现有代码 我看到了这个 window setTimeout function 这和直接执行函数内容是一样的吗 它不一定会立即运行 也不会显式地将延迟设置为 0 原因是 setTimeout 会从执行队列中删除该
  • MySQL:找出丢失的订单 ID

    我知道这个问题在 StackOverFlow 中被问过好几次 我尝试过其中的一些 但我运气不好 我有一个 MySQL 表 其中有一个字段 orders id 这可能会随机出现在表中 不是按顺序 我需要找出表中缺少哪些 id orders i
  • 用于显示文本模式菜单的库?

    在我正在开发的一个游戏项目中 我的速度严重减慢 甚至到了放弃的地步 因为似乎没有任何库可以简化在文本模式下显示菜单的过程 即 80x25 文本框 command com cmd exe 的本机界面 我需要一些可以提供选择列表的东西 最好包括