レガシーコード生産ガイド

私に教えられることなら

ClojureScript

Clojure(ClojureScript)で副作用を使わず荷物君ゲームを作る

描画のためだけにゲーム全体の状態(への参照)を書き換えて、それ以外では一切参照の書き換えをせずに荷物君ゲームを作りました。 phaendal/nimokkun-cljsgithub.com 元になったゲーム名は商標登録されてるらしいので、「ゲームプログラマになる前に覚えて…

ClojureScriptでローグライクを作る 2

進捗と、いくつか考えがあるので記録しておく。 masterブランチに敵がプレイヤーを追跡・行動(コンソールにメッセージ)を実装したんだけど、凄まじく重い。Chromeでプロファイル取ってみると、reduceが何重にもなってやたら時間がかかっている。 フロアを二…

ClojureScriptでローグライクを作る 1

1 とか書いたけど続くかは謎。 描画以外では一切変数を書き換えず、ひたすらgameステートを渡してイミュータブルな値への関数適用のみで作る方針。 プレイ可能URL 現状は ダンジョン生成 敵生成、徘徊 とりあえずソースも公開することにした。 phaendal/arog…

Secretaryで#無しのURLを扱う

Secretaryのサンプルコードこんなカンジになってるんだけど (ns hoge.client (:require [secretary.core :as secretary :refer-macros [defroute]] [goog.events :as events] [goog.history.EventType :as EventType]) (:import goog.History)) (enable-cons…

Omで外から状態を変化させる

問題 以下のようなOmを使ったコードを書くと、Uncaught Error: Assert failed: (transactable? cursor)というエラーが出る (ns hoge.client (:require [om.core :as om :include-macros true])) (def app-state {:log []}) (defn add-message [text] (om/tra…