Archive For The “CoffeeScript” Category

迷路の自動生成アルゴリズム「穴掘り法」をCoffeeScriptとenchant.jsで実装してみた

By |

迷路の自動生成アルゴリズム「穴掘り法」をCoffeeScriptとenchant.jsで実装してみた

前回のブログで、「enchant.jsでさくっとアルゴリズミックなゲームを作る時なんかに良さそうです。」と書いたCoffeeScriptですが、早速enchant.jsとの組み合わせで、代表的なアルゴリズムである「穴掘り法」(正確には穴掘り法に自分なりの解釈を加えたもの)を実装してみました。 分かったことですが、CoffeeScriptはやっぱりとってもコードが書きやすい。 ネスト(ループの入れ子)が多いところも書きやすい。 JavaScriptはカッコが多い言語なので、CoffeeScriptのようにカッコなしでかけるのは本当に気持ちがいいし、とても捗りますね。 やっぱり、こうしたものをコーディングするには丁度良さそうです。 デモはこちらです。URL : http://mankindinc.jp/programming/enchantjs/1.html 最初に考えたこと コーディングにかかる前に、迷路生成のアルゴリズムを実装する時にどのように組んでいったらいいか、ざっと考えてみました。 ・最初 ・・どれかひとつの座標をランダムで選ぶ(ただし、XYともに偶数偶数) ・・「基点の座標一覧」にそこを追加 ・・掘る ・掘る ・・ランダムに1方向選び、2マス先の座標が掘れるかたしかめる ・・掘れれば、「基点の座標一覧」にそこの座標を追加し ・・1マス先と2マス先を掘る ・掘れなかったら、それ以外の方向の2マス先の座標が掘れるかたしかめる ・・掘れれば、「基点の座標一覧」にそこの座標を追加し ・・1マス先と2マス先を掘る ・それでも掘れなかったら、それら以外の方向の2マス先の座標が掘れるかたしかめる ・・掘れれば、「基点の座標一覧」にそこの座標を追加し ・・・・「基点の座標一覧」から現在の座標を削除し、1マス先と2マス先を掘る ・それでも掘れなかったら ・・「基点の座標一覧」から現在の座標を削除し、 ・・もし「基点の座標一覧」にひとつでもあれば ・・・「基点の座標一覧」からどれかひとつをランダムで選ぶ ・・・その座標で掘る ・・「基点の座標」がもうなかったら ・・・終わり   いよいよ実装へ digという関数はちょっと凝りました。結局、穴掘り法にちょっと変更を加えたものになりました。 numR = 39 numC = 39 posArr = [] pos = [] directions =[[2,0],[-2,0],[0,2],[0,-2]] # 地図生成————————— for row in [0…numR] pos[row] =…

CoffeeScript 基本文法チートシート

By |

CoffeeScriptだと、簡潔に(=短く)書けるからアルゴリズムや実装に集中できますね。 enchant.jsでさくっとアルゴリズミックなゲームを作る時なんかに良さそうです。 PythonやRubyの書き方のようなイメージになります。 基本 1、インデントが意味を持つかわりに、カッコが不要 2、行末セミコロンが不要 3、varでの宣言が不要(自動で宣言される→グローバル変数生成防止) for文 iを使えるfor文が.lengthとiを使ういつものやつになります。 # iを使えるfor文 arr = [“zero”, “one”, “two”] for val, i in arr console.log “#{i}: #{val}” # 0:one 1:one 2:two # foreach arr = [“one”,”two”,”three”,”four”] for num in arr console.log num #one two three four # 数字はこちら arr = [1,2,3,4,5,6,7] for i in [0..6] console.log arr[i] #1,2,3,4,5,6,7…

Go Top