FOP-2425-Marathon/src/main/java/h00/Main.java
Oshgnacknak ed3f0fe4d0 Squashed 'solution/H00/' content from commit 38bca6b
git-subtree-dir: solution/H00
git-subtree-split: 38bca6b3b94b8413dd3377f62b730a6fd4fb892d
2025-01-11 16:41:04 +01:00

121 lines
3.4 KiB
Java

package h00;
import fopbot.Direction;
import fopbot.Robot;
import fopbot.RobotFamily;
import fopbot.World;
/**
* Main entry point in executing the program.
*/
public class Main {
/**
* The subtask to run.
*/
public static int runToSubtask = -1;
/**
* The world speed in milliseconds.
*/
public static int delay = 300;
/**
* Main entry point in executing the program.
*
* @param args program arguments, currently ignored
*/
public static void main(String[] args) {
// This sets up the FOPBot World with a 4x4 grid. (DO NOT TOUCH)
setupWorld();
// TODO: H0.4 - Initializing FOPBot
Robot kasper = new Robot(0, 0, Direction.DOWN, 4, RobotFamily.SQUARE_BLUE);
Robot alfred = new Robot(0, 3, Direction.DOWN, 0, RobotFamily.SQUARE_GREEN);
if (runToSubtask == 0) return; // DO NOT TOUCH!
// TODO: H0.5.1 - Turning with repeated instructions
alfred.turnLeft();
alfred.turnLeft();
if (runToSubtask == 1) return; // DO NOT TOUCH!
// TODO: H0.5.2 - Turning with for-loop
int numberOfTurns = 2;
for (int i = 0; i < numberOfTurns; i++) {
alfred.turnLeft();
}
if (runToSubtask == 2) return; // DO NOT TOUCH!
// TODO: H0.5.3 - Turning with while-loop
while (!kasper.isFacingRight()) {
kasper.turnLeft();
}
if (runToSubtask == 3) return; // DO NOT TOUCH!
// TODO: H0.6.1 - Put with repeated instructions
kasper.putCoin();
kasper.move();
kasper.move();
kasper.move();
kasper.turnLeft();
if (runToSubtask == 4) return; // DO NOT TOUCH!
// TODO: H0.6.2 - Pick with repeated instructions
alfred.move();
alfred.move();
alfred.move();
alfred.pickCoin();
alfred.turnLeft();
if (runToSubtask == 5) return; // DO NOT TOUCH!
// TODO: H0.6.3 - Put with for-loop
kasper.putCoin();
int numberOfSteps = 3;
for (int i = 0; i < numberOfSteps; i++) {
kasper.move();
}
kasper.turnLeft();
if (runToSubtask == 6) return; // DO NOT TOUCH!
// TODO: H0.7.1 - Pick with while-loop
while (alfred.isFrontClear()) {
alfred.move();
}
alfred.pickCoin();
alfred.turnLeft();
if (runToSubtask == 7) return; // DO NOT TOUCH!
// TODO: H0.7.2 - Pick and put with while-loop
kasper.putCoin();
while (alfred.isFrontClear()) {
kasper.move();
alfred.move();
}
alfred.pickCoin();
alfred.turnLeft();
kasper.turnLeft();
if (runToSubtask == 8) return; // DO NOT TOUCH!
// TODO: H0.7.3 - Put with reversed for-loop
for (int i = alfred.getNumberOfCoins(); i > 0; i--) {
alfred.putCoin();
alfred.move();
}
alfred.turnLeft();
}
public static void setupWorld() {
// variable representing width/size of world
final int worldSize = 4;
// setting world size symmetrical, meaning height = width
World.setSize(worldSize, worldSize);
// speed of how fast the world gets refreshed (e.g. how fast the robot(s) act)
// the lower the number, the faster the refresh
World.setDelay(delay);
// make it possible to see the world window
World.setVisible(true);
}
}