yesyo
No notes
Syntax:
Java
abstract class Mitarbeiter extends Robot{ abstract void arbeite(); abstract int benoetigteBeeper(); Mitarbeiter(){ super(1,1,0,East); } void dreheNach(direction d){ while (d != super.direction()) { super.turnLeft(); } } void geheZu(int s, int a){ if ( a > super.avenue() ) dreheNach(East); else if ( a < super.avenue() ) dreheNach(West); while (a != super.avenue() ) { super.move(); } if ( super.street() < s ) dreheNach(North); else if ( super.street() > s ) dreheNach(South); while ( s != super.street() ) { super.move(); } } void geheZuLager(){ geheZu(3,1); } void holeBeeper(){ geheZuLager(); int benoetigteBeeper = benoetigteBeeper(); while(benoetigteBeeper != 0){ super.pickBeeper(); benoetigteBeeper-- ; } } void legeBeeper(int n){ loop(n){ super.putBeeper(); super.move(); } } void feierAbend(){ geheZu(1,1); super.turnOff(); } }//Ende Aufgabe 1 class Maurer extends Mitarbeiter { int laengeM ; int beginnS ; int beginnA; direction richtung; Maurer(int street, int avenue, direction dir, int laenge){ super(); laengeM = laenge; beginnS= street ; beginnA= avenue; richtung = dir ; } void arbeite(){ //geheZuLager(); //holeBeeper(); geheZu(beginnS, beginnA); dreheNach(richtung); legeBeeper(laengeM); } int benoetigteBeeper(){ return laengeM; } } //Ende 2 Aufgabe class Tuermacher extends Mitarbeiter { int hoeheT ; int breiteT ; Tuermacher(int hoehe, int breite){ super(); hoeheT = hoehe ; breiteT = breite ; } void arbeite(){ dreheNach(North); move(); legeBeeper(hoeheT); dreheNach(East); legeBeeper(breiteT); dreheNach(North); legeBeeper(hoeheT); } int benoetigteBeeper(){ return (breiteT+2*hoeheT); } }//Ende Aufgabe 3 class Fenstermacher extends Mitarbeiter { int breiteF ; int breiteH; Fenstermacher(int breite, int breiteHaus){ super(); breiteF=breite ; breiteH=breiteHaus; } void turnRight(){ loop(3){ turnLeft(); } } int korrekturfaktor = 2; void arbeite(){ int anzahlDerFenster=(breiteH/breiteF); while(anzahlDerFenster!=0){ geheZu(breiteF,korrekturfaktor); dreheNach(North); loop(4){ legeBeeper(breiteF); turnRight(); } anzahlDerFenster--; korrekturfaktor=2+korrekturfaktor+breiteF; turnRight(); } } int benoetigteBeeper(){ int anzahlDerFenster=(breiteH/breiteF); return(anzahlDerFenster*(2*(breiteF+breiteF))); } }//Ende Aufgabe 4 class Dachdecker extends Mitarbeiter { int beginnSD; int beginnAD; int breiteH; //Breite Haus Dachdecker(int street, int avenue, int breite){ super(); beginnSD=street; beginnAD=avenue; breiteH=breite; } void arbeite(){ geheZuLager(); holeBeeper(); geheZu(beginnSD,beginnAD); legeBeeper(breiteH); feierAbend(); } int benoetigteBeeper(){ return 2*breiteH; } void turnRight(){ loop(3){ super.turnLeft(); } } void legeBeeper(int n){ while (direction() !=North){ super.turnLeft(); } loop(n){ move(); putBeeper(); turnRight(); super.move(); super.turnLeft(); } while (direction() !=South){ super.turnLeft(); } loop(n){ putBeeper(); move(); turnLeft(); move(); turnRight(); } } }//Ende Aufgabe 5 class Zimmermann extends Mitarbeiter{ int hoeheStockwerk; int breiteStockwerk; int tuerHoehe; int tuerBreite; int fensterBreite; int festerHöhe; boolean vorhanden ; int beginnZS; int beginnZA; int fensterHoehe; Mitarbeiter tuerroboter; Mitarbeiter fensterRoboterMitte; Mitarbeiter fensterRoboterLinks; Mitarbeiter fensterRoboterRechts; Zimmermann(int street, int avenue, int hoehe, int breite,boolean tuer){ super(); int beginnZS=street; int beginnZA=avenue; hoeheStockwerk=hoehe ; breiteStockwerk=breite; tuerHoehe= hoehe-2; if((tuerHoehe/2) < 3)tuerBreite=3; else tuerBreite =(tuerHoehe/2); fensterBreite=tuerBreite; vorhanden=tuer; fensterHoehe=(1/2)*hoeheStockwerk; if (tuer = true) { tuerroboter= new Tuermacher(tuerHoehe, tuerBreite); fensterRoboterLinks = new Fenstermacher(fensterBreite,breiteStockwerk); fensterRoboterRechts = new Fenstermacher(fensterBreite,breiteStockwerk); } else { fensterRoboterLinks = new Fenstermacher(fensterBreite,breiteStockwerk); fensterRoboterMitte = new Fenstermacher(fensterBreite,breiteStockwerk); fensterRoboterRechts = new Fenstermacher(fensterBreite,breiteStockwerk); } } int anzahlSeitenFenster(){ if(vorhanden = true)return 2 ; else return 3; } void arbeite(){ if (vorhanden = true) { tuerroboter.geheZu(beginnZS,(breiteStockwerk-tuerBreite)/2); fensterRoboterLinks.geheZu((1/2)*hoeheStockwerk,(beginnZA+1)); fensterRoboterRechts.geheZu((1/2)*hoeheStockwerk,((breiteStockwerk/2)+tuerBreite+1)); tuerroboter.arbeite(); fensterRoboterLinks.arbeite(); fensterRoboterRechts.arbeite(); } else{ fensterRoboterLinks.geheZu(beginnZS+hoeheStockwerk,beginnZA+1); fensterRoboterRechts.geheZu(beginnZS+hoeheStockwerk,(breiteStockwerk/2)+tuerBreite+1); fensterRoboterMitte.geheZu(beginnZS+hoeheStockwerk,(breiteStockwerk/2)); fensterRoboterLinks.arbeite(); fensterRoboterRechts.arbeite(); fensterRoboterMitte.arbeite(); } } void holeBeeper(){ if (vorhanden= true) { tuerroboter.holeBeeper(); fensterRoboterLinks.holeBeeper(); fensterRoboterRechts.holeBeeper(); } else{ fensterRoboterLinks.holeBeeper(); fensterRoboterRechts.holeBeeper(); fensterRoboterMitte.holeBeeper(); } } int benoetigteBeeper(){ if (vorhanden = true){ return (tuerroboter.benoetigteBeeper()+fensterRoboterLinks.benoetigteBeeper()+fensterRoboterRechts.benoetigteBeeper()); } else { return (fensterRoboterLinks.benoetigteBeeper()+fensterRoboterRechts.benoetigteBeeper()+fensterRoboterMitte.benoetigteBeeper()); } } void feierAbend(){ if (vorhanden = true) { tuerroboter.feierAbend(); fensterRoboterLinks.feierAbend(); fensterRoboterRechts.feierAbend(); } else{ fensterRoboterLinks.feierAbend(); fensterRoboterRechts.feierAbend(); fensterRoboterMitte.feierAbend(); } } }//Ende Aufgabe 6 class Bauunternehmer extends Mitarbeiter{ Mitarbeiter[] arbeiter; Bauunternehmer(Mitarbeiter[] m){ arbeiter=m; } int benoetigteBeeper(){ int gesamtzahlDerBeeper=0; for(int i=0 ; i<arbeiter.length ; i++){ gesamtzahlDerBeeper = gesamtzahlDerBeeper+arbeiter[i].benoetigteBeeper(); System.out.println(gesamtzahlDerBeeper); } System.out.println(gesamtzahlDerBeeper); return gesamtzahlDerBeeper; } void holeBeeper(){ World.placeBeepers(3,1, benoetigteBeeper()); } void arbeite(){ int gesamtzahlDerBeeper=0; for(int i =0 ; i < arbeiter.length; i++) { arbeiter[i].geheZuLager(); arbeiter[i].holeBeeper(); arbeiter[i].arbeite(); } } void feierAbend(){ int gesamtzahlDerBeeper=0; for(int i=0 ; i<arbeiter.length; i++) { arbeiter[i].feierAbend(); } } }//Ende Aufgabe 7 class Architekt extends Mitarbeiter{ int stockwerke; int breiteHaus; int hoeheHaus; int beginnSH; int beginnAH; Architekt(int street, int avenue, int hoehe, int breite, int stock){ super(); stockwerke=stock; breiteHaus=breite; hoeheHaus=hoehe; beginnSH=street; beginnAH=avenue; } int benoetigteBeeper(){ return 0; } Mitarbeiter [] arbeiter ; void arbeite(){ int anzahlderarbeiter; anzahlderarbeiter = (2+4*stockwerke); arbeiter = new Mitarbeiter[anzahlderarbeiter]; arbeiter[0]=new Maurer(beginnSH,beginnAH,East,breiteHaus); arbeiter[anzahlderarbeiter-1]=new Dachdecker(hoeheHaus,1,breiteHaus); for(int i=0; i < stockwerke ;i++){ if(i==0){ arbeiter[1]=new Maurer(beginnSH+1,beginnAH,North,hoeheHaus); arbeiter[2]=new Maurer(beginnSH+hoeheHaus+1,beginnAH+1,East,breiteHaus); arbeiter[3]=new Maurer(beginnSH+hoeheHaus,beginnAH+breiteHaus+1,South,hoeheHaus); arbeiter[4]=new Zimmermann(beginnSH,beginnAH,hoeheHaus,breiteHaus,true); } else{ arbeiter[4*i+1]=new Maurer(beginnSH+1,beginnAH,North,hoeheHaus); arbeiter[4*i+2]=new Maurer(beginnSH+hoeheHaus+1,beginnAH+1,East,breiteHaus); arbeiter[4*i+3]=new Maurer(beginnSH+hoeheHaus,beginnAH+breiteHaus+1,South,hoeheHaus); arbeiter[4*i+4]=new Zimmermann(beginnSH,beginnAH,hoeheHaus,breiteHaus,false); } } } Mitarbeiter[] arbeitsteam(){ return arbeiter; } }//Ende Aufgabe 8 task{ Architekt a = new Architekt(3,4,10,26,2); a.arbeite(); Bauunternehmer b = new Bauunternehmer(a.arbeitsteam()); b.holeBeeper(); b.arbeite(); b.feierAbend(); }