
De 1x1 a 3x3: Tu Primer Script de Automatización en The Farmer Was Replaced
En las primeras instancias del juego, el mapa es una grilla minúscula de 1x1 donde la única acción disponible es cosechar manualmente.
Para avanzar, lo primero que debemos hacer es desbloquear los bucles en la tienda para escribir nuestro primer script iterativo.
1. El Bucle Génesis (1x1)
Sin variables ni condicionales, dependemos de ejecutar un bucle while True que repita la acción de cosechar sin detenerse.
# FASE 0: El primer segundo del juego
while True:
harvest()
¿Por qué usar un bucle while True?
Al inicio no existen sensores para saber si la planta creció. El bucle while True fuerza al dron a intentar la acción infinitamente, permitiéndonos acumular los primeros 370 recursos para adquirir las mejoras esenciales: velocidad del dron, sombrero y desbloqueo de los arbustos.
Al adquirir la primera mejora de velocidad, surge un problema: no podemos cosechar si el cultivo no ha madurado. Si intentamos cosechar a ciegas, el script pierde latencia. Lo optimizamos con un sensor básico:
# FASE 0.5: Validación de madurez previa a la cosecha
while True:
if can_harvest():
harvest()
2. El Primer Salto: Mapa 1x3 y Siembra Automática
Con el primer Hay(heno) recolectado, compramos Speed, Expand (el mapa crece a 1x3) y Variables.
Ahora el dron necesita moverse entre casillas para no quedarse estancado en un solo punto:
# FASE 2: Cosecha y re-siembra de arbustos
while True:
if can_harvest():
harvest()
else:
plant(Entities.Bush)
move(North)
3. Lógica Posicional (1x3) y Multicultivo
Al desbloquear los sensores de posición (get_pos_y()) y tipo de suelo (get_ground_type()), podemos asignar una función específica a cada una de las 3 filas del mapa para cultivar Zanahorias, Arbustos y Pasto:
# FASE 3: Asignación de cultivos por coordenadas Y (1x3)
while True:
if can_harvest():
harvest()
if get_pos_y() == 1:
plant(Entities.Bush)
elif get_pos_y() == 2:
if get_ground_type() != Grounds.Soil:
till()
plant(Entities.Carrot)
move(North)
4. Salto al Mapa 3x3 y Modularización con Funciones
Al expandir el mapa a 3x3 y desbloquear las funciones en Python, abstraemos el movimiento y el sistema de riego en bloques limpios e independientes.
# FASE 4: Bot modular completo para grilla 3x3 con riego y navegación
def moving():
if get_pos_x() == get_world_size() - 1:
move(North)
move(East)
def watering():
if get_water() < 0.5 and num_items(Items.Water) > 0:
use_item(Items.Water)
while True:
if can_harvest():
harvest()
y = get_pos_y()
if y == 0:
plant(Entities.Grass)
elif y == 1:
plant(Entities.Bush)
elif y == 2:
if get_ground_type() != Grounds.Soil:
till()
plant(Entities.Carrot)
watering()
moving()
Conclusión
Con este script modular corriendo en segundo plano, tu granja generará los recursos necesarios de forma 100% autónoma para desbloquear Calabazas (Pumpkins) y Cactus.
A partir de este punto, el juego deja de ser un barrido lineal y pasa a la mitad más interesante: la implementación de sistemas de buffering, priorización dinámica de recursos y algoritmos de ordenamiento 2D.