Bluej Sum Häuser Farben ändern

This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

  • Bluej Sum Häuser Farben ändern

    Hallo :)

    Im Informatik-Unterricht in der Schule haben wir mehrere Aufgaben aufbekommen.
    Wir lernen Java mit der Stift und Mäuse Bibiliothek.
    Komme damit jedoch nicht zurecht. Ich denke ich werde euch da noch öfters mit ärgern. :D

    Okay jetzt zu meiner Frage :
    Wir sollen 3 Häuser zeichnen und diese sollen per Tastendruck die Zeichenfarbe ändern. Jedoch tun sie es bei mir nicht. Es wird jedoch auch kein Fehler angezeigt..
    Wäre lieb, wenn ihr mal drüber schauen könntet.
    Danke !
    LG

    Source Code

    1. import sum.kern.*;
    2. public class Haus4
    3. {
    4. /* Objekte */
    5. Bildschirm mB;
    6. Buntstift s;
    7. Maus m;
    8. Tastatur t;
    9. public void fuehreAus ()
    10. {
    11. /* Konstruktor */
    12. mB=new Bildschirm (350, 400);
    13. s=new Buntstift ();
    14. m=new Maus ();
    15. t=new Tastatur ();
    16. if (t.wurdeGedrueckt ())
    17. {
    18. switch (t.zeichen ())
    19. {
    20. case 'r': case 'R': s.setzeFarbe(Farbe.ROT); break;
    21. case 'b': case 'B': s.setzeFarbe(Farbe.BLAU); break;
    22. case 'g': case 'G': s.setzeFarbe(Farbe.GRUEN); break;
    23. default: s.setzeFarbe(Farbe.SCHWARZ); break;
    24. }
    25. t.weiter ();
    26. }
    27. /* Aktion */
    28. //Haus1
    29. //Hausgrundriss
    30. s.bewegeBis (1, 150);
    31. s.zeichneRechteck (100, 100);
    32. //Dach
    33. s.bewegeBis (1,150);
    34. s.runter ();
    35. s.dreheBis (45);
    36. s.bewegeUm (70);
    37. s.dreheBis (-45);
    38. s.bewegeUm (70);
    39. //Fenster 1
    40. s.hoch ();
    41. s.bewegeBis (11, 160);
    42. s.runter ();
    43. s.zeichneRechteck (20, 20);
    44. //Fenster2
    45. s.hoch ();
    46. s.bewegeBis (41, 160);
    47. s.runter ();
    48. s.zeichneRechteck (20, 20);
    49. //Fenster3
    50. s.hoch ();
    51. s.bewegeBis (71, 160);
    52. s.runter ();
    53. s.zeichneRechteck (20, 20);
    54. //Fenster4
    55. s.hoch ();
    56. s.bewegeBis (11, 200);
    57. s.runter ();
    58. s.zeichneRechteck (20, 20);
    59. //Tür
    60. s.hoch ();
    61. s.bewegeBis (41, 200);
    62. s.runter ();
    63. s.zeichneRechteck (20, 50);
    64. //Fenster5
    65. s.hoch ();
    66. s.bewegeBis (71, 200);
    67. s.zeichneRechteck (20, 20);
    68. //Haus2
    69. //Hausgrundriss
    70. s.bewegeBis (110, 150);
    71. s.zeichneRechteck (100, 100);
    72. //Dach
    73. s.bewegeBis (110,150);
    74. s.runter ();
    75. s.dreheBis (45);
    76. s.bewegeUm (70);
    77. s.dreheBis (-45);
    78. s.bewegeUm (70);
    79. //Fenster 1
    80. s.hoch ();
    81. s.bewegeBis (121, 160);
    82. s.runter ();
    83. s.zeichneRechteck (20, 20);
    84. //Fenster2
    85. s.hoch ();
    86. s.bewegeBis (151, 160);
    87. s.runter ();
    88. s.zeichneRechteck (20, 20);
    89. //Fenster3
    90. s.hoch ();
    91. s.bewegeBis (181, 160);
    92. s.runter ();
    93. s.zeichneRechteck (20, 20);
    94. //Fenster4
    95. s.hoch ();
    96. s.bewegeBis (121, 200);
    97. s.runter ();
    98. s.zeichneRechteck (20, 20);
    99. //Tür
    100. s.hoch ();
    101. s.bewegeBis (151, 200);
    102. s.runter ();
    103. s.zeichneRechteck (20, 50);
    104. //Fenster5
    105. s.hoch ();
    106. s.bewegeBis (181, 200);
    107. s.zeichneRechteck (20, 20);
    108. //Haus3
    109. //Hausgrundriss
    110. s.bewegeBis (220, 150);
    111. s.zeichneRechteck (100, 100);
    112. //Dach
    113. s.bewegeBis (220,150);
    114. s.runter ();
    115. s.dreheBis (45);
    116. s.bewegeUm (70);
    117. s.dreheBis (-45);
    118. s.bewegeUm (70);
    119. //Fenster 1
    120. s.hoch ();
    121. s.bewegeBis (231, 160);
    122. s.runter ();
    123. s.zeichneRechteck (20, 20);
    124. //Fenster2
    125. s.hoch ();
    126. s.bewegeBis (261, 160);
    127. s.runter ();
    128. s.zeichneRechteck (20, 20);
    129. //Fenster3
    130. s.hoch ();
    131. s.bewegeBis (291, 160);
    132. s.runter ();
    133. s.zeichneRechteck (20, 20);
    134. //Fenster4
    135. s.hoch ();
    136. s.bewegeBis (231, 200);
    137. s.runter ();
    138. s.zeichneRechteck (20, 20);
    139. //Tür
    140. s.hoch ();
    141. s.bewegeBis (261, 200);
    142. s.runter ();
    143. s.zeichneRechteck (20, 50);
    144. //Fenster5
    145. s.hoch ();
    146. s.bewegeBis (291, 200);
    147. s.zeichneRechteck (20, 20);
    148. //Bezeichnung
    149. s.hoch ();
    150. s.bewegeBis (2, 399);
    151. s.runter ();
    152. s.schreibeText ("Haus2");
    153. /* Abbau */
    154. s.gibFrei ();
    155. mB.gibFrei ();
    156. m.gibFrei ();
    157. }
    158. }
    Display All
  • Hi, ich bin auch neu hier und nicht so gut, hoffe aber helfen zu können. Bei den Lösungsmöglichkeiten weiß ich leider net ob sie so wirklich laufen, ist aber die beste Lösung die mir einfällt, musst du dann ausprobieren.
    Allerdings, wenn ich den code ausführe, werden sofort die Häuser gemalt ((in schwarz)ohne auf eine eingabe zu warten). Da kannst du vielleicht wenn du auf eine eingabe wartest was ändern (wie genau kann ich dir leider net sagen).
    Dazu ist die Methode, nachdem du "Haus2" geschrieben hast beendet, also wird in deinem code, sobald du anfängst die häuser zu zeichnen nicht mehr auf eine eingabe geachtet (und danach eben auch nicht).
    Das die Häuser nachdem Zeichnen nicht mehr die Farbe ändern könntest du lösen, indem du am ende eine Schleife einfügst, die checkt ob eine eingabe gemacht wurde, die Häuser löscht und in der Farbe neu zeichnet.
    Z.B:

    Source Code

    1. for (int i = 2;i > 1;)
    2. {
    3. if (/*Taste gedrückt*/)
    4. {
    5. // lösche Häuser
    6. /*Zeichne Häuser in der Farbe neu*/
    7. }
    8. else
    9. [
    10. // bisschen warten
    11. ]
    12. }
    Display All

    Die Schleife hier läuft theoretisch endlos. Ich weiß allerdings nicht genau, wie man den tastendruck registriert. und verwendet.

    und noch ein kleiner Tipp am Rande:
    Du kannst, statt den code für das Haus 3 mal zu schreiben, ihn in eine Methode schreiben und dann die Methode 3mal aufrufen. Das macht den code übersichtlicher und es wird einfacher fehler usw. zu finden.
    Also praktisch:

    Source Code

    1. public void zeichneHaus()
    2. {
    3. //Quellkot für das Haus
    4. }
    5. public void fuehreAus()
    6. {
    7. //stift bewegen
    8. zeichneHaus();
    9. //stift bewegen
    10. zeichneHaus();
    11. //stift bewegen
    12. zeichneHaus();
    13. }
    Display All

    Allerdings solltest du dann aufpassen und den code so ändern, dass du immer um einen bestimmten Betrag bewegst, oder in der Methode den Punkt berechnen. Und dann dahin bewegen.
    Mfg Zwergling

    The post was edited 1 time, last by Zwergling ().

  • Hallo,

    hab den Fehler gefunden. Hatte das Do/while vergessen.

    Trotzdem danke für deine Antwort Zwerg.
    Zum Tipp. Ja ich könnte, aber das ist mir gerade zu viel Arbeit und da wir die Häuser ganz am Anfang schon einmal gebraucht hatten, dachte ich mir kopierste die einfach. ;)

    LG