====== Grafik - Einstiegsprojekt: Malprogramm ====== In diesem Projekt erstellst du ein Malprogramm im Stil des Klassikers “Paint”. Im Laufe des Projekts implementierst du immer neue Funktionen und sogar ein kleines Benutzerinterface! Zunächst wollen wir erreichen, dass das Objekt - der Stift - dem Mauszeiger folgt, und das idealerweise ständig. Ziehe die folgende Anordnung ins Programmierfenster und klicke drauf. {{ :faecher:informatik:snap:algoritmen_mit_snap:grafik:malprogramm:001.png?300 |}} Leider läuft das Programm in dieser Form nur dann, wenn wir das soeben gebaute Skript mit der Maus anklicken. Das ist etwas unpraktisch; wir möchten, dass es immer läuft, sobald der Startknopf gedrückt wird. Dazu brauchen wir einen Block aus der Control-Kategorie. {{ :faecher:informatik:snap:algoritmen_mit_snap:grafik:malprogramm:01.png?300 |}} Erweitere dein Skript nun so, dass der Stift malt, wenn die Maustaste gedrückt ist und nicht malt, wenn die Maustaste nicht gedrückt ist! Die folgenden Blöcke helfen dabei: {{ :faecher:informatik:snap:algoritmen_mit_snap:grafik:malprogramm:2024-10-24_17-20.png |}} Du solltest nur kleine Striche sehen, **immer dann, wenn du die Maustaste drückst**. Das liegt daran, dass sich dein Objekt **unter dem gedrückten Mauszeiger** befindet und du es damit automatisch von der Bühne hochhebst. Das kannst du verhindern, indem du das Häkchen bei "draggable" unter dem Namen des Objekts entfernst: {{ :faecher:informatik:snap:algoritmen_mit_snap:grafik:malprogramm:03.png?400 |}} Nun kannst du mit deinem Mauszeiger malen - aber einige grundlegende Funktionalitäten fehlen noch. Beispielsweise wäre es sinnvoll, einen Knopf zu programmieren, der die Bühne “wischt”. Außerdem wäre es sehr hilfreich, Knöpfe zu programmieren, mit denen die Stiftgröße eingestellt werden kann. Um einen Knopf zu erstellen, der alles Gemalte “wegradiert”, erstellen wir zunächst ein neues Objekt. Da es ein Knopf sein soll, wählen wir die rechte Option (“paint a new sprite”). {{ :faecher:informatik:snap:algoritmen_mit_snap:grafik:malprogramm:04.png?200 |}} Bist du mit deinem Knopf zufrieden, klickst du auf “OK” und schiebst ihn an den Rand der Bühne, damit er so wenig von der Malfläche verdeckt wie möglich. Der soeben erstellte Knopf soll wischen, sobald er angeklickt wird. Kombiniere die beiden dazu nötigen Blöcke zu einem Skript. Teste deinen Knopf! Um die Stiftdicke zu steuern, benötigen wir eine neue Variable. Lege eine neue Variable an und gib ihr einen sprechenden Namen, z.B. {{:faecher:informatik:snap:algoritmen_mit_snap:grafik:malprogramm:breite.png?100|}} Außerdem brauchen wir einen neuen Knopf. Dieser soll die Variable Stiftdicke um 1 erhöhen, sobald er angeklickt wird. Damit die Stiftdicke des Malstifts nun entsprechend angepasst wird, müssen wir dem “Maler” die Änderung kommunizieren. Das funktioniert mithilfe von Nachrichten: {{:faecher:informatik:snap:algoritmen_mit_snap:grafik:malprogramm:broadcast.png?200|}} Dieser Block verschickt eine Nachricht deiner Wahl an alle Objekte im Projekt. Ob und wie die Objekte auf diese Nachricht reagieren, musst du später für jedes Objekt einzeln festlegen. Verändere den Code des Knopfes so, dass er eine Nachricht über die Änderung der Stiftgröße verschickt, sobald er angeklickt wird. Wichtig: mit diesem Schritt wird die Nachricht nur verschickt - das Maler-Objekt muss auf die Nachricht auch noch reagieren, nämlich mit einer Änderung der Stiftgröße auf die Variable, die das Knopf-Objekt gerade eben geändert hat. Füge einen zweiten Knopf hinzu, der die Stiftdicke verringert! {{:faecher:informatik:snap:algoritmen_mit_snap:grafik:malprogramm:2024-10-24_20-17.png?400|}} Wenn du magst, kannst du dein Malprogramm noch um eine Möglichkeit erweitern, die Farbe des Stifts festzulegen. ((Material von https://computingeducation.de/algorithmen-mit-snap/ [[https://creativecommons.org/licenses/by-sa/4.0/deed.de|CC-BY Lizenz]] Jadga Hügle und Sven Jatzlau. ))