The Farmer Was Replaced— 코딩 게임 완전 해부
Chapter 07 · 솔버

호박은 기다림의 작물이다 — 그리고 다중 드론 분할 작전

호박은 심고 나면 자랄 때까지 기다려야 한다. can_harvest()가 True가 될 때까지 do_a_flip()으로 시간을 보낸다. 그리고 멀티 솔버는 한 농장에 여러 작물을 동시에 재배한다.

Pumpkin Fertilizer Multi-Solver

§ 1호박 재배 사이클

호박은 "심고 → 기다리고 → 수확"의 단순한 사이클이지만, 기다림이 핵심이다.

plant(Entities.Pumpkin)으로 심고, use_item(Items.Fertilizer)로 비료를 주어 성장을 가속한다. 그리고 while not can_harvest(): continue로 다 자랄 때까지 기다린다.

measure()가 None을 반환하면 호박이 아직 생성되지 않은 것이다. 이때도 plant()를 반복해야 한다.

호박 재배 기본
while get_entity_type() != Entities.Pumpkin:
    plant(Entities.Pumpkin)
    use_item(Items.Fertilizer)
    while not can_harvest():
        if get_entity_type() == Entities.Dead_Pumpkin:
            break
        continue

§ 2깨진 호박 보수: pumpchk()

f0.py의 pumpchk()는 격자 전체를 순회하며 measure()==None(깨진 호박)인 타일을 찾아 기록하고, 그 후 기록된 위치를 순서대로 방문하여 재심는다.

이때 sort.py의 quick_sort_replant_coords()가 좌표를 대각선 합(x+y) 기준으로 정렬하여 최소 이동 경로를 만든다.

호박 격자 — 깨진 타일 탐지 & 보수 STEP 01 / 4
space 재생 · ← → 단계 · R 리셋

§ 3다중 드론 분할 작전

mainPumpkinSolver는 4개 드론을 사분면으로 분할한다. 각 드론이 맵의 1/4을 담당한다.

mainMultiSolver는 더 복잡하다: 좌표에 따라 작물을 결정한다. (x < 10, y < 10)이면 호박, 그 외는 grass 또는 companion plant.

패턴사분면 분할 (Quadrant Split)

counter % 4에 따라 드론이 담당하는 사분면이 결정된다:
counter%4==0 → 우상단 (world, world)
counter%4==1 → 좌하단 (1, 1)
counter%4==2 → 우하단 (world, 1)
counter%4==3 → 좌상단 (1, world)

§ 4Companion Planting

plantHandlers.py의 handle_companion_plant()는 get_companion()로 짝 지어진 식물을 확인하고, 해당 위치로 이동하여 심는다. 이것은 게임의 "companion planting" 메커니즘 — 특정 엔티티가 다른 위치의 엔티티와 짝을 이루어야 하는 제약 — 을 처리한다.

핵심 handle_square_plant()는 대각선 패턴으로 영역을 순회하는 복잡한 유틸리티다. 4개의 direction(0-3)이 각각 다른 대각선 순회 방향을 나타낸다. 이것은 뱀 패턴의 대각선 버전이다.