Ziel
Ziel des Beispielbots ist es, zum Kunden zu laufen und eine Bestellung aufzunehmen.
Also als erstes müssen wir zu einem customer ActionPoint laufen.
Danach müssen wir diesen ActionPoint nutzen bis wir eine Bestellung aufgenommen haben.
import com.apogames.kitchenchef.ai.Cooking; import com.apogames.kitchenchef.ai.KitchenInformation; import com.apogames.kitchenchef.ai.KitchenPlayerAI; import com.apogames.kitchenchef.ai.Student; import com.apogames.kitchenchef.ai.action.Action; import com.apogames.kitchenchef.ai.actionPoints.ActionPoint; import com.apogames.kitchenchef.ai.player.Player; import com.apogames.kitchenchef.game.enums.KitchenActionPointEnum; import com.apogames.kitchenchef.game.pathfinding.PathResult; import java.util.List; @Student(author = "Dirk Aporius", matrikelnummer = 815) public class GoToCustomer extends KitchenPlayerAI { private KitchenInformation information; @Override public String getName() { return "GoToCustomer"; } @Override public void update(KitchenInformation information, List<Player> players) { this.information = information; // betrachte nur den ersten Spieler Player player = players.get(0); Cooking cooking = player.getCooking(); if (cooking == null) { this.go(player, KitchenActionPointEnum.CUSTOMER); } else { if (cooking.getStatus() == CookingStatus.NEEDED_DISH) { this.go(player, KitchenActionPointEnum.DISH_TAKING); } else { // mache gar nichts und stehe nur rum, hier könnte dann unterschieden werden, welchen status das Cooking hat etc player.setAction(Action.idle()); } } } // Hilfsmethode, um einen bestimmten ActionPoint zu finden private void go(Player player, KitchenActionPointEnum actionPointEnum) { for (ActionPoint point : information.getActionPoints()) { if (point.getContent() == actionPointEnum) { // wenn der Spieler auf dem ActionPoint steht, dann benutze ihn einfach if (point.isPlayerIn(player)) { player.setAction(Action.use()); } else { // hole den kürztesten Weg zwischen dem player und dem ActionPoint PathResult wayFromTo = information.getWays().findWayFromTo(information, player, point.getPosition()); // setzte als Action -> bewege dich mit dem Vektor aus der Wegfindung player.setAction(Action.move(wayFromTo.getMovement())); } return; } } } }