有关OCaml Sdl的任何文件吗?

时间:2009-02-23 16:10:09

标签: ocaml sdl

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

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

3 个答案:

答案 0 :(得分:3)

  

1 - 我想在windows下使用ocaml sdl,所以任何人都可以帮助我   编译它,(我已经放弃了   在虚拟PC上安装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实际上将它们用于变量范围。此外,任何哈希冲突都会产生一个元素列表,这对于多层数据来说可能很不错。

除此之外,您可能想要使用精灵。但是我认为你应该得到基础知识,然后再实现精灵 - 因为冒昧,这是我的实施方法。

<强> 编辑:

根据您的评论和您目前的经验,我想提出最终建议......不要使用ocamlSDL。对于你正在做的事情,没有理由,特别是那些只是学习语言的人 - 这就是我收集的内容,如果我错了,请纠正我。我的建议是使用内置于ocaml中的机器独立Graphics模块!它具有您为此简单游戏所需的所有功能。该模块非常简单,您应该可以直接进行设置。

答案 1 :(得分:2)

与nlucaroni的推测相反,ocamlsdl的documentation实际上相当不错。

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

我提到的页面也有在Windows上编译的说明,但我从未试图跟随它们。

答案 2 :(得分:0)

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

val draw_player:int - &gt; int - &gt;单元

val draw_missile:int - &gt; int - &gt;单元

val draw_text_center:int - &gt; int - &gt; string - &gt;单元

输入playfield

val empty_playfield:int - &gt; int - &gt;球场

type pixel = Background |污垢|岩石

val set_playfield_pixel:playfield - &gt; int - &gt; int - &gt;像素 - &gt;单元

val draw_playfield:playfield - &gt;单元

val update:unit - &gt;单元

这些是我们用来设计游戏的功能!哈哈! 无论如何,要在windows中使用该模块(它本身使用ocamlsdl)我应该先编译它, 我的问题是,绘制每像素800x600像素的屏幕是个好主意吗?并且为了表示该屏幕,例如说像素(xy)代表背景或游戏的另一部分,那可能是最好的代表?800x600的阵列,peronnaly我觉得不舒服,表演和...你知道!