added turtle executer

This commit is contained in:
Djeeberjr 2022-04-13 21:40:45 +02:00
parent dffb493d4f
commit b40e293d6e

View File

@ -0,0 +1,51 @@
package lib.turtle;
import kernel.turtle.Turtle;
using tink.CoreApi;
class TurtleExecuter {
private var instructions:Array<TurtleInstruction>;
public function new(instructions:Array<TurtleInstruction>) {
this.instructions = instructions;
}
public function execute() {
for (inst in instructions){
executeInst(inst);
}
}
private function executeInst(instruction: TurtleInstruction): Outcome<Noise,String> {
switch instruction {
case Forward:
return Turtle.instance.forward();
case Back:
return Turtle.instance.back();
case Up:
return Turtle.instance.up();
case Down:
return Turtle.instance.down();
case TurnLeft:
return Turtle.instance.turnLeft();
case TurnRight:
return Turtle.instance.turnRight();
case Dig(dir):
return Turtle.instance.dig(dir);
case Place(dir):
return Turtle.instance.place(dir);
case PlacseSign(dir, text):
return Turtle.instance.placeSign(dir, text);
case Select(slot):
var r = Turtle.instance.selectSlot(slot);
if (r.isSuccess()) {
return Outcome.Success(null);
} else {
return Outcome.Failure("Failed to select slot");
}
}
return Outcome.Failure("Unknown instruction: " + instruction);
}
}