【问题标题】:Any documentation out there about OCaml Sdl?有关于 OCaml Sdl 的文档吗?
【发布时间】:2013-05-02 18:26:59
【问题描述】:

我正在为此使用 OCaml SDL 开发一个小游戏。我没有找到任何关于它的文档,所以我有三个问题:

  1. 我想在windows下使用OCaml SDL,大家帮忙看看怎么编译,(我已经放弃,在虚拟机上安装了linux)
  2. 是否有关于如何使用 OCaml SDL 的文档?
  3. 我正在使用一个 800x600 的窗口,我想在里面表示一些图形,例如那个像素表示背景,另一个表示岩石等等,那个(800x600)窗口的最佳表示是什么?作为一般情况,我使用的是 800 * 600 个单元格的数组。

【问题讨论】:

    标签: ocaml sdl


    【解决方案1】:

    1 - 我想在 windows 下使用 ocaml sdl,所以任何人都可以帮助我怎么做 编译它,(我已经放弃了 在虚拟机上安装 linux)

    你能让 SDL 在 windows 下工作并用它编译 C 程序吗?如果是这样,您应该起床阅读compiling ocaml with c programs in the manual. 上的章节

    2 - 有没有关于如何使用 OCAML SDL 的文档?

    在包中有文档。我想这不是最好的,因为在 ocaml 中确实没有一个包有像样的文档——我可以夸大其词,不是吗?

    要解决这个问题,您需要探索 SDL 中需要哪些功能,然后在 ocamlSDL 的源目录的 MLI 文件中找到相应的功能。应该不会太糟糕。看起来它很有条理。我不得不用其他包来做这个。程序员有一些标准的命名约定,然后你真的只需要知道函数签名就可以了。

    我会尽可能努力地开展您的业务,假装您只是直接调用 SDL ——在大多数情况下,这应该很容易。

    3 - 我正在使用 800x600 的窗口,我想代表一些图形 里面,例如那个像素 代表背景,其他 代表一块岩石等等,什么是 最好的代表( 800x600) 窗口?作为一般情况 使用 800 * 600 个单元格的数组,我 知道这是最丑陋的表现, 但请有任何建议

    ocaml 中的 Hashtbls 非常有效——ocaml 实际上将它们用于变量范围。此外,任何哈希冲突都会产生一个元素列表,这对于多层数据来说可能是很好的。

    除此之外,您可能还想使用精灵。但我认为你应该先搞定基础,然后再实现精灵——抱歉冒昧,这是我的实现方法。

    编辑:

    根据您的 cmets 和您当前的经验,我想提出最后的建议...不要使用 ocamlSDL。对于您所做的事情没有任何理由,尤其是刚刚学习语言的人-这是我收集的,如果我错了,请纠正我。我的建议是使用 ocaml 中内置的 机器独立Graphics 模块!它具有完成这个简单游戏所需的所有功能。该模块非常简单,您应该可以直接开始设置。

    【讨论】:

    • 天哪...好吧,对于windows下的sdl,它在windows下不起作用,因为我必须在引用它之前(在类似linux的方式中)制作它,对于文档来说没关系,对于hashtbls和精灵,我真的不知道如何使用它,因为我是该领域的新手,但非常好!!!
    • 你不能在windows下制作SDL?那么,当然 ocaml 不会知道如何访问不存在的库!
    • 谢谢,但他们为我们提供了一些使用 ocamlsdl 的绘图模块,所以我们必须使用它们,无论如何这是一个很好的答案,谢谢。
    【解决方案2】:

    与 nlucaroni 大肆暗示的相反,ocamlsdl 的 documentation 实际上相当不错。

    ocamldoc 生成的文档甚至包含大部分功能的描述,您很可能不必查看 SDL 的 C 文档。

    我提到的页面也有在 Windows 上编译的说明,尽管我从未尝试过。

    【讨论】:

      【解决方案3】:

      例如这里是模块draw的接口,我们可以在屏幕上绘制像素:

      val draw_player: int -> int -> unit

      val draw_missile: int -> int -> 单位

      val draw_text_center: int -> int -> string -> unit

      输入游戏区域

      val empty_playfield: int -> int -> playfield

      类型像素 = 背景 |污垢 |摇滚

      val set_playfield_pixel: playfield -> int -> int -> pixel -> unit

      val draw_playfield: playfield -> 单位

      val 更新:单位 -> 单位

      这些是我们用来设计游戏的函数!!!好可怜哈! 无论如何,要在 Windows 中使用该模块(它本身使用 ocamlsdl)我应该先编译它, 我的问题是,画一个每像素 800x600 像素的屏幕是个好主意吗?并表示该屏幕,例如说像素(x y)表示背景或游戏的另一部分,最好的表示是什么?一个800x600的数组,我对此感到不舒服,性能和...你知道的!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-06-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多