Есть какая-нибудь документация об OCaml Sdl? - PullRequest
2 голосов
/ 23 февраля 2009

Я разрабатываю для этого небольшую игру, используя OCaml SDL. Я не нашел никакой документации об этом, поэтому у меня есть три вопроса:

  1. Я хочу использовать OCaml SDL под Windows, так что любой может помочь, как мне его скомпилировать (я уже сдался и установил linux на виртуальный ПК)
  2. Есть ли документация по использованию OCaml SDL?
  3. Я использую окно 800x600, и я хочу представить некоторую графику внутри, например, тот пиксель представляет фон, другой представляет скалу и т. Д., Каково лучшее представление этого окна (800x600)? в общем случае я использую массив из 800 * 600 ячеек.

Ответы [ 3 ]

3 голосов
/ 23 февраля 2009

1 - я хочу использовать ocaml SDL под Windows, так что любой может помочь, как я могу скомпилируйте, (я уже сдался и установлен Linux на виртуальном ПК)

Можете ли вы заставить SDL работать под Windows и скомпилировать с ним программы на C? Если это так, то вам следует прочесть главу о компиляции ocaml с c программами в руководстве.

2 - Есть ли документация по использованию OCAML SDL?

В упаковке есть документация. Я полагаю, что это не самое лучшее, поскольку в ocaml нет ни одного пакета с достойной документацией - мне разрешено преувеличивать, не так ли?

Чтобы обойти это, вам нужно изучить, какие функции вам нужны в SDL, а затем найти соответствующую в MLI-файлах в исходном каталоге ocamlSDL. Это не должно быть слишком плохо. Кажется, это довольно организованно. Я должен был сделать это с другими пакетами. У программистов есть несколько стандартных соглашений об именах, и тогда вам действительно нужно знать сигнатуру функций, и все готово.

Я бы постарался изо всех сил заняться своим делом, притворяясь, что вы просто звоните в SDL напрямую - по большей части это должно быть так просто.

3 - Я использую окно 800x600, и я хочу представить некоторую графику внутри, например, этот пиксель представляет фон, другой представляет собой камень и так далее, что такое лучшее представление этого ( 800x600) окно? в общем случае я используя массив 800 * 600 ячеек, я знаю, что это самое уродливое представление, но любые предложения, пожалуйста,

Hashtbls в ocaml довольно эффективны --ocaml фактически использует их для области видимости переменных. Плюс любые коллизии хешей приводят к списку элементов, что может быть удобно для нескольких слоев данных.

Кроме этого, вы можете использовать спрайты. Но я думаю, что вы должны получить основы, а затем реализовать спрайты - извините за самонадеянность, это мой метод реализации.

EDIT:

На основании ваших комментариев и вашего текущего опыта я хочу сделать последнее предложение ... Не используйте ocamlSDL. Для того, что вы делаете, нет никаких причин, особенно для того, кто только изучает язык - что я и собирал, поправьте меня, если я ошибаюсь. Я рекомендую использовать модуль Graphics , который независим от машины , который встроен в ocaml! Он имеет все функции, которые вам понадобятся, чтобы сделать то, что вам нужно сделать для этой простой игры. Модуль довольно прост, и вы сможете сразу приступить к настройке.

2 голосов
/ 02 мая 2013

Вопреки тому, что nlucaroni троллейно предлагает, документация ocamlsdl на самом деле довольно хороша.

Документация, сгенерированная ocamldoc, даже содержит описания большинства функций, вам, скорее всего, не придется заглядывать в документ SDL на C.

На странице, о которой я упоминаю, также есть инструкции по компиляции в Windows, хотя я никогда не пытался им следовать.

0 голосов
/ 24 февраля 2009

Например вот интерфейс модуля рисования, который мы можем нарисовать на экране пикселями:

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

type pixel = Background | Грязь | Rock

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

val draw_playfield: игровое поле -> юнит

обновление val: unit -> unit

это функция, которую мы используем для разработки нашей игры !!! так бедно, ха! в любом случае, чтобы использовать этот модуль в Windows (который сам использует ocamlsdl), я должен сначала скомпилировать его, мой вопрос, это хорошая идея, чтобы нарисовать экран 800x600 пикселей на пиксель? и представить этот экран, например, сказать, что пиксель (xy) представляет фон или другой фрагмент игры, что может быть лучшим представлением этого - массив 800x600, пероннально, я не чувствую себя комфортно с этим, спектакль и ... ты знаешь!

...