- import sum.kern.*;
- /**
- * Malprogramm
- *
- * @author (Marcel)
- * @version (1.7 oder 1.9?? keine Ahnung ich bin auf jedednfall fertig...:D) Textfeld, speichern, laden
- */
- public class Freies_malen
- {
- Bildschirm derBildschirm;
- Buntstift meinStift;
- Maus flinkeMaus;
- Tastatur meineTastatur;
- // Konstruktor
- public Freies_malen()
- {
- derBildschirm = new Bildschirm();
- meinStift = new Buntstift();
- flinkeMaus = new Maus();
- meineTastatur = new Tastatur();
- male();
- }
- //----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- // Diense
- // Der Stift wird abgesenkt, wenn eine Maustaste gedrückt ist, sonst wird der Stift angehoben.
- // Ist die Bedingung erfüllt(Maus ist gedrückt), folgt der Stift der Maus und zeichnet dabei logischerweise eine Linie
- // Außerdem wurden Hotkeys hinzugefügt, um leichtere Handhabung und größeren Funktionsumfang bereitzustellen
- public void male()
- {
- meinStift.bewegeBis(flinkeMaus.hPosition(), flinkeMaus.vPosition());
- do
- {
- if (flinkeMaus.istGedrueckt())
- {
- meinStift.bewegeBis(flinkeMaus.hPosition(), flinkeMaus.vPosition());
- meinStift.runter();
- }
- else
- meinStift.hoch();
- if (meineTastatur.wurdeGedrueckt())
- {
- switch (meineTastatur.zeichen())
- {
- case 'r':
- case 'R': meinStift.setzeFarbe(Farbe.ROT); break; // Wenn R/r/B/b/Y/y/G/g, wird die Farbe gewechselt
- case 'b':
- case 'B': meinStift.setzeFarbe(Farbe.BLAU); break;
- case 'y':
- case 'Y': meinStift.setzeFarbe(Farbe.GELB); break;
- case 'g':
- case 'G': meinStift.setzeFarbe(Farbe.GRUEN); break;
- case '1': meinStift.setzeLinienbreite(1); break; // Wenn 1 - 10 gedrückt, wechselt der Stift die Linienbreite
- case '2': meinStift.setzeLinienbreite(2); break;
- case '3': meinStift.setzeLinienbreite(3); break;
- case '4': meinStift.setzeLinienbreite(4); break;
- case '5': meinStift.setzeLinienbreite(5); break;
- case '6': meinStift.setzeLinienbreite(6); break;
- case '7': meinStift.setzeLinienbreite(7); break;
- case '8': meinStift.setzeLinienbreite(8); break;
- case '9': meinStift.setzeLinienbreite(9); break;
- case '0': meinStift.setzeLinienbreite(1000); break;
- case 'l':
- case 'L': meinStift.radiere(); break; // wenn L/l gedrückt, wechselt der Stift in den "Radiermodus"
- case 'n':
- case 'N': meinStift.normal(); break; // wenn N/n gedrückt, wechselt der Stift in den "Normalmodus"
- case 't': meinStift.schreibeText(""); break;
- case 'k':
- case 'K': meinStift.runter(); // Wenn K/k gedrückt dann zeichnet er einen Kreis mit dem Radius 100
- meinStift.zeichneKreis(100);
- meinStift.hoch(); break;
- case 'p':
- case 'P': meinStift.runter(); // Wenn P/p gedrückt dann zeichnet er ein Rechteck mit den Maßen 20, 30
- meinStift.zeichneRechteck(40, 50);
- meinStift.hoch(); break;
- case 'f': meinStift.setzeFuellmuster(1); break; // Fuellmuster wird zu "gefüllt"
- case 'F': meinStift.setzeFuellmuster(0); break; // Fuellmuster wird zu "durchsichtig"
- case 'd':
- case 'D': meinStift.runter(); // wenn D/d gedrückt, dann zeichnet er ein Dreieck
- meinStift.bewegeUm(30);
- meinStift.dreheUm(135);
- meinStift.bewegeUm(60);
- meinStift.dreheUm(90);
- meinStift.bewegeUm(60);
- meinStift.dreheUm(135);
- meinStift.bewegeUm(60);
- meinStift.hoch(); break;
- case 'V':
- case 'v': meinStift.runter(); // Wenn V/v gedrückt, kann man ein Vieleck zeichnen
- meinStift.bewegeBis(flinkeMaus.hPosition(), flinkeMaus.vPosition()); break;
- case '#': derBildschirm.loescheAlles(); break; // Wenn # gedrückt, dann wird der ganze Bildschirm gelöscht
- case 'h':
- case 'H': meinStift.schreibeText("Hilfe:"); // wenn H/h gedrückt, wird Hilfedatei für Hotkeys geöffnet
- meinStift.dreheBis(270);
- meinStift.bewegeUm(35);
- meinStift.dreheBis(180);
- meinStift.bewegeUm(40);
- meinStift.schreibeText("R/r = Rot");
- meinStift.dreheBis(270);
- meinStift.bewegeUm(17);
- meinStift.dreheBis(180);
- meinStift.bewegeUm(50);
- meinStift.schreibeText("G/g = Grün");
- meinStift.dreheBis(270);
- meinStift.bewegeUm(17);
- meinStift.dreheBis(180);
- meinStift.bewegeUm(60);
- meinStift.schreibeText("B/b = Blau");
- meinStift.dreheBis(270);
- meinStift.bewegeUm(17);
- meinStift.dreheBis(180);
- meinStift.bewegeUm(55);
- meinStift.schreibeText("Y/y = Gelb");
- meinStift.dreheBis(270);
- meinStift.bewegeUm(17);
- meinStift.dreheBis(180);
- meinStift.bewegeUm(55);
- meinStift.schreibeText("K/k = Kreis");
- meinStift.dreheBis(270);
- meinStift.bewegeUm(17);
- meinStift.dreheBis(180);
- meinStift.bewegeUm(60);
- meinStift.schreibeText("D/d = Dreieck");
- meinStift.dreheBis(270);
- meinStift.bewegeUm(17);
- meinStift.dreheBis(180);
- meinStift.bewegeUm(75);
- meinStift.schreibeText("V/v = Vieleck");
- meinStift.dreheBis(270);
- meinStift.bewegeUm(17);
- meinStift.dreheBis(180);
- meinStift.bewegeUm(67);
- meinStift.schreibeText("L/l = Radiermodus");
- meinStift.dreheBis(270);
- meinStift.bewegeUm(17);
- meinStift.dreheBis(180);
- meinStift.bewegeUm(101);
- meinStift.schreibeText("N/n = Normalmodus");
- meinStift.dreheBis(270);
- meinStift.bewegeUm(17);
- meinStift.dreheBis(180);
- meinStift.bewegeUm(112);
- meinStift.schreibeText("F = Füllmuster = Gefüllt");
- meinStift.dreheBis(270);
- meinStift.bewegeUm(17);
- meinStift.dreheBis(180);
- meinStift.bewegeUm(127);
- meinStift.schreibeText("f = Füllmuster = Durchsichtig");
- meinStift.dreheBis(270);
- meinStift.bewegeUm(17);
- meinStift.dreheBis(180);
- meinStift.bewegeUm(157);
- meinStift.schreibeText("1-10 = Linienbreite");
- meinStift.dreheBis(270);
- meinStift.bewegeUm(17);
- meinStift.dreheBis(180);
- meinStift.bewegeUm(100);
- meinStift.schreibeText("# = alles löschen");break;
- default : meinStift.setzeFarbe(Farbe.SCHWARZ); break;
- }
- meineTastatur.weiter();
- }
- } while (!flinkeMaus.doppelKlick());
- }
- }