The Farmer был заменен на Pumpkin Code — Patch Dead Tiles, Then Harvest

Написано для текущей сборки 1.0+ (эра нескольких дронов). Тыквы сливаются в один гигантский урожай. Простая петля сбора сворачивает слияние. Отслеживайте мертвые плитки, пересаживайте и собирайте урожай только тогда, когда каждая плитка - живая тыква.

1.0 тыквенные правила (что изменилось по сравнению со старыми советами)

  • Растение на почве: «till()» до «Grounds.Soil». Посадка тратит морковь (галочка `get_cost(Entities.Pumpkin)`).
  • Примерно 1 из 5 тыкв умирает при созревании и оставляет «Entities.Dead_Pumpkin». «can_harvest()» всегда ложно на мертвой плитке. Мертвые плитки блокируют гигантское слияние.
  • Полностью выращенные соседние тыквы сливаются. Выход составляет **n³** для длины стороны 1–5, затем **6·n²** от 6×6 до (32×32 → 6,144). Собирайте урожай рано, и вы получите только небольшие кластеры.
  • Вода ускоряет рост (до 5раз на уровне воды 1), но не останавливает смертность. Посадка чего-либо на мертвую тыкву очищает его (вики). Дополнительно удобрите * * новое * * растение после пересадки, чтобы сократить время роста на 2 секунды.

Стратегия: растение → трек плохая плитка → патч → урожай

Не сканируйте всю ферму вечно. После первого прохода сохраните список координат, которые являются пустыми, мертвыми или еще не собираемыми. Возвращайтесь только к этим плиткам.

  • Завод До + посадите каждую плитку один раз.
  • Трек: Добавьте `[x, y]`, когда `not can_harvest()` или сущность Dead_Pumpkin.
  • Патч: Пересадка через мертвый/пустой; опционально `use_item(Items.Fertilizer)` на новом заводе.
  • Сбор урожая: Когда плохой список пуст, «собрать урожай()» один раз в любом месте гигантской тыквы.
🎃

Сценарий обучения (один дрон)

Использует только документированные API. Никаких придуманных помощников. После Megafarm разделите ферму на петли колонн/секторов — см. примечание для нескольких дронов ниже.

python
def go_to(x, y):
	while get_pos_x() != x:
		if get_pos_x() < x:
			move(East)
		else:
			move(West)
	while get_pos_y() != y:
		if get_pos_y() < y:
			move(North)
		else:
			move(South)

def plant_full_field():
	size = get_world_size()
	for y in range(size):
		for x in range(size):
			go_to(x, y)
			if get_ground_type() != Grounds.Soil:
				till()
			# Planting over Dead_Pumpkin removes it (wiki). No harvest needed.
			plant(Entities.Pumpkin)
			if get_water() < 0.75:
				use_item(Items.Water)

def collect_bad_tiles():
	bad = []
	size = get_world_size()
	for y in range(size):
		for x in range(size):
			go_to(x, y)
			ent = get_entity_type()
			if ent == Entities.Dead_Pumpkin or ent != Entities.Pumpkin or not can_harvest():
				bad.append([x, y])
	return bad

def patch_bad(bad):
	# Only revisit problem tiles until the list is empty
	while len(bad) > 0:
		still_bad = []
		for pos in bad:
			x = pos[0]
			y = pos[1]
			go_to(x, y)
			ent = get_entity_type()
			if ent != Entities.Pumpkin:
				# Dead_Pumpkin or empty: planting clears dead (wiki)
				if get_ground_type() != Grounds.Soil:
					till()
				plant(Entities.Pumpkin)
				still_bad.append([x, y])
			elif not can_harvest():
				# Live but still growing — wait
				still_bad.append([x, y])
			# else: live + harvestable — drop from list
		bad = still_bad

clear()
while True:
	plant_full_field()
	bad = collect_bad_tiles()
	patch_bad(bad)
	# Full grid is live pumpkins → giant merge should be ready
	go_to(0, 0)
	harvest()

Как проверить размер тыквы с помощью меры() (тыквенная мера)

  • На тыквах «measure()» возвращает стабильный идентификатор для этой объединенной тыквы (одинаковое значение на каждой плитке одной и той же гигантской тыквы).
  • Чтобы проверить, слилось ли **целое квадратное поле**: измерьте один угол, измерьте противоположный угол; если значения совпадают, соберите урожай.
  • Надежно работает на **квадратных** монокультурных тыквенных полях. Прямоугольные смешанные поля могут сливаться в нечетные фигуры — тогда продолжайте использовать список плохих плиток.
  • Это ответы на поиск ** меры тыквы ** и **как проверить размер тыквы **, не придумывая отдельную страницу.

Пример помощника, который вы можете вызвать после `patch_bad(...)`:

python
def pumpkin_fully_merged():
	size = get_world_size()
	go_to(0, 0)
	if get_entity_type() != Entities.Pumpkin or not can_harvest():
		return False
	a = measure()
	go_to(size - 1, size - 1)
	if get_entity_type() != Entities.Pumpkin or not can_harvest():
		return False
	return measure() == a

# After patch_bad(...):
go_to(0, 0)
if pumpkin_fully_merged():
	harvest()

Дальнейшее масштабирование с помощью флота дронов? Смотрите несколько дронов Гайд.

Multi-drone (Megafarm) — сентябрь-октябрь 2026 консенсус

  • Дроны **не** делятся глобалами. Дайте каждому дрону свой собственный диапазон столбцов или прямоугольник; не добавляйте к одному общему списку бэд-тайлов от каждого дрона.
  • `spawn_drone(fn)` then `wait_for(handle)` to sync phases (plant → patch → harvest). Pattern: `if not spawn_drone(task): task()`.
  • Фермы-лидеры поливают каждую плитку и плотно затягивают петлю плохой плитки — посты в сообществе сообщают о многомиллионной тыкве/мин с параллельными секторами.
  • Полные паттерны Megafarm: руководство по нескольким дронам