Meisterung der Riesenkürbisse: Koordinatenverfolgung
Kürbisse sind besonders, weil sie zu größeren Pflanzen verschmelzen. Wir brauchen ein intelligentes Skript.
Die Strategie: Flicken & Warten
Das Ziel ist es, ein volles Raster von Kürbissen zu bekommen, um einen Riesenkürbis zu bilden.
- Verfolgen: Koordinaten aufzeichnen.
- Flicken: Drohne besucht nur diese Punkte.
- Ernten: Ernten nur wenn das Raster voll ist.
🎃
Schritt-für-Schritt Code-Analyse
Step 1 Intelligente Bewegung
Um zu verhindern, dass die Drohne stecken bleibt, benötigen wir `moveEx`.
python
def moveEx(dir):
dirs=[East,South,West,North]
dirs.remove(dir)
# Try intended direction first
if(not move(dir)):
# If blocked, try alternatives to wiggle out
if(not move(dirs[0])):
if(not move(dirs[1])):
if(not move(dirs[2])):
return False Step 2 Verfolgen & Nachpflanzen
Die Funktion `doPumpkin` verwaltet eine Liste.
python
def doPumpkin():
back()
success = [] # List of "problematic" coordinates
# Helper to track empty spots
def adddie():
if not can_harvest():
success.append({"x":get_pos_x(),"y":get_pos_y()})
plantpumpkin()
# Helper to check if spot is fixed
def removedie():
if(can_harvest()):
success.remove({"x":get_pos_x(),"y":get_pos_y()})
else:
plantpumpkin()
# Initial Pass: Scan whole grid
plantonce(adddie)
# Re-visit Loop: Only go to bad spots
while(len(success) != 0):
for pos in success:
back(pos["x"],pos["y"])
removedie()
return len(success)==0 Vollständiger Quellcode
PythonHinweis: Dieses Skript enthält Logik für mehrere Pflanzen.
python
def back(x=0,y=0):
while x!=get_pos_x() or y!=get_pos_y():
while get_pos_x()!=x:
if(get_pos_x()<x):
moveEx(East)
else:
moveEx(West)
while get_pos_y()!=y:
if(get_pos_y()<y):
moveEx(North)
else:
moveEx(South)
def moveEx(dir):
dirs=[East,South,West,North]
dirs.remove(dir)
if(not move(dir)):
if(not move(dirs[0])):
if(not move(dirs[1])):
if(not move(dirs[2])):
return False
def do(x,worldsize=0):
if worldsize == 0:
worldsize=get_world_size()
dir=East
for i in range(worldsize):
for j in range(worldsize-1):
x()
move(dir)
x()
move(North)
if(dir==East):
dir=West
else:
dir=East
# --- Pumpkin Logic Start ---
def plantpumpkin():
plant(Entities.Pumpkin)
def doPumpkin():
back()
success = []
def adddie():
if not can_harvest():
success.append({"x":get_pos_x(),"y":get_pos_y()})
plantpumpkin()
def removedie():
if(can_harvest()):
success.remove({"x":get_pos_x(),"y":get_pos_y()})
else:
plantpumpkin()
def plantonce(x):
dir = East
for i in range(get_world_size()):
for j in range(get_world_size()-1):
x()
move(dir)
x()
move(North)
if dir == East:
dir=West
else:
dir=East
plantonce(plantpumpkin) # First planting
back()
plantonce(adddie) # Check for failures
# Keep fixing specific spots
while(len(success) != 0):
for pos in success:
back(pos["x"],pos["y"])
removedie()
return len(success)==0
def pumpProject():
# Helper to till ground first
def tillx():
if(get_ground_type()==Grounds.Grassland):
till()
back()
do(tillx)
while True:
# Wait until doPumpkin returns true (all spots ready)
while doPumpkin():
back()
harvest()
# --- Pumpkin Logic End ---
# Start the bot
clear()
pumpProject() Kürbis-Anbautipps
- • Stellen Sie sicher, dass Ihr Land gepflügt ist.
- • Verwenden Sie wenn möglich Wasser.