From 582bf2219eca094e17b29d33ffd0463301f3256b Mon Sep 17 00:00:00 2001 From: james Date: Tue, 5 May 2026 11:32:01 +0930 Subject: [PATCH] Added Power farming with Sunflower support and utility methods --- .idea/codeStyles/codeStyleConfig.xml | 5 +++ __utils__.py | 5 +++ farm.py | 55 +++++++++++++++++++++++++--- main.py | 16 ++++---- save.json | 2 +- 5 files changed, 68 insertions(+), 15 deletions(-) create mode 100644 .idea/codeStyles/codeStyleConfig.xml create mode 100644 __utils__.py diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml new file mode 100644 index 0000000..a55e7a1 --- /dev/null +++ b/.idea/codeStyles/codeStyleConfig.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/__utils__.py b/__utils__.py new file mode 100644 index 0000000..b5e5878 --- /dev/null +++ b/__utils__.py @@ -0,0 +1,5 @@ +def pow(integer: int, exp: int): + result = 1 + for _ in range(exp): + result *= integer + return result diff --git a/farm.py b/farm.py index 745cfbd..baaea98 100644 --- a/farm.py +++ b/farm.py @@ -51,20 +51,20 @@ def goto(x, y): move(dy_dir) - - def hay(): if can_harvest(): harvest() if get_entity_type() == None and get_ground_type() != Grounds.Grassland: till() + def bush(): if can_harvest(): harvest() if get_entity_type() == None or get_entity_type() == Entities.Grass: plant(Entities.Bush) + def carrot(): if can_harvest(): harvest() @@ -73,6 +73,7 @@ def carrot(): till() plant(Entities.Carrot) + def wood(): if can_harvest(): harvest() @@ -81,6 +82,8 @@ def wood(): plant(Entities.Tree) else: plant(Entities.Bush) + + def pumpkin_old(): dead_kins = set() while True: @@ -104,9 +107,8 @@ def pumpkin_old(): move(East) move(North) -def pumpkin(): - wsize = get_world_size() +def pumpkin(): # Build queue of all coords needing an alive pumpkin pending = [] for x in range(wsize): @@ -137,4 +139,47 @@ def pumpkin(): pending.append(target) harvest() - + + +def sunflower(): + flowers = {} + + # Setup: plant every tile, record petal count + for x in range(wsize): + for y in range(wsize): + goto(x, y) + harvest_except(Entities.Sunflower) + auto_till() + if get_entity_type != Entities.Sunflower: + plant(Entities.Sunflower) + flowers[(x, y)] = measure() + + # Harvest highest-petal-count first + while len(flowers) > 0: + # Find the (key, value) pair with the largest value + best_key = None + best_val = -1 + for key in flowers: + v = flowers[key] + if v > best_val: + best_val = v + best_key = key + + # Go harvest it + bx = best_key[0] + by = best_key[1] + goto(bx, by) + harvest() + # Remove from dict so next iteration picks the next highest + flowers.pop(best_key) + + + + +def harvest_except(excluded_entity): + if get_entity_type() != excluded_entity and can_harvest(): + harvest() + +def auto_till(): + if get_ground_type() != Grounds.Soil: + till() \ No newline at end of file diff --git a/main.py b/main.py index 2aa11b0..d21eedc 100644 --- a/main.py +++ b/main.py @@ -1,24 +1,20 @@ import farm from __builtins__ import * -def my_min(values): - result = values[0] - i = 1 - while i < len(values): - if values[i] < result: - result = values[i] - i += 1 - return result +from __utils__ import * HAY_TARGET = 100 WOOD_TARGET = 100 -CARROT_TARGET = get_world_size() * get_world_size() * 3 +POWER_TARGET = pow(get_world_size(), 2) +CARROT_TARGET = pow(get_world_size(), 2) * 3 while True: hay = num_items(Items.Hay) wood = num_items(Items.Wood) carrots = num_items(Items.Carrot) pumpkins = num_items(Items.Pumpkin) + power = num_items(Items.Power) hay_deficit = HAY_TARGET - hay wood_deficit = WOOD_TARGET - wood + power_deficit = POWER_TARGET - power # Floors first if hay_deficit > 0 or wood_deficit > 0: @@ -26,6 +22,8 @@ while True: farm.hay() else: farm.wood() + elif power_deficit > 0: + farm.sunflower() else: # Pick the single lowest of the four lowest = min(hay, wood, carrots, pumpkins) diff --git a/save.json b/save.json index 4d9ccf7..3bd70f2 100644 --- a/save.json +++ b/save.json @@ -1 +1 @@ -{"items":{"serializeList":[{"name":"hay","nr":10158.0},{"name":"wood","nr":14107.0},{"name":"carrot","nr":8677.0},{"name":"pumpkin","nr":12127.0}]},"dockedFiles":[{"key":"main","value":"farm"}],"minimizedFiles":[],"openFilePositions":[{"key":"farm","value":{"x":-1031.4744873046875,"y":1670.5185546875}},{"key":"main","value":{"x":1484.2628173828125,"y":1700.00048828125}}],"openFileScrollPositions":[{"key":"farm","value":3164.333984375},{"key":"main","value":807.3118286132813}],"openFileSizes":[{"key":"farm","value":{"x":0.0,"y":861.5}},{"key":"main","value":{"x":1013.6471557617188,"y":600.0}}],"openDocPages":[],"unlocks":["grass_5","soil","harvest","pass","do_a_flip","pet_the_piggy","grassland","hay","straw_hat","tap","while","true","false","break","continue","loops","can_harvest","if","else","elif","speed_5","traffic_cone","move","north","south","east","west","expand_6","for","range","get_world_size","wood","bush","entities","clear","plant","change_hat","gray_hat","purple_hat","green_hat","brown_hat","hats","and","or","not","operators","carrot","till","can_trade","trade","items","carrot_seed","carrots_4","get_entity_type","get_ground_type","grounds","get_pos_x","get_pos_y","none","num_items","num_unlocked","senses","variables","functions","def","return","global","trees_4","tree","tree_hat","carrot_hat","append","remove","pop","insert","len","list","lists","print","quick_print","unlocks","str","debug","pumpkins_4","pumpkin","pumpkin_seed","dead_pumpkin","import","from","pumpkin_hat","utilities","min","max","abs","random","dictionaries","dicts","sets","add","dict","set","costs","get_cost","auto_unlock","unlock"],"version":3} \ No newline at end of file +{"items":{"serializeList":[{"name":"hay","nr":25030.0},{"name":"wood","nr":22989.0},{"name":"carrot","nr":24080.0},{"name":"pumpkin","nr":25951.0},{"name":"water","nr":507.0},{"name":"fertilizer","nr":267.0},{"name":"power","nr":2755.3881666666807}]},"dockedFiles":[],"minimizedFiles":[],"openFilePositions":[{"key":"farm","value":{"x":-947.4608154296875,"y":2463.12451171875}},{"key":"main","value":{"x":172.9576416015625,"y":2470.416015625}},{"key":"docs0","value":{"x":-1906.639892578125,"y":884.713134765625}},{"key":"docs1","value":{"x":-1937.482421875,"y":1556.6673583984375}},{"key":"docs2","value":{"x":-590.66552734375,"y":1308.072021484375}},{"key":"__utils__","value":{"x":785.8156127929688,"y":1809.6502685546875}}],"openFileScrollPositions":[{"key":"farm","value":4288.9580078125},{"key":"main","value":-0.0008544921875},{"key":"__utils__","value":0.0}],"openFileSizes":[{"key":"farm","value":{"x":0.0,"y":861.5}},{"key":"main","value":{"x":1554.4163818359375,"y":880.614990234375}},{"key":"docs0","value":{"x":900.0,"y":700.0}},{"key":"docs1","value":{"x":900.0,"y":700.0}},{"key":"docs2","value":{"x":900.0,"y":700.0}},{"key":"__utils__","value":{"x":0.0,"y":0.0}}],"openDocPages":[{"key":"docs0","value":"docs/unlocks/sunflowers.md"},{"key":"docs1","value":"docs/scripting/dicts.md"},{"key":"docs2","value":"docs/unlocks/sunflowers.md"}],"unlocks":["grass_5","soil","harvest","pass","do_a_flip","pet_the_piggy","grassland","hay","straw_hat","tap","while","true","false","break","continue","loops","can_harvest","if","else","elif","speed_5","traffic_cone","move","north","south","east","west","expand_6","for","range","get_world_size","wood","bush","entities","clear","plant","change_hat","gray_hat","purple_hat","green_hat","brown_hat","hats","and","or","not","operators","carrot","till","can_trade","trade","items","carrot_seed","carrots_5","get_entity_type","get_ground_type","grounds","get_pos_x","get_pos_y","none","num_items","num_unlocked","senses","variables","functions","def","return","global","trees_5","tree","tree_hat","carrot_hat","append","remove","pop","insert","len","list","lists","print","quick_print","unlocks","str","debug","pumpkins_4","pumpkin","pumpkin_seed","dead_pumpkin","from","import","pumpkin_hat","min","max","abs","random","utilities","dicts","sets","add","dict","set","dictionaries","get_cost","costs","unlock","auto_unlock","water","use_item","get_water","watering","sunflower_seed","sunflower","power","get_active_power","measure","sunflowers","weird_substance","fertilizer","sunflower_hat"],"version":3} \ No newline at end of file