yesyo

by anonymous on December 25th, 2008

No notes

Syntax: Java
Show lines - Hide lines - Show in textbox - Download
  1. abstract class Mitarbeiter extends Robot{
  2.  
  3. abstract void arbeite();
  4.  
  5. abstract int benoetigteBeeper();
  6.  
  7. Mitarbeiter(){
  8. super(1,1,0,East);
  9. }
  10.  
  11. void dreheNach(direction d){
  12. while (d != super.direction())
  13. {
  14. super.turnLeft();
  15. }
  16. }
  17.  
  18. void geheZu(int s, int a){
  19. if ( a > super.avenue() )
  20. dreheNach(East);
  21. else if ( a < super.avenue() )
  22. dreheNach(West);
  23.  
  24. while (a != super.avenue() )
  25. {
  26. super.move();
  27. }
  28.  
  29. if ( super.street() < s )
  30. dreheNach(North);
  31. else if ( super.street() > s )
  32. dreheNach(South);
  33.  
  34. while ( s != super.street() )
  35. {
  36. super.move();
  37. }
  38. }
  39. void geheZuLager(){
  40. geheZu(3,1);
  41. }
  42. void holeBeeper(){
  43. geheZuLager();
  44.  
  45. int benoetigteBeeper = benoetigteBeeper();
  46. while(benoetigteBeeper != 0){
  47. super.pickBeeper();
  48. benoetigteBeeper-- ;
  49. }
  50. }
  51. void legeBeeper(int n){
  52. loop(n){
  53. super.putBeeper();
  54. super.move();
  55. }
  56. }
  57.  
  58. void feierAbend(){
  59. geheZu(1,1);
  60. super.turnOff();
  61. }
  62.  
  63. }//Ende Aufgabe 1
  64.  
  65. class Maurer extends Mitarbeiter {
  66.  
  67. int laengeM ;
  68. int beginnS ;
  69. int beginnA;
  70. direction richtung;
  71.  
  72. Maurer(int street, int avenue, direction dir, int laenge){
  73. super();
  74. laengeM = laenge;
  75. beginnS= street ;
  76. beginnA= avenue;
  77. richtung = dir ;
  78.  
  79. }
  80. void arbeite(){
  81. //geheZuLager();
  82. //holeBeeper();
  83. geheZu(beginnS, beginnA);
  84. dreheNach(richtung);
  85. legeBeeper(laengeM);
  86. }
  87.  
  88. int benoetigteBeeper(){
  89. return laengeM;
  90. }
  91. } //Ende 2 Aufgabe
  92.  
  93. class Tuermacher extends Mitarbeiter {
  94.  
  95. int hoeheT ;
  96. int breiteT ;
  97.  
  98. Tuermacher(int hoehe, int breite){
  99. super();
  100. hoeheT = hoehe ;
  101. breiteT = breite ;
  102. }
  103.  
  104. void arbeite(){
  105.  
  106. dreheNach(North);
  107. move();
  108. legeBeeper(hoeheT);
  109. dreheNach(East);
  110. legeBeeper(breiteT);
  111. dreheNach(North);
  112. legeBeeper(hoeheT);
  113.  
  114. }
  115.  
  116. int benoetigteBeeper(){
  117. return (breiteT+2*hoeheT);
  118. }
  119.  
  120. }//Ende Aufgabe 3
  121.  
  122. class Fenstermacher extends Mitarbeiter {
  123.  
  124. int breiteF ;
  125. int breiteH;
  126.  
  127. Fenstermacher(int breite, int breiteHaus){
  128. super();
  129. breiteF=breite ;
  130. breiteH=breiteHaus;
  131.  
  132. }
  133.  
  134. void turnRight(){
  135. loop(3){
  136. turnLeft();
  137. }
  138. }
  139. int korrekturfaktor = 2;
  140.  
  141. void arbeite(){
  142.  
  143. int anzahlDerFenster=(breiteH/breiteF);
  144. while(anzahlDerFenster!=0){
  145.  
  146. geheZu(breiteF,korrekturfaktor);
  147. dreheNach(North);
  148. loop(4){
  149. legeBeeper(breiteF);
  150. turnRight();
  151. }
  152.  
  153. anzahlDerFenster--;
  154. korrekturfaktor=2+korrekturfaktor+breiteF;
  155. turnRight();
  156. }
  157.  
  158. }
  159.  
  160. int benoetigteBeeper(){
  161.  
  162. int anzahlDerFenster=(breiteH/breiteF);
  163. return(anzahlDerFenster*(2*(breiteF+breiteF)));
  164. }
  165.  
  166. }//Ende Aufgabe 4
  167.  
  168. class Dachdecker extends Mitarbeiter {
  169. int beginnSD;
  170. int beginnAD;
  171. int breiteH; //Breite Haus
  172.  
  173. Dachdecker(int street, int avenue, int breite){
  174. super();
  175. beginnSD=street;
  176. beginnAD=avenue;
  177. breiteH=breite;
  178. }
  179.  
  180. void arbeite(){
  181. geheZuLager();
  182. holeBeeper();
  183. geheZu(beginnSD,beginnAD);
  184. legeBeeper(breiteH);
  185. feierAbend();
  186. }
  187.  
  188. int benoetigteBeeper(){
  189. return 2*breiteH;
  190. }
  191.  
  192. void turnRight(){
  193. loop(3){
  194. super.turnLeft();
  195. }
  196. }
  197. void legeBeeper(int n){
  198. while (direction() !=North){
  199. super.turnLeft();
  200. }
  201. loop(n){
  202. move();
  203. putBeeper();
  204. turnRight();
  205. super.move();
  206. super.turnLeft();
  207. }
  208. while (direction() !=South){
  209. super.turnLeft();
  210. }
  211.  
  212. loop(n){
  213. putBeeper();
  214. move();
  215. turnLeft();
  216. move();
  217. turnRight();
  218. }
  219. }
  220. }//Ende Aufgabe 5
  221.  
  222. class Zimmermann extends Mitarbeiter{
  223. int hoeheStockwerk;
  224. int breiteStockwerk;
  225. int tuerHoehe;
  226. int tuerBreite;
  227. int fensterBreite;
  228. int festerHöhe;
  229. boolean vorhanden ;
  230. int beginnZS;
  231. int beginnZA;
  232. int fensterHoehe;
  233. Mitarbeiter tuerroboter;
  234. Mitarbeiter fensterRoboterMitte;
  235. Mitarbeiter fensterRoboterLinks;
  236. Mitarbeiter fensterRoboterRechts;
  237.  
  238. Zimmermann(int street, int avenue, int hoehe, int breite,boolean tuer){
  239. super();
  240. int beginnZS=street;
  241. int beginnZA=avenue;
  242. hoeheStockwerk=hoehe ;
  243. breiteStockwerk=breite;
  244. tuerHoehe= hoehe-2;
  245. if((tuerHoehe/2) < 3)tuerBreite=3;
  246. else tuerBreite =(tuerHoehe/2);
  247. fensterBreite=tuerBreite;
  248. vorhanden=tuer;
  249. fensterHoehe=(1/2)*hoeheStockwerk;
  250.  
  251. if (tuer = true)
  252. {
  253. tuerroboter= new Tuermacher(tuerHoehe, tuerBreite);
  254. fensterRoboterLinks = new Fenstermacher(fensterBreite,breiteStockwerk);
  255. fensterRoboterRechts = new Fenstermacher(fensterBreite,breiteStockwerk);
  256. }
  257. else {
  258. fensterRoboterLinks = new Fenstermacher(fensterBreite,breiteStockwerk);
  259. fensterRoboterMitte = new Fenstermacher(fensterBreite,breiteStockwerk);
  260. fensterRoboterRechts = new Fenstermacher(fensterBreite,breiteStockwerk);
  261. }
  262. }
  263.  
  264. int anzahlSeitenFenster(){
  265.  
  266. if(vorhanden = true)return 2 ;
  267. else return 3;
  268. }
  269.  
  270. void arbeite(){
  271.  
  272. if (vorhanden = true)
  273. {
  274. tuerroboter.geheZu(beginnZS,(breiteStockwerk-tuerBreite)/2);
  275. fensterRoboterLinks.geheZu((1/2)*hoeheStockwerk,(beginnZA+1));
  276. fensterRoboterRechts.geheZu((1/2)*hoeheStockwerk,((breiteStockwerk/2)+tuerBreite+1));
  277. tuerroboter.arbeite();
  278. fensterRoboterLinks.arbeite();
  279. fensterRoboterRechts.arbeite();
  280. }
  281. else{
  282. fensterRoboterLinks.geheZu(beginnZS+hoeheStockwerk,beginnZA+1);
  283. fensterRoboterRechts.geheZu(beginnZS+hoeheStockwerk,(breiteStockwerk/2)+tuerBreite+1);
  284. fensterRoboterMitte.geheZu(beginnZS+hoeheStockwerk,(breiteStockwerk/2));
  285. fensterRoboterLinks.arbeite();
  286. fensterRoboterRechts.arbeite();
  287. fensterRoboterMitte.arbeite();
  288. }
  289. }
  290.  
  291. void holeBeeper(){
  292. if (vorhanden= true)
  293. {
  294. tuerroboter.holeBeeper();
  295. fensterRoboterLinks.holeBeeper();
  296. fensterRoboterRechts.holeBeeper();
  297. }
  298. else{
  299. fensterRoboterLinks.holeBeeper();
  300. fensterRoboterRechts.holeBeeper();
  301. fensterRoboterMitte.holeBeeper();
  302. }
  303. }
  304. int benoetigteBeeper(){
  305. if (vorhanden = true){
  306. return (tuerroboter.benoetigteBeeper()+fensterRoboterLinks.benoetigteBeeper()+fensterRoboterRechts.benoetigteBeeper());
  307. }
  308. else {
  309. return (fensterRoboterLinks.benoetigteBeeper()+fensterRoboterRechts.benoetigteBeeper()+fensterRoboterMitte.benoetigteBeeper());
  310. }
  311. }
  312.  
  313. void feierAbend(){
  314. if (vorhanden = true)
  315. {
  316. tuerroboter.feierAbend();
  317. fensterRoboterLinks.feierAbend();
  318. fensterRoboterRechts.feierAbend();
  319. }
  320. else{
  321. fensterRoboterLinks.feierAbend();
  322. fensterRoboterRechts.feierAbend();
  323. fensterRoboterMitte.feierAbend();
  324.  
  325. }
  326. }
  327. }//Ende Aufgabe 6
  328.  
  329. class Bauunternehmer extends Mitarbeiter{
  330. Mitarbeiter[] arbeiter;
  331. Bauunternehmer(Mitarbeiter[] m){
  332. arbeiter=m;
  333. }
  334. int benoetigteBeeper(){
  335. int gesamtzahlDerBeeper=0;
  336. for(int i=0 ; i<arbeiter.length ; i++){
  337. gesamtzahlDerBeeper = gesamtzahlDerBeeper+arbeiter[i].benoetigteBeeper();
  338. System.out.println(gesamtzahlDerBeeper);
  339. }
  340. System.out.println(gesamtzahlDerBeeper);
  341. return gesamtzahlDerBeeper;
  342. }
  343.  
  344. void holeBeeper(){
  345. World.placeBeepers(3,1, benoetigteBeeper());
  346. }
  347.  
  348. void arbeite(){
  349. int gesamtzahlDerBeeper=0;
  350. for(int i =0 ; i < arbeiter.length; i++)
  351. {
  352. arbeiter[i].geheZuLager();
  353. arbeiter[i].holeBeeper();
  354. arbeiter[i].arbeite();
  355. }
  356. }
  357.  
  358. void feierAbend(){
  359. int gesamtzahlDerBeeper=0;
  360. for(int i=0 ; i<arbeiter.length; i++)
  361. {
  362. arbeiter[i].feierAbend();
  363. }
  364. }
  365.  
  366. }//Ende Aufgabe 7
  367.  
  368. class Architekt extends Mitarbeiter{
  369. int stockwerke;
  370. int breiteHaus;
  371. int hoeheHaus;
  372. int beginnSH;
  373. int beginnAH;
  374.  
  375. Architekt(int street, int avenue, int hoehe, int breite, int stock){
  376. super();
  377. stockwerke=stock;
  378. breiteHaus=breite;
  379. hoeheHaus=hoehe;
  380. beginnSH=street;
  381. beginnAH=avenue;
  382. }
  383.  
  384. int benoetigteBeeper(){
  385. return 0;
  386. }
  387.  
  388. Mitarbeiter [] arbeiter ;
  389.  
  390. void arbeite(){
  391. int anzahlderarbeiter;
  392. anzahlderarbeiter = (2+4*stockwerke);
  393. arbeiter = new Mitarbeiter[anzahlderarbeiter];
  394. arbeiter[0]=new Maurer(beginnSH,beginnAH,East,breiteHaus);
  395. arbeiter[anzahlderarbeiter-1]=new Dachdecker(hoeheHaus,1,breiteHaus);
  396. for(int i=0; i < stockwerke ;i++){
  397. if(i==0){
  398. arbeiter[1]=new Maurer(beginnSH+1,beginnAH,North,hoeheHaus);
  399. arbeiter[2]=new Maurer(beginnSH+hoeheHaus+1,beginnAH+1,East,breiteHaus);
  400. arbeiter[3]=new Maurer(beginnSH+hoeheHaus,beginnAH+breiteHaus+1,South,hoeheHaus);
  401. arbeiter[4]=new Zimmermann(beginnSH,beginnAH,hoeheHaus,breiteHaus,true);
  402. }
  403. else{
  404. arbeiter[4*i+1]=new Maurer(beginnSH+1,beginnAH,North,hoeheHaus);
  405. arbeiter[4*i+2]=new Maurer(beginnSH+hoeheHaus+1,beginnAH+1,East,breiteHaus);
  406. arbeiter[4*i+3]=new Maurer(beginnSH+hoeheHaus,beginnAH+breiteHaus+1,South,hoeheHaus);
  407. arbeiter[4*i+4]=new Zimmermann(beginnSH,beginnAH,hoeheHaus,breiteHaus,false);
  408. }
  409. }
  410. }
  411.  
  412. Mitarbeiter[] arbeitsteam(){
  413. return arbeiter;
  414.  
  415. }
  416.  
  417. }//Ende Aufgabe 8
  418. task{
  419. Architekt a = new Architekt(3,4,10,26,2);
  420. a.arbeite();
  421. Bauunternehmer b = new Bauunternehmer(a.arbeitsteam());
  422. b.holeBeeper();
  423. b.arbeite();
  424. b.feierAbend();
  425.  
  426.  
  427. }

Leave a Reply

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

Subscribe to this comment feed via RSS