【農家は Replace() されました】恐竜_04
https://gyazo.com/9332f89814d6120c8d8be04a8d583f47
code:python
world_size = 16
set_world_size(world_size)
change_hat(Hats.Dinosaur_Hat)
W = get_world_size()
H = W // 2
count = 1
count_border = world_size * (world_size * 0.04 + 0.6)
def up():
y = get_pos_y()
for _ in range(W - y - 1):
move(North)
ent = get_entity_type()
if ent == Entities.Apple:
return get_pos_y()
return None
def right(wait):
list = []
for _ in range(W):
if wait:
list.append(spawn_drone(up))
move(East)
if wait:
for i in range(W):
y = wait_for(listi)
if y != None:
return y
return None
def left(wait):
list = []
for _ in range(W):
if wait:
list.append(spawn_drone(up))
move(West)
if wait:
for i in range(W):
y = wait_for(listi)
if y != None:
return y
return None
def sweep(dir_):
for _ in range(W - 2):
move(dir_)
def snake_half(side):
for _ in range(H):
sweep(North)
move(side)
sweep(South)
move(side)
while True:
if not can_move(East):
change_hat(Hats.Purple_Hat)
change_hat(Hats.Dinosaur_Hat)
count = 1
if count <= count_border:
y = right(True)
if y == None:
if next_y != None:
y = next_y
move(North)
if y != None:
for _ in range(y - 1):
move(North)
next_y = left(True)
while can_move(South):
move(South)
else:
right(False)
move(North)
snake_half(West)
move(South)
count += 1
コードの概要
ワールドサイズを16×16に設定。(偶数倍にする)
count(周回数)とcount_border(モード切替閾値)を設定。
count_border = world_size * (world_size * 0.04 + 0.6)
ワールドサイズが10なら10、32なら64になるような式
無限ループ
右へ進めないとき、紫帽→恐竜帽へ切替。
countがcount_border以下なら、索敵フェーズ。より大きいなら蛇行フェーズ。
索敵フェーズ
右端まで移動しつつ上方スキャンし、yを取得する。
yがNonoなら、next_yを代入する。
上にy - 1マス移動する。
右端まで移動しつつ上方スキャンし、next_yを取得する。
下に行けるだけ移動する。
蛇行フェーズ
右端まで移動する。
上に1マス移動する。
上→右→下→右にジグザグ移動する。
下に1マス移動する。
#農家は_Replace()_されました