わどぅー

記事については、中間出力の場合も多いので間違ってたらごめんなさい。twitter は waddlaw です。どうぞよろしく。

Haskell でゲーム作るよ!(gtk を使ってペグソリティアを実装する)

元ネタはこちら
Creating board games in Haskell in 100 lines of code | Keera Studios

Haskell を使って100行でボードゲームを実装するという趣旨です。


そもそも、ペグソリティアが何か知らなかったんですけども、実際にゲームをやってみるとルールは簡単でした。
このゲーム難しい!
フラッシュゲーム「ペグソリティア」

開発環境

  • Windows 7 32bit
  • Haskell Platform 2012.4.0.0
  • GHC 7.4.2
  • GTK 2.24
  • git 1.6.6.1
  • cabal-dev 0.9.2
  • gtk2hs-buildtools 0.12.4

前準備

Haskell Platform は導入済みという前提で進めます。

GTK のインストール

この辺にインストール時の注意事項とか書いてあります。
Gtk2Hs/Installation - HaskellWiki

GTK のダウンロードは以下のリンク先の all-in-one bundle から行えます。
GTK+ Download: Windows (32-bit)

インストール時の注意点は次の3点です。

  • オールインワンバンドルを使うこと!
  • 空白を含むパスにインストールしないこと! (例:C:\Program Files)
  • バージョン 2.16 は使用しないこと!

ということなので、今回はC直下に配置することにします。

pkg-config を利用するので、環境変数 PATH に「C:\gtk+-bundle_2.24.10-20120208_win32\bin;」を追加しておきます。
ここまでできたらインストールチェックを行います。
コマンドプロンプトを開いて以下のコマンドを打ち込んでみましょう。

pkg-config --cflags gtk+-2.0

何やら表示されれば、インストールテストはOKです。

gtk-helpers のインストール

これが何なのか良く分かってないですけど、今回利用しています。

 git clone https://github.com/keera-studios/gtk-helpers.git
 cd gtk-helpers
 set LANG=C
 cabal update
 cabal install gtk
 cabal install gtk2hs-buildtools
 cabal-dev install glib
 cabal-dev install

git clone で SSL certificate problem エラーとなる場合は、以下のようにすると直りました。

 git config --global http.sslVerify false

$ mkdir game-sample
$ cd game-sample
$ git clone https://github.com/keera-studios/gtk-helpers.git
$ cd gtk-helpers
$ cabal install gtk2hs-buildtools
$ cabal install glib
$ cabal install gtk
$ cabal install

ペグソリティアについて
http://www.gamedesign.jp/flash/peg/peg_jp.html

言語拡張について
http://rf0444.hatenablog.jp/entry/20120513/1336883141

MultiParamTypeClasses
型パラメータを複数持つ型クラスが書ける。

FunctionalDependencies
http://www.kotha.net/ghcguide_ja/latest/type-class-extensions.html#functional-dependencies

なんかミスって公開しちゃってた・・・。
後日続きを書きます。。。