【问题标题】:OCaml read pressed key without graphical windowOCaml 读取没有图形窗口的按键
【发布时间】:2016-03-18 16:02:33
【问题描述】:

编辑。我在 Windows 环境中工作。

我想用 OCaml 在控制台输出中编写一个简单的游戏。我需要能够使用“read_key”功能。但是:

  • 图形模块抛出错误:Exception: Graphics.Graphic_failure "graphic screen not opened". 但我不想打开图形窗口。
  • 函数read_line 强制用户在每次按键后按“return”...

【问题讨论】:

  • @gallais :我刚刚尝试过,但由于我在 Windows 环境中工作,它没有解决我的问题... 异常:Invalid_argument "Unix.tcgetattr not implemented"。
  • @RUser4512 如果您提到您从一开始就在 Windows 上,它将对我们有所帮助。
  • @EdgarAroutiounian 谢谢你,这已经修复了!

标签: keyboard ocaml windows-console


【解决方案1】:

使用纯 OCaml 无法实现这样的功能。您将需要调用特定于平台的库。这不是 OCaml 问题,其他语言也是如此,包括 python、java、c 等。实际上,以便携式方式与终端交互是一种火箭科学。主要是因为历史原因。

我怀疑你不想陷入这样的麻烦,所以我可以建议一些简单的解决方案:

  1. 使用 OCamlSDL 库,-您正在开发游戏,而 SDL 用于游戏

  2. 使用图形模块,是的,你需要打开图形窗口,你的游戏将不是一个纯粹的控制台......但也许这不是一个大问题。此外,您可以制作黑色背景并模拟终端:)

  3. 安装 Cygwin 版本的 OCaml。您将获得一个类似 unix 的环境,Unix.tc_* 将开始工作。

  4. 切换到正常操作系统。正常情况下,我的意思是类 Unix。您可以第一次使用虚拟机或容器,如 Docker。

【讨论】:

  • 谢谢!我希望我可以拥有在 Windows 和 Unix 环境中无缝运行的东西,而不需要太多的库。 Cygwin 和虚拟机将需要用户(一些)努力......我最终可能会实施解决方案 2 :)
猜你喜欢
  • 1970-01-01
  • 2019-04-23
  • 2015-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-10
相关资源
最近更新 更多