【问题标题】:How to create a command line simulator GUI for C++如何为 C++ 创建命令行模拟器 GUI
【发布时间】:2023-12-18 07:20:01
【问题描述】:

我正在研究开发一款类似于 hackRUN 或 uplink 的基于文本的网络安全游戏,但我没有 GUI 编程经验,我怀疑我家里的任何人都想学习如何制作和运行 .cpp 文件。所以我需要创建一个具有自定义命令行的 GUI,类似于 Linux 或 Windows“cmd”。该地区有可用的资源吗?

【问题讨论】:

  • 您说的是模仿命令行界面外观的 GUI,还是可以模仿 GUI 某些方面的命令行界面?
  • 另外,你家不需要编译源代码来运行程序吧?您总是可以只给他们二进制文件...
  • 是的,如果你只希望它是 Windows,你可以通过 Visual Studios 轻松地做到这一点,那么我想说的下一个最好的事情是 GTK+,它是跨平台的,而且更难使用
  • 你的实际问题是什么,你尝试了什么,你在哪里卡住了?
  • 我的问题是我擅长编程逻辑,但我不知道从哪里开始使用 GUI。

标签: c++ cmd simulation


【解决方案1】:

您可以创建一个与整个窗口大小相同的文本框控件,并对其进行自定义以使其看起来像一个控制台。例如,将背景设置为黑色,将字母颜色设置为白色等。

如何创建该文本框取决于您使用的 UI 框架。对于 C++,有 MFC 或托管的 WinForms,或者您可以使用 WPF 在 C# 中创建 UI 部分,并使用 C++/CLI 作为 C++ 和 C# 之间的桥梁。但如果你想让它同时在 Windows 和 Linux 上运行,你可以使用 wxWidgets 或 Qt。

【讨论】:

  • 谢谢,这是我开始的好地方。非常感谢!
  • 除非要求提供一个看起来像控制台的 GUI(而不是看起来像控制台的控制台),否则这将在任何实际工作开始之前把很多 GUI 搞乱。当你有一个工作游戏时,一定要在以后做这件事。在您对我的回答的评论中,您提到这是学习 C++ 的练习;使用 WinForms 和 MFC,您只会学习一些烦人的 Windows API,不一定是 C++ 本身。如今,它们也不是最佳实践,在线教程也不会使用 C++11,这应该是您作为初学者的起点。祝你好运。
【解决方案2】:

您可以通过读取用户的一行并在第一个空格处拆分来模拟命令行(Python/伪代码*):

for line in raw_input():
    command,arguments = line.split(' ',1)

例如read book 是带有参数book 的命令read

然后你可以使用你自己的逻辑来处理他们给出的命令。这种方法的优点是您可以通过桌面上的快捷方式(无论是 linux 还是 windows)运行游戏,并且操作系统控制台将支持交互。

有一类游戏称为“文字冒险”游戏,它在图形有限或不存在时很流行,您可能会发现它特别相关。考虑使用现有的文本冒险引擎,这样您就可以专注于游戏本身,而不是文本输入和解析机制。

* 考虑用 Python 或类似的脚本语言编写它,因为它们可以直接处理字符串等。您不太可能需要 C++ 的原始功能和复杂性来进行命令行式家庭游戏。

【讨论】:

  • 感谢您的建议,尽管我想用 C++ 做这件事主要是为了提高我在该语言方面的技能,因为我本学期正在学习该语言。感谢您的帮助
  • @user1803796:最好在问题中包含所有相关信息;这应该可以帮助您获得最有用的答案。通常包含较少的信息会导致人们给出更一般的答案,就像这里发生的那样。但是,建议从提示符中逐行读取命令,因为另一种方法是编写大量 GUI 垃圾,只是为了给您输入相同的框。