Niki betritt jedes Feld

zurück

Niki soll systematisch jedes Feld genau einmal betreten, um dort jeweils irgendwelche Arbeiten zu erledigen. Wir entscheiden uns für einen solchen Weg:

Zur Lösung dieser Aufgabe konstruieren wir ein verbessertes Robotermodell (Klasse Roboter3), das zusätzlich über die Methoden "rechtsKurve", "linksKurve", "rechtsFrei", "linksFrei" verfügt. Unter Benutzung dieser Klasse sieht das Programm "meinProgramm.java" nun so aus:


import niki.Welt;
import niki.Niki;

public class meinProgramm{
    public static void main(String[] args){
        Welt meineWelt = new Welt("unbekannte.welt");
        Roboter3 meinRoboter = new Roboter3(meineWelt);
	do{
		meinRoboter.vorZurWand();
		if (meinRoboter.rechtsFrei()){
			meinRoboter.rechtsKurve();
			meinRoboter.vorZurWand();
		}
		if (meinRoboter.linksFrei()){
			meinRoboter.linksKurve();
		}
    	} while (meinRoboter.linksFrei() && meinRoboter.rechtsFrei());
    meinRoboter.vorZurWand();
    }
}

In einer dritten Quelltextdatei (Roboter3.java) wird ein weiter verbesserter Roboter programmiert, der den Roboter Roboter2 beerbt.


import niki.Welt;
import niki.Niki;

public class Roboter3 extends Roboter2{
	public Roboter3(Welt welt){
		super(welt);
	}
	public boolean rechtsFrei(){
		rechts();
		if (vorneFrei()){
			links();
			return true;
		}else{
			links();
			return false;
		}
	}
	public void rechtsKurve(){
		rechts();
		vor();
		rechts();
	}
	public boolean linksFrei(){
		links();
		if (vorneFrei()){
			rechts();
			return true;
		}else{
			rechts();
			return false;
		}
	}
	public void linksKurve(){
		links();
		vor();
		links();
	}
}

zurück

Version 0.9, 27.04.2004
Dr. Bernd Kokavecz