自動で迷路を作ってくれるSlackBotです。~~人生の迷路は嫌でも勝手に作られていくのに~~~
slackbotの作成などはggるときっと幸せになる。
まずrun.py
と同じ階層にTOKENS.json
を作成してください。 中身は、
{
"bot_token": "xxxx-xxxx...",
"legacy_token": "xxxx-xxxx..."
}
としてください。
上の xxxx-xxxx... はbotのtokenに置き換えてください。 botのtokenはhttps://なんやらかんやら.slack.com/apps/manage/custom-integrations
-> Bots
-> 右の鉛筆のアイコン
で見られます。
下の xxxx-xxxx... はLegacy tokenに置き換え。LegacyTokenはこ↑こ↓で確認できます。
python run.py
でrun.pyを実行して、しばらくしてslack側でbotがオンラインになったら、botにDMを送る、または#generalなどでbotにリプライを送ってみてください。 メッセージの内容は次頁を参照。
meiro
-> 100×100の迷路meiro 145
-> 145×145の迷路廃止meiro 30 35
-> 30×35の迷路廃止meiro 10 10 string
-> 10×10の絵文字迷路solve
-> 迷路の解答を表示
コラム数は無制限ですが、300コラム以上はオススメしない。ループ回数に制限があり、1M回まで。迷路作成にかかる時間は100コラムで5秒、300コラムで7分ほど。slackbotで自動返信する場合はpingやファイル転送の関係で時間が倍かかる。
どうやらslack上にuploadした画像は勝手には消えないようなので、容量が無駄だからダウンロードした後作った迷路はslack上から消しておいたらいいと思う。 また、実行する前にPILをインストールする必要がある。
sudo pip install pillow
makemaze.py
を実行すればいいのだが、中身を編集したり、自分で別に実行ファイルを作成するのも良い。
from path.to.lib import meiro
meiro1 = meiro.ImageMeiro(200, 1000, 'meiro.jpg')
if meiro1.makeRoute():
meiro1.save()
を実行すれば、200*200の迷路が保存される。 ちゃんとlib内のmeiro.pyをimportしてね!
makemaze.py
はコマンドライン引数で-c
/-column
でコラム数を、-s
/-size
で画像のサイズ(px)を、-e
/-entrancetype
でスタートとゴールの位置のタイプ(実装と仕様にて詳解)を指定できる。
python makemaze.py -c 200 -e 2
solvemaze.py
を実行すれば、outputフォルダ内の迷路jpgから、正解を描き足したバージョンが作成されoutput内のsolutionフォルダ内に保存される。
Depth Mapも同じく保存される。
solvemaze.py
はコマンドライン引数で-c
/-colortype
で塗り分けのタイプを、-d
/-drawanswer
で解答のラインを描画するか否かを指定できる。
python solvemaze.py -c 2 -d False
- 迷路の正解ルートが偏っている
- 一定コラム以上の迷路の作成に時間がかかる
画像形式の迷路を作成するクラス。
- 正確に言うと路地の数。おおまかには迷路のサイズ。
- 画像のおおまかなサイズ(pixel単位)。画像は第二引数より少し大きめのサイズになる。
- 保存ファイルのパス。
save()
で保存される。 - スタート・ゴールの位置。
0
なら左下と右上、1
なら上下真ん中、2
なら上下のランダムな位置、3
なら左右のランダムな位置。
迷路の解凍やDepth Mapを作成するクラス
- 読み込む画像のパス
createSolutionMap(保存先のパス)
・・・solution mapを作成createDepthMap(保存先のパス, 色のタイプ, 解答のラインを描くか否か)
・・・depth mapを作成。色のタイプは現在0-2まで存在。
迷路自体の作成をするクラス。save()
,fillPoint()
などは抽象メソッド。
- 横の路地の数
- 縦の路地の数
- 壁の間隔
- 壁の厚さ
- スタート・ゴールの位置。
0
なら左下と右上、1
なら上下真ん中、2
なら上下のランダムな位置、3
なら左右のランダムな位置。