- Wir erstellen ein einfaches Mal-Programm und lernen dabei den Mehrwert von Klassen zu schätzen.
Video-Erklärung
Der Code aus den Videos zum selbst ausprobieren
Button farbButton = new Button("Rot", 1, 0, 0, 100, 50);
int farbe = 1;
int pinselStaerke = 1;
color col = color(255, 0, 0);
Button pinselButton = new Button("Pinsel: " + pinselStaerke, 2, farbButton.getWidth(), 0, 100, 50);
long buttonLastPressed = 0;
void setup() {
size(800, 400);
background(240);
}
void draw() {
// Zeichnen eines Punktes bei gedrückter Maustaste
if (mousePressed) {
strokeWeight(pinselStaerke);
stroke(col);
point(mouseX, mouseY);
}
buttonAuswerten(farbButton.anzeigen());
buttonAuswerten(pinselButton.anzeigen());
}
// Hilfsfunktion, die je Knopfzustand (gedrückt oder nicht) verschiedene Aktionen durchführt
void buttonAuswerten(int b) {
switch(b) {
case -1:
// do nothing
break;
case 1:
// Knopf mit Id #1 ist gedrückt
if (millis() - buttonLastPressed>500) {
println("KNOPF 1 GEDRÜCKT !!");
farbe++;
if (farbe>4) {
farbe = 1;
}
if (farbe==1) {
farbButton.setLabel("Rot");
col = color(255,0,0);
}
if (farbe==2) {
farbButton.setLabel("Grün");
col = color(0,255,0);
}
if (farbe==3) {
farbButton.setLabel("Gelb");
col = color(255,255,0);
}
if (farbe==4) {
farbButton.setLabel("Radierer");
col = color(240);
}
buttonLastPressed = millis();
}
break;
case 2:
if (millis() - buttonLastPressed>500) {
println("KNOPF 2 GEDRÜCKT !!");
pinselStaerke++;
if (pinselStaerke > 9) {
pinselStaerke = 1;
}
pinselButton.setLabel("Pinsel: "+ pinselStaerke);
buttonLastPressed = millis();
}
break;
}
}
// Die Klasse Button
class Button {
// Klassenvariablen
String label;
int id;
int xPos, yPos, width_, height_;
// Constructor
Button(String l, int id_, int x, int y, int w, int h) {
label = l;
id = id_;
xPos = x;
yPos = y;
width_ = w;
height_ = h;
}
// Zeigt den Knopf am Canvas an
// Gibt -1 zurück, wenn der Knopf nicht gedrückt ist
// Gibt die Id des Knopfes zurück, wenn er gedrückt ist
int anzeigen() {
int r = -1;
if ((mouseX>=xPos) && (mouseX<=xPos+width_) && (mouseY>=yPos) && (mouseY<=yPos+height_)) {
stroke(204,102,0);
fill(255);
if (mousePressed) {
fill(120);
r = id;
}
} else {
stroke(0,0,0);
fill(255);
}
//fill(255);
strokeWeight(1);
rect(xPos, yPos, width_, height_);
fill(0);
textAlign(CENTER, CENTER);
text(label, xPos+width_/2, yPos+height_/2);
return r;
}
int getWidth() {
return width_;
}
int getHeight() {
return height_;
}
void setLabel(String l) {
label = l;
}
}