yesyo

by anonymous on December 25th, 2008

No notes

Syntax: Java
Show lines - Hide lines - Show in textbox - Download
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();
 
 
}

Leave a Reply

Note: XHTML is allowed. Your email address will never be published.

Subscribe to this comment feed via RSS