- Puzzlinkで新エディタを開発してみる日記を読んでいる
- WindowsでVScodeを使っている
- WSLで作業する
- puzz.linkのソースコードをダウンロードする
- WSLで
git clone
する
- WSLで
make
する- ツールが足りないと言われたらインストールする
make
が通ったらmake serve
で起動する- http://127.0.0.1:8000/list.html などでpuzz.linkが開ければOK。
Node.js を Linux 用 Windows サブシステム (WSL2) にインストールする
を見てnodejs
, nvm
, npm
をインストールする。全部やる必要はないはず。
npm
でeslint
とgrunt
をインストールする。
最初は海苔ぬりを追加する。 そこそこ出題があるけどまだエディターがなく、ぬりかべとドミニオンから継ぎはぎすれば簡単に作れそう。
ルールなどはPuzzle Square JPを見る。
ぬりかべ・ぬりぼうなどがnurikabe.js
にまとまっているのでこのファイルを使う。
src/pzpr/veriety.js
にnoriuriを書き加える。ついでにsrc-ui/list.html
にも足しておく。
src/veriety/nurikabe.js
を編集する。
MouseEvent
, Graphic
, FileIO
などを定義する必要があるが、すでに書かれているものを使えば良い。
@
の後にパズル名を書くとそのパズルだけに適用される。複数のパズルを書けるので@noribou,norinuri
のようにする。
AnsCheck
はパズルごとに書かれている。ぬりぼうと共通部分が多いのでコピペする。
「ぼう」の判定を消し、「海苔」の判定はdominion.js
にあるのでコピペする。
のりのりはlits.js
にあり、「のり」の判定が3つのファイルに書かれた。
ひとまとめにもしたい気もするが短い関数なので今は放置する。
まとめるならsrc/variety-common/Answer.js
にcheckDominoShadeCell
のような関数を追加する。
puzsqの例題で確認したところ、解答判定がちゃんとできている。 画像作成・ファイル保存などもできる。
ひとまずcommitを作る。
テストは1つのパズルに1つのファイルのようなので、test/script/norinuri.js
を作成。
問題はpuzsqの例題を使う。 パブリックドメインで問題の質も保証されていて便利ですね。
AnsCheck
に5つの関数を書いたのでエラーも5種類。
エラーコードとエラーが出る盤面をリストに入れ、最後に完成盤面を作る。
make
するとルールページができている。
日本語のルールを書く。puzsqのルール文がオモパ大全集と一緒なのでコピペする。 順番が謎だけど最後に追加。
英語でルールを書く。 ゼロから書くと大変なことになるのでぬりぼうのルールをコピペし、海苔はドミニオンから持ってくる。 「黒マスはちょうど2マス」という書き方ではなく、「どの黒マスもタテヨコにつながる黒マスをちょうど1つ」となっていてエラーとちょっと食い違ってる。 日本語も「1×2のカタマリになる」だから食い違うのは一緒だけど。
オモパ大全集によるとニコリ66号が初出なのでそう書く。
最初に追加してた。
omopa
に追加。ここも順番が謎だけどぬりぼうの下で。
海苔をイメージした模様を考えてペイント3Dでちまちま色ぬり。 良し悪しがわからないけど、いつまでもやってしまうから適当に切り上げる。
ぬりかべなど同様に[10,0]
にする。0-9の数字をパネル入力できるようになった。
数字以外の記号を入力させたいときは1番目を10より大きい数字にする必要があるみたい。2番目の数字は謎。
commitしてpublishする。forkを作ってからpublishするようVScodeに言われたのでその通りにする。
クロクローンのを参考に英文をちょろっと書いたらプルリクエストができた。
すぐにbotがプレビューを作ってくれる。 問題を作った。 適当に作ったから別解があるかもしれない。
テストに誤字があったので直した。
プルリクエストを作る直前にmake test
をやっておくべきだった。
火曜日にリリースされるのを待つ。 「火曜日」がどこのタイムゾーンなのか知らないけど、日本時間で火曜になってすぐにリリースされることもある。
週に1種類しか追加されないので、何人もがプルリクエストを投げると数週間待たされることになる。
プルリクエストに問題がなければ、管理者(?)がリリースに必要なことをやってくれる。 複数人がそれぞれパズルを追加していたからコンフリクトが起きてたけど、その辺もうまく処理してくれた。
リリースされた。
https://puzz.link/p?norinuri