Files
farmer-was-replaced/f2.py

158 lines
3.9 KiB
Python

def carrots(worldSize):
simple_column(worldSize, True, Entities.Carrot)
def pumpkins(worldSize):
simple_column(worldSize, True, Entities.Pumpkin)
def bushes_and_trees(worldSize):
for row in range(worldSize):
if can_harvest():
harvest()
if row % 2 == 0:
plant(Entities.Bush)
else:
plant(Entities.Tree)
move(North)
def simple_column(worldSize, shouldTill, entity):
for row in range(worldSize):
if can_harvest():
harvest()
if shouldTill:
till()
plant(entity)
move(North)
def move_to(x, y):
while x > get_pos_x():
move(East)
while x < get_pos_x():
move(West)
while y > get_pos_y():
move(North)
while y < get_pos_y():
move(South)
def reset_pos():
while get_pos_y() > 0:
move(North)
while get_pos_x() > 0:
move(West)
def runWorld():
worldSize = get_world_size()
for col in range(worldSize):
runColumn(col, worldSize)
move(East)
def runColumn(col, worldSize):
# 1 in 3 is carrots
if col % 3 == 0:
carrots(worldSize)
elif col % 3 == 1:
pumpkins(worldSize)
else:
bushes_and_trees(worldSize)
def plant_grid(width, height, plantWith, waterBelow, requireSoil):
tracker = 0
others = {East:West, West:East}
sideDir = East
# first pass over, checking if anything can be harvested. if so, harvest.
# then check what type of ground is down, if it's not soil then till.
# then if it's below 75% water and i have some water, give it some.
# then plant a pumpkin.
for row in range(height):
for col in range(width):
if can_harvest():
harvest()
if requireSoil:
if get_ground_type() != Grounds.Soil:
till()
if get_water() < waterBelow:
use_item(Items.Water)
index = tracker % len(plantWith)
tracker += 1
plant(plantWith[index])
# if it's not the last pass, then move
if col < width - 1:
move(sideDir)
if row < height - 1:
sideDir = others[sideDir]
move(North)
def plant_pumpkin(width, height):
plant_grid(width, height, [Entities.Pumpkin], 0.75, True)
def plant_carrots(width, height):
plant_grid(width, height, [Entities.Carrot], 0.75, True)
def plant_alternating(width, height, plantWith):
plant_grid(width, height, plantWith, 0.75, False)
# verify_pumpkin will verify that a pumpkin is planted in all tiles of a quadrant, and it will check that
# the pumpkin isn't dead. if it's dead it will replant it. Returns whether any dead pumpkins were found.
def verify_pumpkin(width, height):
result = False
others = {East:West, West:East}
sideDir = East
for row in range(height):
for col in range(width):
if get_entity_type() == Entities.Dead_Pumpkin:
# ~20% of pumpkins die, we just replant
plant(Entities.Pumpkin)
result = True
# if it's not the last pass, then move
if col < width - 1:
move(sideDir)
if row < height - 1:
sideDir = others[sideDir]
move(North)
return result
#reset_pos()
while True:
worldSize = get_world_size()
move_to(0, 0)
plant_pumpkin(worldSize / 2, worldSize / 2)
move_to(0, 0)
while verify_pumpkin(worldSize / 2, worldSize / 2):
move_to(0, 0)
move_to(worldSize / 2, 0)
plant_carrots(worldSize / 2, worldSize / 2)
move_to(0, worldSize / 2)
plant_alternating(worldSize / 2, worldSize / 2, [ Entities.Tree, Entities.Bush ])
move_to(worldSize / 2, worldSize / 2)
plant_pumpkin(worldSize / 2, worldSize / 2)
move_to(worldSize / 2, worldSize / 2)
while verify_pumpkin(worldSize / 2, worldSize / 2):
move_to(worldSize / 2, worldSize / 2)