- 追加された行はこの色です。
- 削除された行はこの色です。
*ぷよぷよプロジェクト [#f2dc0bfe]
**作成の流れ [#z36d4b81]
+モデル作成
+UIの作成
+対戦する敵のアルゴリズム作成
+テスト&レビュー
こんなとこでしょうか? 1がおおよそ出来れば、2と3は同時並行できると思います。
#comment
**参考 [#m76b1453]
http://www13.plala.or.jp/kymats/study/game_other/TOKOPUYO/tokopuyo.html
もっと他にもあると思う
**モデル [#a8f8f693]
type color = RED | BLUE | GREEN | YELLOW | SEE_THROUGH
type kind = NORMAL | JAMA
type puyo = { color : color; kind : kind }
こんな感じで。あとは空間とぷよの配置の定義すればおしまい。
配置から消えるぷよを求める関数とか作っとくと便利かな。
追記よろしく :)
**空間とぷよ反応 [#c845d6d8]
type space = puyo list list
let react (p:ps) = ...
react : space -> option (int, space) を想定.intは点数.かなりでかい関数になると思われる.
(純粋関数的すぎる?) あと画面のエフェクトを考えると,消えたぷよの位置のリストを返すようにすれば,消えたときのエフェクトも描きやすいだろうと思う.
型spaceは空間を表す.
react : space -> option (int, space) を想定.結果がNONEの場合は反応なし/連鎖終了,SOME (pt,ps) の時は反応ありで得点と反応後の空間の対を返す.全体としてかなりでかい関数になると思われる.
あと画面のエフェクトを考えると,消えたぷよの位置のリストも返すようにすれば,消えたときのエフェクトも描きやすいだろうと思う.
ところでどうやって再帰で書くんだろう.
配列を使って破壊的なアルゴリズムを記述するなら,割に簡単にできそう ([[参考:http://www13.plala.or.jp/kymats/study/game_other/TOKOPUYO/tokopuyo.html]]に挙げたページとか).(プログラム全体で配列を管理する必要は無く,あくまでもぷよの連鎖判定に (チェック済み部分を覚えておく為に) 配列を使うということ)
純粋関数的にやるとどうなる? Stateモナドを使うか,継続渡し形式でやるか…?