3

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

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

3 回答 3

3

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

你能让 SDL 在 windows 下工作并用它编译 C 程序吗?如果是这样,那么您应该开始阅读手册中有关使用 c 程序编译 ocaml 的章节。

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

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

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

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

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

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

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

编辑:

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

于 2009-02-23T20:02:10.390 回答
2

与 nlucaroni 大肆暗示的相反,ocamlsdl 的文档实际上非常好。

ocamldoc 生成的文档甚至对大多数功能都有描述,您很可能不必查看 SDL 的 C 文档。

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

于 2013-05-01T21:36:38.653 回答
0

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

val draw_player: int -> int -> unit

val draw_missile: int -> int -> unit

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: 运动场 -> 单位

val 更新:单位 -> 单位

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

于 2009-02-24T17:29:52.043 回答