Bluej Sum Häuser Farben ändern

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • 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

    Quellcode

    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. }
    Alles anzeigen
  • 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:

    Quellcode

    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. }
    Alles anzeigen

    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:

    Quellcode

    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. }
    Alles anzeigen

    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

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Zwergling ()