linukso吧 关注:1,481贴子:173,551
  • 4回复贴,共1
--------------------------------------------
> 明显的一稿多投,不能少了解放区
--------------------------------------------
最近 2048 这个游戏太热,用什麼语言写都有,没看到有用 OCaml 的,正好 OCaml 自带图形库,可以省去第三方依赖,就用 OCaml 写了个
GUI 的

ascii art 的

编译需要 OCaml 4.01
代码放在 github 和 bitbucket 上,用户名是 pyx,项目名是 2048.ml
写了篇博粗略说,代码页面上有网址,网址可找到


1楼2014-03-22 06:24回复
    7楼:
    移动格子游戏,现在的贴吧不容易发链接。按照顶楼描述去项目主页,我 README 写的第一个链接就是原版游戏。
    这个是我用 OCaml 实现的 clone
    表面的不同点是原版是网页,我的是本地程序,原版有算分数,而我没实现(因为只是消去的数值总和,我觉得无甚意义)
    内裏的不同点主要是我的版本实现玩的操作使用了 monad,因此一些 bind 的操作用起来很方便
    例如,生成一个新的游戏,先放两个格子,然后向上移动,然后看看游戏是否完结,可以写成这样
    playing board >>= spawn >>= spawn >>= move_up >>= check
    README 裏的链接有我写的粗略讲了一下这个
    我怀疑另外有两个 haskell 的实现(没有去看)应该也使用了类似概念,或者直接使用 lense 等


    8楼2014-03-22 15:37
    回复
      2026-05-12 09:23:13
      广告
      不感兴趣
      开通SVIP免广告
      https://github.com/pyx/2048.ml
      新增加了分数和步计算
      分数和步统计用了手动写的半个 writer monad
      忘记了移动还可以用 maybe monad(ocaml 裏是 option),有时间改


      13楼2014-03-25 07:06
      收起回复
        http://xrefactor.com/blog/2048-in-ocaml


        14楼2014-03-25 07:08
        回复
          btw 改名字了
          为了不需要修改就符合 gentoo package 的命名规则
          2048.ml 改成 2048-ml
          bitbucket
          https://bitbucket.org/pyx/2048-ml/
          github
          https://github.com/pyx/2048-ml/
          写了三个 gentoo ebuild,也加到个人 overlay 裏,README 裏有地址


          17楼2014-03-26 05:30
          收起回复