我正在用C++构建一个迷宫游戏,我试图使用形状来识别游戏中的角色,即墙是正方形,三角形是敌人,星形是玩家。如何在控制台cmd
中打印这些元素?我一直在研究http://msdn.microsoft.com/en-us/library/windows/desktop/ms682073%28v=vs.85%29.aspx但我想不通。
如果没有办法,那么可以打印svg吗?
这个问题有几种解决方案,每个方案都有自己的缺点和优点。
表情符号(或者更准确地说是Unicode)
这是我对简单游戏和形状的建议,因为它是最容易实现的,并且依赖于底层控制台来完成繁重的任务。还有其他程序最有可能是如何编写的(尽管使用了此处列出的其他字符)
由于windows终端(和linux/macOS)支持Unicode,因此可以使用Unicode字符,例如,⭐,并表示字符。
注意:您可能需要在cpp-中使用
setlocale(LC_ALL, "en_US.utf8");
启用utf8支持
优点
- 易于实现
- 不依赖外部库
缺点
- 受限于标准文本对齐
- 难以调整大小
- 需要手动清除字符
- 如果控制台大小调整或太小会发生什么
ConPTY
与控制台方法类似,尽管这提供了更多颜色的优势,并能够通过程序设置控制台大小等。
优点
- 颜色支持
- 能够更简单地控制终端
缺点
- 仍然需要选择其他方法才能实际打印
- 需要Windows 10
控制台
这是对控制台窗口的控制。你应该使用这样的库https://github.com/Bill-Gray/PDCursesMod以抽象这种方法。
优点
- 能够在不离开终端的情况下进行完全控制
- 比一个完整的窗口占用更少的资源
缺点
- 复杂
Windows
您可以使用Qt和co等框架来实现窗口环境。这种方法提供了最大的灵活性,尽管以复杂性为代价,至少需要几个月的开发时间(从头开始),尽管使用适当的框架/库可以忽略这个问题。
优点
- 现在更常见
- 大多数控制
- 许多库已经可用于游戏
缺点
- 资源最密集
- 最难从头开始实施
- 不是基于终端的(尽管你可以让它看起来像是)