▶ 実 行
▶ 実行
クリア
ラングトンのアリ
by てぃふと@うぇいく
方向とは変数 # 方向は[[0,-1],[1,-0.5],[1,0.5],[0,1],[-1,0.5],[-1,-0.5]] 方向は[[0,-1],[1,0],[0,1],[-1,0]] 状態とは変数 状態は[ { 色:黒色, 方向転換:1 }, { 色:白色, 方向転換:-1 }, ] # 状態は[ # { 色:黒色, 方向転換:1 }, # { 色:緑色, 方向転換:1 }, # { 色:赤色, 方向転換:-1 }, # { 色:白色, 方向転換:-1 }, # ] セルサイズとは変数 セルサイズは8 蟻数とは変数 蟻数は5 方向数とは変数 方向数は方向の配列要素数 セル数とは変数 セル数は[(描画中キャンバス["width"]/セルサイズ)を切り捨て,(描画中キャンバス["height"]/セルサイズ)を切り捨て] 状態数とは変数 状態数は状態の配列要素数 ワールドとは変数 ワールドは[] 蟻達とは変数 蟻達は[] ●準備とは Xとは変数 Yとは変数 YDとは変数 YDは0 Yで1からセル数[1]まで繰り返す ワールド[Y-1]は[] Xで1からセル数[0]まで繰り返す もし、方向数が6ならば、 YDは((X-1)%2)/2 ここまで ワールド[Y-1][X-1]は0 [X-1,Y-1+YD]に0をセル描画 ここまで ここまで ここまで ●(XYにDIRで)蟻生成とは Xとは変数 Yとは変数 蟻とは変数 XはXY["X"]||XY[0]||0 YはXY["Y"]||XY[1]||0 蟻は{ 位置: { X: X, Y: Y, }, 向: DIR, } 蟻で戻る ここまで ●(蟻数を)蟻達準備とは 蟻達とは変数 蟻達は空配列 もし、蟻達が1ならば、 蟻達に[(セル数[0]/2)を切り捨て,(セル数[1]/2)を切り捨て]に0で蟻生成を配列追加 違えばもし、蟻数が2ならば、 蟻達に[(セル数[0]*1/3)を切り捨て,(セル数[1]/2)を切り捨て]に0で蟻生成を配列追加 蟻達に[(セル数[0]*2/3)を切り捨て,(セル数[1]/2)を切り捨て]に0で蟻生成を配列追加 違えば、 (蟻数)回繰り返す 蟻達に[セル数[0]の乱数,セル数[1]の乱数]に(方向数の乱数)で蟻生成を配列追加 ここまで ここまで 蟻達で戻る ここまで ●(XYにCを)セル描画とは Xとは変数 Yとは変数 状態[C]["色"]に塗り色設定 空に線色設定 XはXY["X"]||XY[0]||0 YはXY["Y"]||XY[1]||0 もし、方向数が4ならば、 Xは(X+0.5)*セルサイズ Yは(Y+0.5)*セルサイズ [X-セルサイズ/2+0.5,Y-セルサイズ/2+0.5,セルサイズ-1,セルサイズ-1]に四角描画 違えばもし、方向数が6ならば、 Aとは変数 Xは(X+0.5)*セルサイズ/2/SQRT(3)*2*3/2 Yは(Y+0.5)*セルサイズ Aは[ [X-セルサイズ/2/SQRT(3)+0.5,Y-セルサイズ/2+0.5], [X+セルサイズ/2/SQRT(3)-0.5,Y-セルサイズ/2+0.5], [X+セルサイズ/2/SQRT(3)*2-0.5,Y], [X+セルサイズ/2/SQRT(3)-0.5,Y+セルサイズ/2-0.5], [X-セルサイズ/2/SQRT(3)+0.5,Y+セルサイズ/2-0.5], [X-セルサイズ/2/SQRT(3)*2+0.5,Y] ] Aで多角形描画 ここまで ここまで ●(XYから)ワールド取得とは Xとは変数 Yとは変数 XIとは変数 YIとは変数 Cとは変数 XはXY["X"]||XY[0]||0 YはXY["Y"]||XY[1]||0 XIはXを切り捨て YIはYを切り捨て Cはワールド[YI][XI] Cで戻る ここまで ●(XYをCで)ワールド更新とは Xとは変数 Yとは変数 XIとは変数 YIとは変数 XはXY["X"]||XY[0]||0 YはXY["Y"]||XY[1]||0 XIはXを切り捨て YIはYを切り捨て ワールド[YI][XI]はC ここまで ●(蟻を)蟻前進とは Xとは変数 Yとは変数 向きとは変数 Xは蟻["位置"]["X"]||0 Yは蟻["位置"]["Y"]||0 向きは蟻["向"] XはX+方向[向き][0] YはY+方向[向き][1] もし、X<0ならば、XはX+セル数[0]。 もし、X≧セル数[0]ならば、XはX-セル数[0]。 もし、Y<0ならば、YはY+セル数[1]。 もし、Y≧セル数[1]ならば、YはY-セル数[1]。 蟻["位置"]["X"]はX 蟻["位置"]["Y"]はY ここまで ●(蟻を)蟻ステップとは Cとは変数 Cは蟻["位置"]からワールド取得 向きとは変数 向きは蟻["向"] 蟻["位置"]を(C+1)%状態数でワールド更新 蟻["向"]は(向き+状態[C]["方向転換"]+方向数)%方向数 蟻を蟻前進 ここまで ●メインループとは XYとは変数 Cとは変数 蟻で蟻達を反復する XYは[蟻["位置"]["X"],蟻["位置"]["Y"]] 蟻を蟻ステップ CはXYからワールド取得 XYにCをセル描画 ここまで 画面更新時実行には メインループ ここまで ここまで ●開始とは 全描画クリア 準備 蟻達は蟻数を蟻達準備 メインループ ここまで 開始する
e85e9ace336f0d5b550a639f4da1a848
2078