Im Folgenden wollen wir einen Agenten erstellen, der solange geradeaus läuft, bis er auf etwas Essbares stösst. Diese soll er dann zu sich nehmen.
Dazu müssen wir wissen, wie die beiden Aktionen Essen und Laufen funktionieren, und wie man überprüft, auf welcher Art von Feld ein Agent sich gerade befindet.
/** * lässt den agenten solange geradeaus laufen, bis er auf nahrung stösst * diese wird dann gegessen * danach wird nur noch geschlafen */ public Aktion makeItSo(Feld[][] felder, double energie) { Aktion aktion; Vektor vektor; // vektor, der nach oben zeigt, einen agenten also nach oben laufen lässt vektor = new Vektor(); vektor.x = 0; // 0 bewegung in x richtung vektor.y = -1; // einen schritt nach oben Feld position = felder[1][1]; // feld, auf dem agent steht boolean gegessen = false; // hat agent bereits gegessen? // auf welcher art von feld steht agent? if (position instanceof FeldMitNahrung) { // nahrungsfeld :-) aktion = new Essen(1); // alles essen, was vorhanden ist gegessen = true; // agent hat gegessen } else if (!gegessen) { // agent hat noch nichts gegessen, also weiterlaufen aktion = new Laufen(vec); } else { // agent hat gegessen, also mittagsschlaf aktion = new Schlafen(); } return aktion; }
Wenn der Agent sich von Anfang an auf einem Nahrungsfeld befindet, wird er natürlich gar nicht erst loslaufen.