The Farmer Was Replaced - Codebeispiele
Vollständige Codebeispiele aus dem Spiel mit detaillierten Erklärungen. Kopieren und fügen Sie diese Codes direkt in Ihr Spiel ein, um Ihre Fähigkeiten in der Farmautomatisierung zu verbessern.
Beispiel 1: Grundlegende automatische Ernte
Das einfachste Automatisierungsskript, das kontinuierlich reifes Gras erntet.
# Grundlegende automatische Ernte - Das einfachste Automationsskript
# Dies überprüft kontinuierlich und erntet reife Pflanzen
while True:
if can_harvest():
harvest()
# Das Spiel pausiert automatisch zwischen den Iterationen
📊 Code Analysis
Beispiel 2: Automatischer 3×3-Farm-Durchlauf
Automatisch alle Felder durchlaufen und ernten.
# 3x3-Farm automatischer Durchlauf - Systematisches Bewirtschaftungsmuster
# Dieses Skript bewegt sich in einem Gittermuster, um die gesamte Farm abzudecken
while True:
# Immer zuerst nach erntefähigen Pflanzen suchen
if can_harvest():
harvest()
# Zum nächsten Feld bewegen (Ost-Richtung)
move(East)
# Beim Erreichen des Zeilenendes zur nächsten Reihe bewegen (Nord)
# get_world_size() gibt die Größe deiner Farm zurück (normalerweise 3x3 oder 5x5)
if get_pos_x() == get_world_size() - 1:
move(North)
Beispiel 3: Mehrfachfrucht-Automatisierung (Gras + Busch + Karotte)
Verschiedene Früchte basierend auf der Spaltenposition anbauen.
# Mehrfachfrucht-Automatisierung - Verschiedene Früchte pro Spalte
# Demonstriert bedingte Logik und Ressourcenmanagement
while True:
# Immer zuerst ernten was bereit ist
if can_harvest():
harvest()
# Aktuelle Position abrufen (x-Koordinate)
x = get_pos_x()
# Spaltenbasierte Pflanzstrategie:
if x == 0:
# Spalte 0: Gras natürlich wachsen lassen (kostenlose Ressource)
pass # Keine Aktion nötig
elif x == 1:
# Spalte 1: Büsche für Holz pflanzen
plant(Entities.Bush)
elif x == 2:
# Spalte 2: Karotten pflanzen (erfordert Bodenbearbeitung)
# Überprüfen ob Boden Erde ist, falls nicht, umpflügen
if get_ground_type() != Grounds.Soil:
till()
# Sicherstellen, dass wir Karottensamen haben
if num_items(Items.Carrot_Seed) < 1:
trade(Items.Carrot_Seed) # Samen kaufen falls nötig
plant(Entities.Carrot)
# Zur nächsten Spalte bewegen
move(East)
# Beim Erreichen des Zeilenendes zur nächsten Reihe bewegen
if x == get_world_size() - 1:
move(North) Beispiel 4: Schachbrettartiges Pflanzen von Bäumen
Bäume benötigen schachbrettartiges Pflanzen, um Benachbarte zu vermeiden.
# Schachbrett-Pflanzmuster - Raum-effiziente Landwirtschaft
# Bäume können nicht nebeneinander gepflanzt werden, daher Schachbrettmuster verwenden
while True:
# Alle reifen Pflanzen ernten
if can_harvest():
harvest()
# Aktuelle Koordinaten abrufen
x = get_pos_x() # Aktuelle Spalte (0, 1, 2, etc.)
y = get_pos_y() # Aktuelle Reihe (0, 1, 2, etc.)
# Schachbrett-Logik: Bäume auf "schwarzen Feldern", Büsche auf "weißen Feldern"
# Dies stellt sicher, dass keine zwei Bäume nebeneinander stehen (Bäume brauchen Platz)
if (x % 2 == 0 and y % 2 == 0) or (x % 2 == 1 and y % 2 == 1):
# "Schwarze Felder" - Bäume pflanzen
plant(Entities.Tree)
else:
# "Weiße Felder" - Büsche pflanzen
plant(Entities.Bush)
# Zum nächsten Feld bewegen
move(East)
# Zur nächsten Reihe wechseln wenn Ende der aktuellen Reihe erreicht
if x == get_world_size() - 1:
move(North) Beispiel 5: Ressourcen-Prioritätsmanagement
Intelligentes Ressourcenmanagement, Priorisierung der Sammlung knapper Ressourcen.
# Ressourcen-Prioritätsmanagement - Intelligente Ressourcenverteilung
# Passt die Bewirtschaftungsstrategie automatisch an aktuelle Lagerbestände an
while True:
# Immer zuerst ernten - dies ist unsere Hauptaktion
if can_harvest():
harvest()
# Aktuelle Position für Pflanzentscheidungen abrufen
x = get_pos_x()
# Ressourcenbasierte Pflanzstrategie mit Prioritäten:
# PRIORITÄT 1: Heuvorrat sicherstellen (essenziell für Handel und Fütterung)
if num_items(Items.Hay) < 500:
# Nichts pflanzen - Gras natürlich wachsen lassen für kostenloses Heu
pass # Keine Aktion nötig
# PRIORITÄT 2: Holzvorrat aufrechterhalten (für verschiedene Upgrades benötigt)
elif num_items(Items.Wood) < 300:
# Büsche pflanzen um Holz zu erzeugen
plant(Entities.Bush)
# PRIORITÄT 3: Karottenreserven aufbauen (für Nahrung und fortgeschrittenen Handel)
elif num_items(Items.Carrot) < 200:
# Karotten pflanzen (erfordert Bodenbearbeitung)
if get_ground_type() != Grounds.Soil:
till() # Boden vorbereiten falls nötig
if num_items(Items.Carrot_Seed) == 0:
trade(Items.Carrot_Seed) # Samen kaufen wenn wir keine haben
plant(Entities.Carrot)
# Zum nächsten Feld in systematischem Muster bewegen
move(East)
if x == get_world_size() - 1:
move(North) Beispiel 6: Automatisches Bewässerungssystem
Automatisiertes Bewässerungssystem, beschleunigt das Pflanzenwachstum bis zu 5-fach.
# Automatisches Bewässerungssystem - Fortgeschrittene Pflanzenbeschleunigung
# Hält Wassertanks bereit und beschleunigt Pflanzenwachstum bis zu 5-fach
while True:
# WASSERMANAGEMENT: Ausreichende Wasserversorgung sicherstellen
# Wassertanks sind essenziell für die Beschleunigung des Pflanzenwachstums
if num_items(Items.Water_Tank) < 100:
# Für leere Tanks handeln wenn wir nicht genug haben
trade(Items.Empty_Tank)
# WASSERANWENDUNG: Wasser verwenden wenn Pflanzen es brauchen
# get_water() gibt Hydrationslevel zurück (0.0 bis 1.0)
# 0.75 bedeutet Pflanzen sind 75% hydriert - Wasser wenn darunter
if get_water() < 0.75:
use_item(Items.Water_Tank) # Wasser auf aktuelles Feld anwenden
# ERNTE: Immer zuerst nach reifen Pflanzen suchen
if can_harvest():
harvest()
# PFLANZEN: Karotten-Pflanzenzyklus aufrechterhalten
# Boden vorbereiten falls nötig (Karotten benötigen umgegrabenen Boden)
if get_ground_type() != Grounds.Soil:
till() # Rasen/Gras in Erde umwandeln
# Sicherstellen dass wir Samen haben bevor wir pflanzen
if num_items(Items.Carrot_Seed) < 1:
trade(Items.Carrot_Seed) # Samen kaufen falls nötig
plant(Entities.Carrot) # Karottensamen pflanzen
# BEWEGUNG: Systematische Traversierung fortsetzen
move(East)
if get_pos_x() == get_world_size() - 1:
move(North) Beispiel 7: Funktionskapselung
Funktionen verwenden, um Code klarer und lesbarer zu machen.
# Funktionskapselung - Code-Organisation und Wiederverwendbarkeit
# Komplexe Logik in wiederverwendbare Funktionen aufteilen
# FUNKTION: Bewegung zum nächsten Feld im Gittermuster handhaben
def move_to_next():
"""Zum nächsten Feld bewegen, zur nächsten Reihe wechseln wenn Ende erreicht"""
x = get_pos_x()
move(East) # Immer zuerst versuchen ostwärts zu bewegen
# Wenn wir das Ende der aktuellen Reihe erreicht haben, nordwärts zur nächsten Reihe
if x == get_world_size() - 1:
move(North)
# FUNKTION: Karottenpflanzen mit allen notwendigen Vorbereitungen handhaben
def plant_carrot():
"""Karotte mit Bodenbearbeitung und Samenmanagement pflanzen"""
# Sicherstellen dass wir geeigneten Boden für Karotten haben
if get_ground_type() != Grounds.Soil:
till() # Boden vorbereiten falls nötig
# Sicherstellen dass wir Karottensamen haben
if num_items(Items.Carrot_Seed) < 1:
trade(Items.Carrot_Seed) # Samen kaufen wenn wir keine haben
# Karotte pflanzen
plant(Entities.Carrot)
# HAUPTPROGRAMM: Saubere, lesbare Logik mit unseren Funktionen
while True:
# Alle reifen Pflanzen ernten (immer zuerst tun)
if can_harvest():
harvest()
# Karottenproduktion aufrechterhalten wenn Lager niedrig
if num_items(Items.Carrot) < 100:
plant_carrot() # Unsere Funktion für sauberen Code verwenden
# Mit unserer Bewegungsfunktion zur nächsten Position bewegen
move_to_next() # Saubere, wiederverwendbare Bewegungslogik Beispiel 8: Sonnenblumen-Energieoptimierung
Sonnenblumen-Optimierungsstrategie, nur hochenergetische Blumen ernten.
# Sonnenblumen-Energieoptimierung - Fortgeschrittene Messung und Auswahl
# Dieses Skript demonstriert Schleifen, Arrays und Optimierungsalgorithmen
# PHASE 1: Alle Sonnenblumen auf der Farm pflanzen und messen
sunflowers = [] # Array zur Speicherung der Energiemessungen
world_size = get_world_size()
# Sonnenblumen auf jedem Feld pflanzen und Energie messen
for i in range(world_size * world_size):
# Boden vorbereiten falls nötig
if get_ground_type() == Grounds.Turf:
till()
# Sonnenblume pflanzen (für Samen handeln wenn wir keine haben)
if num_items(Items.Sunflower_Seed) > 0 or trade(Items.Sunflower_Seed):
plant(Entities.Sunflower)
# Energie messen wenn Sonnenblume gepflanzt wurde
if get_entity_type() == Entities.Sunflower:
energy = measure() # Sonnenblumen-Energie-Wert abrufen
sunflowers.append(energy) # In unserem Array speichern
# Zum nächsten Feld in zeilenweiser Reihenfolge bewegen
move(East)
if get_pos_x() == 0: # Ende der Reihe erreicht
move(North) # Zur nächsten Reihe bewegen
# PHASE 2: Die Sonnenblume mit höchster Energie finden
max_val = 0
max_index = 0
# Alle Messungen durchlaufen um Maximum zu finden
for i in range(len(sunflowers)):
if sunflowers[i] > max_val:
max_val = sunflowers[i] # Max-Wert aktualisieren
max_index = i # Position der besten Sonnenblume merken
# PHASE 3: Zur optimalen Sonnenblume bewegen und ernten
# (In einer realen Implementierung bräuchte man Bewegungslogik zur max_index Position)
# Für jetzt nehmen wir an wir sind an der richtigen Position
if measure() == max_val: # Doppelte Überprüfung dass wir bei der richtigen Blume sind
if can_harvest():
harvest() # Höchstenergetische Sonnenblume ernten