2023-09-25 18:56:08 +02:00

136 lines
3.5 KiB
Plaintext

/*
----Lokale Variablen----
1. Wie lange ist eine Variable gültig, die innerhalb einer Funktion deklariert wurde?
- bis zum Ende des Programms
- bis zum Ende des nächsten Durchlaufs der draw-Funktion
X bis zum Ende der Funktion
2. Wie wird der Bereich bezeichnet, in dem eine Variable gültig ist und verwendet werden kann?
Scope
3. Was genau passiert, wenn sich zwei Variablen überschatten? Worauf muss man achten, wenn man Überschattung vermeiden möchte?
Bei "variable shadowing" wird der Wert einer globalen Variable im Scope der Funktion der lokalen Variable "überschattet".
Wenn man vorher also eine globale Variable (x = 5) setzt, diese in der Funktion setX() als lokale Variable neu Deklariert und Initialisiert (x = 3) ,
Überschattet der Wert der Lokalen Variable (x = 3) für dessen Scope die globale Variable. Geht die lokale Variable "out of scope", dann
gilt wieder der Wert der globalen Variable.
Um dies zu verhindern sollte man nie den selben Namen für eine Variable verwenden und bei Zuweisungen darauf achten keinen Datentyp dem
Namen voranzusetzen.
*/
// Aufgabe 1
void zwillinge()
{
// Clear Background to prevent shadows
background(40, 40, 40, 256);
//First circle
fill(0, 50, 256);
circle(mouseX, mouseY, 100);
// Second circle
// project mouse pos between 0 and 1. Take inverse to get the point symmetric postion
PVector fitMouse = new PVector((float) mouseX / (float) width, (float) mouseY / (float) height);
PVector twinPos = new PVector((1.0f - fitMouse.x) * width, (1.0f - fitMouse.y) * height);
fill(256, 50, 0);
circle(twinPos.x, twinPos.y, 100);
//println(fitMouseX + ", " + inverseMouseX );
}
void drillinge()
{
// Clear Background to prevent shadows
background(40, 40, 40, 256);
line(0, 0, mouseX, mouseY);
circle(mouseX, mouseY, 10);
circle(mouseX * .5, mouseY * .5, 10);
}
/*
----Systemvariablen----
1. Was sind Systemvariablen?
Systemvariablen sind variablen die bereitgestellt werden um diese zu verwenden. Beispielsweise die Mausposition oder die Fenstergröße
2. Was passiert, wenn du eine Variable anlegst, die den selben Namen wie eine Systemvariable hat? Tip: Probiere es mal aus ...
Die Systemvariable wird von dem selbst gesetzten Wert überschrieben.
3. Welche 2 Dinge sollte man im Bezug auf Systemvariablen niemals machen? Warum?
- Den Systemvariablen einen neuen Wert zuweisen
- Eigenen Variablen den selben Namen geben
*/
void zeichenTicker()
{
// Clear Background to prevent shadows
background(40, 40, 40, 256);
textSize(50);
text(key, width / 2, height / 2);
}
void mitte()
{
// Beim übertragen richtige Fenstergröße (111 x 77) in die main (setup) Methode eintragen und surface.setResizable(true) setzen
background(40, 40, 40, 256);
circle(width/2, height/2,50);
}
float second;
float offset = 0;
void zähler()
{
background(40, 40, 40, 256);
//fill(0,0,0,1);
second = constrain(((float) frameCount / (float) frameRate) - offset, 0 , 1000);
if(mousePressed == true)
{
offset = second + offset ;
}
println(offset + " " + mousePressed);
textSize(50);
text(second, width / 2 -50, height/2);
}
void setup()
{
size(800, 600);
frameRate(144);
//surface.setResizable(true);
}
void draw()
{
// ----lokale Variablen----
zwillinge();
// drillinge();
// ----Systemvariablen----
// zeichenTicker();
// mitte();
// zähler();
}